技術交流,dh講解.
在sysutils.pas有幾個函式,以前我也沒有看見過,今天看原始碼的時候無意間發現了.
function gdal: longword;type
tdvclal = array[0..3] of longword;
pdvclal = ^tdvclal;
var p: pointer;
a1, a2: longword;
pal1s, pal2s: pdvclal;
alok: boolean;
begin
p := alr;//從資源檔案獲得
if p <> nil
then
begin
a1 := al1(p^);
a2 := al2(p^);
result := a1;
pal1s := @al1s;
pal2s := @al2s;
alok := ((a1 = pal1s[0]) and (a2 = pal2s[0])) or
((a1 = pal1s[1]) and (a2 = pal2s[1])) or
((a1 = pal1s[2]) and (a2 = pal2s[2]));
freeresource(integer(p));
ifend
else result := al1s[3];
end;
這個函式全稱get delphi access licences,這個函式去讀取資源裡面的訪問許可,如果不合法就丟擲異常,如果合法就返回解密後的al1。裡面用到的兩個函式:
constal1s: array[0..3] of longword = ($fffffff0, $ffffebf0, 0, $ffffffff);
al2s: array[0..3] of longword = ($42c3ecef, $20f7aeb6, $d1c2f74e, $3f6574de);
procedure alv;
begin
raise exception.createres(@snl);
end;
function alr: pointer;
var libmodule: plibmodule;
begin
if maininstance <> 0 then
result := pointer(loadresource(maininstance, findresource(maininstance, 'dvclal',
rt_rcdata)))
else
begin
result := nil;
libmodule := libmodulelist;//這裡是乙個鍊錶,其實想學習鍊錶的朋友可以來看看
while libmodule <> nil
do//遍歷鍊錶
begin
with libmodule^ do
begin
result := pointer(loadresource(instance, findresource(instance, 'dvclal',
rt_rcdata)));
if result <> nil
then break;
end;
libmodule := libmodule.next;
end;
end;
end;
緊接著下面有個函式用到gdal了,也就是gdal沒有直接被用到:
procedure rcs;var p: pointer;
alok: boolean;
begin
p := alr;
if p <> nil
then
begin
alok := (al1(p^) = al1s[2]) and (al2(p^) = al2s[2]);
freeresource(integer(p));
endelse
alok := false;
ifnot alok then
alv;
end;
procedure rpr;
var al: longword;
begin
al := gdal;
if (al <> al1s[1]) and (al <> al1s[2]) then
alv;
end;
函式rcs:檢查是否有合法的delphi client server許可,不合法就異常.
函式rpr:檢查是否有合法的delphi pro 許可,不合法就異常.
從上面看,這兩個函式我們平時基本用不著了,也是,這兩個函式在自帶的vcl裡面有.有興趣的朋友可以自己看一下.
ok
不知道不知道
函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...
不知道不知道
函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...
你所不知道的main()函式
我通常會把main函式定義成 void main 雖然這在vc等編譯器裡也能通過,但是這個是不對的。c 之父 bjarne stroustrup 在他的主頁上的 faq 中明確地寫著 the definition void main is not and never has been c nor h...