亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

防止全局hook入侵Delphi版,2000以上系統適用(part2)

2019-11-18 18:03:55
字體:
來源:轉載
供稿:網友
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Button2: TButton; Button3: TButton; PRocedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } procedure ShowMsg(s: string); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses MLDE32Unit; const DesPath = 'C:/Program Files/Borland/Delphi6/Projects/Adv APIHOOK/Test/vt.exe'; Func2Hook = 'FreeLibrary'; var //must be a globle variable PtrReal: Pointer; cbStolen: Cardinal; NtDllBase, NtDllLength: integer; p: pointer; h:dWord; procedure TForm1.ShowMsg(s: string); begin Memo1.Lines.Add(s); end; procedure TForm1.Button1Click(Sender: TObject); label FakeCode, RtnCode; var // si: STARTUPINFO; // pi: PROCESS_INFORMATION; OriginalBytes: Array [0..4] of Char; HookJmp: PChar; Rtn: Cardinal; Bytes: Array [0..4] of Char; tmp: Cardinal; peb, ldr, flink: pointer; bs: DWORD; begin PtrReal := nil; NtDllLength := 0; NtDllBase := GetModuleHandle('ntdll.dll'); asm mov eax,fs:[$30] mov peb,eax end; ldr := pointer(dword(pointer(dword(peb)+12)^)); flink := pointer(dword(pointer(dword(ldr)+12)^)); p := flink; repeat bs := DWORD(pointer(dword(p)+$18)^); if bs = NtDllBase then begin NtDllLength := DWORD(pointer(dword(p)+$20)^); break; end; p := pointer(dword(p^)); until dword(flink) = dword(p^); if NtDllLength = 0 then ShowMsg('Can''t get ntdll.dll image size!'); { ShowMsg('Creating suspended process ...'); ZeroMemory(@si, sizeof(STARTUPINFO)); si.cb := sizeof(STARTUPINFO); CreateProcess(DesPath, nil, nil, nil, False, CREATE_SUSPENDED, nil, nil, si, pi); } ShowMsg('Preparing HOOK ' + Func2Hook + ' ...'); PtrReal := GetProcAddress(GetModuleHandle('Kernel32.dll'), Func2Hook); if Assigned(PtrReal) then ShowMsg('Real ' + Func2Hook + ' Addr: ' + inttohex(DWORD(PtrReal), 8)) else begin ShowMsg(' Addr: ' + Func2Hook + ' is unreadable! Exit!'); // ResumeThread(pi.hThread); Exit; end; ReadProcessMemory(GetCurrentProcess, PtrReal, @Bytes, 5, Rtn); // ReadProcessMemory(pi.hProcess, PtrReal, @Bytes, 5, Rtn); if Bytes[0] <> Chr($E9) then begin CopyMemory(@OriginalBytes, @Bytes, 5); ShowMsg(Func2Hook + ' havn''t been hooked!'); end else begin ShowMsg(Func2Hook + ' have been hooked! Exit!'); // ResumeThread(pi.hThread); exit; end; cbStolen :=0; while cbStolen < 5 do cbStolen := cbStolen + LDE32(Pointer(DWORD(PtrReal) + cbStolen)); ShowMsg('Let''s steal the first ' + inttostr(cbStolen) + ' bytes :)'); ShowMsg('But make it writable first ...'); if VirtualProtect(PtrReal ,cbStolen , PAGE_EXECUTE_READWRITE, @tmp) then ShowMsg('Make ' + inttohex(DWORD(PtrReal), 8) + ' writable succeed!') else begin ShowMsg('Hoops! Make ' + inttohex(DWORD(PtrReal), 8) + ' writable failed! Exit!!'); // ResumeThread(pi.hThread); exit; end; ShowMsg('Assemble Jmp codes & hook ' + Func2Hook + '...'); GetMem(HookJmp, 5); try HookJmp[0] := Chr($E9); asm push eax lea eax, FakeCode mov tmp, eax pop eax end; tmp := tmp - DWORD(PtrReal) - 5; CopyMemory(@HookJmp[1], @tmp, 4); asm push eax lea eax, RtnCode mov tmp, eax pop eax end; VirtualProtect(Pointer(tmp) ,cbStolen , PAGE_EXECUTE_READWRITE, @Rtn); CopyMemory(Pointer(tmp), PtrReal, cbStolen); WriteProcessMemory(GetCurrentProcess, PtrReal, HookJmp, 5, Rtn); // WriteProcessMemory(pi.hProcess, PtrReal, HookJmp, 5, Rtn); ShowMsg('Hook ' + Func2Hook + ' succeed! Resume thread!'); finally Freemem(HookJmp); // ResumeThread(pi.hThread); end; exit; FakeCode: //No strings from here on asm int 3 end; asm push eax lea eax, [esp+4] mov p, eax pop eax end; if dword(p^) - ntdllbase < NtDllLength then asm pop p pop eax pop eax pop eax mov eax, 0 jmp p // push p // ret end; //messagebox(0,pchar(p),'',0); RtnCode: asm nop nop nop nop nop nop nop nop nop nop nop nop nop mov eax, PtrReal add eax, cbStolen jmp eax end; end; var Ptr, ppp: Pointer; procedure TForm1.Button2Click(Sender: TObject); begin {asm call ppp; end; exit; } Button3Click(nil); Ptr := VirtualAlloc(nil, 1024, MEM_COMMIT, PAGE_EXECUTE_READWRITE); if not Assigned(Ptr) then Memo1.Lines.Add('Fatal Error: VirtualAlloc failed!') else Memo1.Lines.Add('VirtualAlloc succeed! Ptr = ' + inttohex(DWORD(Ptr), 8)); end; procedure TForm1.FormDestroy(Sender: TObject); begin Button3Click(nil); UnmapViewOfFile(ppp); CloseHandle(h); end; procedure TForm1.Button3Click(Sender: TObject); begin if Assigned(Ptr) then VirtualFree(Ptr, 0, MEM_RELEASE); end; procedure TForm1.FormCreate(Sender: TObject); begin h := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE or SEC_COMMIT, 0, 1, 'pe'); ppp := MapViewOfFile(h,FILE_MAP_ALL_access,0,0,0); caption := inttohex(dword(ppp),8); char(ppp^) := Chr($C3); end; end. ====== Unit1里有很多垃圾代碼,因為這個防hook的程序只是一個副產品。有用代碼寫成dll注入其他進程就可以防hook了,已經試過沒問題。代碼風格比較差,不過不知道怎么改的更好(如將FakeCode部分放到單獨過程中)。如果你改好了希望能發給我一份。 MLDE32Unit代碼來自29A第七期,作者忘記了,不好意思。

上一篇:防止全局hook入侵Delphi版,2000以上系統適用(part3)

下一篇:Delphi中實現漢字拼音聲母查詢

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91精品视频在线观看| 中文字幕欧美日韩| 亚洲免费伊人电影在线观看av| 3344国产精品免费看| 97国产成人精品视频| 国产有码一区二区| 国产精品影片在线观看| 国内精久久久久久久久久人| 日韩av免费在线| 国产成人精品电影久久久| 尤物九九久久国产精品的分类| 欧美精品久久久久久久久久| 亚洲欧美综合图区| 国产色婷婷国产综合在线理论片a| 亚洲免费电影一区| 日韩av免费看网站| 精品国产一区久久久| 欧洲s码亚洲m码精品一区| 日韩视频欧美视频| 欧美性极品少妇精品网站| 国产97在线播放| 日韩a**站在线观看| 亚洲精品永久免费| 久久久精品在线观看| 在线播放国产精品| 亚洲欧美国产精品专区久久| 久久亚洲春色中文字幕| 国产在线精品自拍| 亚洲在线免费观看| 4438全国亚洲精品在线观看视频| 亚洲国产97在线精品一区| 欧美精品激情在线观看| 久久久中精品2020中文| 日韩av在线网址| 国产亚洲精品91在线| 久久免费精品日本久久中文字幕| 国产欧美一区二区三区久久人妖| 91亚洲午夜在线| 久久精品电影网站| 欧美影院在线播放| 色婷婷久久一区二区| 九九精品视频在线| 日韩欧美国产免费播放| 国产在线观看91精品一区| 久久精品亚洲精品| 亚洲www在线| 欧美香蕉大胸在线视频观看| 91在线观看免费高清完整版在线观看| 日韩有码在线播放| 欧美国产日韩中文字幕在线| 欧美wwwxxxx| 国产不卡一区二区在线播放| 国产精品丝袜视频| 免费成人高清视频| 国产精品一区=区| 色一情一乱一区二区| 欧美激情一区二区三区久久久| 国产一区在线播放| 亚洲欧美中文日韩v在线观看| 久久国产精品网站| 国内成人精品一区| 久久艹在线视频| 国产美女被下药99| 欧美成年人在线观看| 欧美激情精品久久久久久大尺度| 国产欧美在线视频| 亚洲在线视频福利| 日本成人黄色片| 欧美专区福利在线| 久久国产色av| 国产精品久久久久久中文字| 久久精品国产电影| 久久精品亚洲国产| 久久久久亚洲精品国产| 国产精品视频久| 在线视频欧美性高潮| 欧美精品中文字幕一区| 最新国产精品拍自在线播放| 久久亚洲精品小早川怜子66| 亚洲性猛交xxxxwww| 亚洲国产精品悠悠久久琪琪| 国产美女主播一区| 日韩电视剧在线观看免费网站| 成人免费观看49www在线观看| 成人黄色av播放免费| 成人免费视频97| 国产成人中文字幕| 欧美天堂在线观看| 97色在线观看| 中文字幕久热精品在线视频| 久久久久这里只有精品| 欧美成人精品h版在线观看| 一区二区三区黄色| 久久国产色av| 国产免费一区二区三区香蕉精| 91久久国产综合久久91精品网站| 亚洲精品久久久久久久久久久| 亚洲欧洲一区二区三区在线观看| 久久国产视频网站| 国产女精品视频网站免费| 色先锋久久影院av| 欧美综合第一页| 国产一区二区三区在线观看网站| 欧美日韩加勒比精品一区| 欧美自拍大量在线观看| 成人黄色片网站| 亚洲国产精品一区二区三区| 成人亚洲综合色就1024| 亚洲精品国产精品乱码不99按摩| 日韩av日韩在线观看| 91九色在线视频| 富二代精品短视频| 国产噜噜噜噜噜久久久久久久久| 成人免费午夜电影| 国产精品黄色影片导航在线观看| 亚洲图中文字幕| 日韩极品精品视频免费观看| 亚洲视频精品在线| 中文字幕在线看视频国产欧美在线看完整| 亚洲高清免费观看高清完整版| 91大神在线播放精品| 亚洲变态欧美另类捆绑| 国产成人精品午夜| 在线精品国产成人综合| 孩xxxx性bbbb欧美| 国产精品免费网站| 中文字幕精品在线视频| 黑人与娇小精品av专区| 亚洲国产91色在线| 亚洲欧美国产一本综合首页| 国产精品天天狠天天看| 成人妇女免费播放久久久| 久久精品99久久久香蕉| 亚洲深夜福利视频| 欧美性xxxx极品hd欧美风情| 在线观看成人黄色| 午夜精品一区二区三区视频免费看| 欧美大成色www永久网站婷| 国产日韩在线亚洲字幕中文| 日韩精品视频免费| 国产精品久久综合av爱欲tv| 欧美日韩中文字幕综合视频| 欧美黑人性生活视频| 在线亚洲男人天堂| 欧美专区在线播放| 热久久这里只有| 国产精品久久久久久五月尺| 91精品在线观看视频| 国产精品免费小视频| 国产精品综合久久久| 国产日产欧美精品| 国模极品一区二区三区| 亚洲一二在线观看| 精品国产乱码久久久久久天美| 狠狠躁夜夜躁人人爽天天天天97| 岛国av午夜精品| 欧美激情在线狂野欧美精品| 插插插亚洲综合网| 亚洲欧美国产高清va在线播| 国产精品99久久久久久白浆小说| 亚洲精品视频二区| 国产在线观看91精品一区| 欧美日韩亚洲国产一区| 久久精品国产免费观看|