全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1170
推到 Plurk!
推到 Facebook!

這段code是在說什麼呢有關記憶配置

尚未結案
pricejit2
一般會員


發表:53
回覆:18
積分:14
註冊:2005-01-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-04 12:51:20 IP:220.130.xxx.xxx 未訂閱
實在看不懂 如何設定一個值到所想要的記憶體位址呢? unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const WM_HOOKED = WM_USER 3221; type TThreadProVarList = record //定義TThreadProVarList為一筆紀錄 SendMessage: DWORD; ExitProcess: DWORD; ExitThread: DWORD; WndHandle: DWORD; end; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private ThreadAdd: Pointer; PID, PHandle: DWORD; ThreadHandle, ThreadID: Thandle; procedure WMHOOKED(var Msg: TMessage);message WM_HOOKED; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation procedure ThreadPro; var VarList: TThreadProVarList; begin asm mov eax,$FFFFFFFF //32位元暫存器 mov VarList.SendMessage,eax mov eax, $FFFFFFFF mov VarList.WndHandle, eax mov eax, $FFFFFFFF mov VarList.ExitProcess, eax mov eax, $FFFFFFFF mov VarList.ExitThread, eax push 0 //進記憶體堆疊 push 0 push 4245 push VarList.WndHandle //把 call VarList.SendMessage push 0 call VarList.ExitThread end; end; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var WndHandle, TmpHandle: THandle; DllModule, SendPro, WriteCount: DWORD; ExitPro, ExitTPro: DWORD; begin WndHandle := FindWindow(nil, '暮岈挂'); GetWindowThreadProcessId(WndHandle, PID); PHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID); ThreadAdd := VirtualAllocEx(PHandle, nil, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE); WriteProcessMemory(PHandle, ThreadAdd, @ThreadPro, 4096, WriteCount); ThreadHandle := CreateRemoteThread(PHandle, nil, 0, ThreadAdd, nil, CREATE_SUSPENDED, ThreadID); DllModule := LoadLibrary('User32.dll'); SendPro := DWORD(GetProcAddress(DllModule, 'SendMessageW')); DllModule := LoadLibrary('Kernel32.dll'); ExitPro := DWORD(GetProcAddress(DllModule, 'ExitProcess')); ExitTPro := DWORD(GetProcAddress(DllModule, 'ExitThread')); TmpHandle := Self.Handle; WriteProcessMemory(PHandle, Pointer(LongInt(ThreadAdd) 7), @SendPro, SizeOf(DWORD), WriteCount); WriteProcessMemory(PHandle, Pointer(LongInt(ThreadAdd) 15), @TmpHandle, SizeOf(DWORD), WriteCount); WriteProcessMemory(PHandle, Pointer(LongInt(ThreadAdd) 23), @ExitPro, SizeOf(DWORD), WriteCount); WriteProcessMemory(PHandle, Pointer(LongInt(ThreadAdd) 31), @ExitTPro, SizeOf(DWORD), WriteCount); ResumeThread(ThreadHandle); CloseHandle(ThreadHandle); end; procedure TForm1.Button2Click(Sender: TObject); begin VirtualFreeEx(PHandle, ThreadAdd, 4096, MEM_DECOMMIT); CloseHandle(PHandle); end; procedure TForm1.WMHOOKED(var Msg: TMessage); begin MessageBox(self.Handle, '膘蕾堈?盄最?髡', '!!!', MB_OK); end; end.
系統時間:2024-05-03 11:42:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!