http://www.delphi2007.net/DelphiAPI/html/delphi_20061207182656107.html
我現在掌握了不用dll也能程式碼注入的技術
就是有一個inject函式 把要插入程式的控制程式碼和要插入的函式名前加一個"@"
當作引數傳遞過去就行了,如下:
procedure Inject(ProcessHandle: longword; EntryPoint: pointer);
本來是很好用的
但是我這裡有一份帶窗體的程式的程式碼 想讓它插到某個pid裡
原來的dpr檔案是這樣的:
program server;
uses
Forms,
mainserve in 'mainserve.pas' {ServerForm};
begin
Application.Initialize;
Application.CreateForm(TServerForm, ServerForm);
Application.Run;
end.
我改成了:
program server;
uses
Forms,windows,
mainserve in 'mainserve.pas' {ServerForm};
procedure main();
begin
Application.Initialize;
Application.CreateForm(TServerForm, ServerForm);
Application.Run;
end;
var
ProcessHandle, PID: longword;
begin
PID:=1252;//當前我執行的某個IE的PID
ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);//開啟程式
Inject(ProcessHandle, @Main);//插入程式碼
CloseHandle(ProcessHandle);//關閉執行緒控制程式碼
end.
那個mainserve.pas沒作改動
編譯沒錯 一執行就出錯說 某個記憶體引用的某個記憶體不能為writen 結果IE就關了
我的改動並沒錯呀??
我懷疑這個錯誤和程式裡有窗體有關 但是用到了timer 是不是就不能去掉窗體??
我的懷疑正確嗎????
說明一下 我修改時已把inject的定義加上了 只是上面的程式碼沒體現出來
不用DLL 注入 的方法我也想知道哦..
aphex的不用DLL遠端注入是
GetWindowThreadProcessId(FindWindow('Shell_TrayWnd', nil), @Pid);
//獲取Exp程式的PID碼,Shell_TrayWnd為類名,相關的需用SPY++來檢視
ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, Pid); //開啟程式
hModule := Pointer(GetModuleHandle(nil));
//這裡得到的值為一個返回一個指標型變數,指向內容包括自身映像的基址和長度
Extent := PImageOptionalHeader(Pointer(integer(hModule) + PImageDosHeader(hModule)._lfanew + SizeOf(dword) + SizeOf(TImageFileHeader))).SizeOfImage;
//得到記憶體映像的長度
VirtualFreeEx(ProcessHandle, hModule, 0, MEM_RELEASE);
//在Exp程式的記憶體範圍內分配一個足夠長度的記憶體
hModule_News := VirtualAllocEx(ProcessHandle, hModule, Extent, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
//確定起始基址和記憶體映像基址的位置
WriteProcessMemory(ProcessHandle, hModule_News, hModule, Extent, Size);
//確定上面各項資料後,這裡開始進行操作
CreateRemoteThread(ProcessHandle, nil, 0, @Download, hModule, 0, ThreadId);
//建立遠端執行緒,至此注入過程完成
CloseHandle(ProcessHandle);
偶把我的程式定義成個過程 然後用他這樣的方法去注入. 結果跟LX一樣...
高手詳細說下吧..
樓上的是同道中人
實際上我們插入一個小過程可以成功 哪怕這個過程呼叫其它自定義的過程
但是把一個程式的原始碼裡dpr檔案裡的主程式定義為過程 再插入這個過程就會報錯
因為什麼??
請高手現身
關注
請高手獻身
請高手獻身
人工置頂
還沒有人來麼?
我現在也有段程式碼 他定義的過程注入沒問題..我自己寫個過程 注入都出錯. 鬱悶
人工置頂
人工置頂