我試圖在運行時和遠程啓動駐留在另一個程序中的函數。遠程調用函數設置EAX和ECX
使用ollydbg我得到了函數地址和即時通訊使用CreateRemoteThread來啓動這個函數,它實際上運行這個函數,但它收回兩個參數,沒有這些參數程序崩潰。
的問題是,這種機能的研究得到的參數/從EAX和ECX參數都推到這個功能,它被稱爲前(這兩個值是去從1到576這兩個矩陣coordenates ~~)
Createremotethread沒有爲inseting參數工作,我試圖使用結構使用多個(2)參數,但寄存器的值不會改變。
我該如何通過從另一個不同的程序啓動並設置這兩個寄存器來使其他程序運行此功能?
這就是我所說的線程0x01003084
struct tagRemoteThreadParams //didnt worked
{
int Param1;
int Param2;
} RemoteThreadParams, *PRemoteThreadParams;
RemoteThreadParams.Param1 = 0x00000001;//didnt worked
RemoteThreadParams.Param2 = 0x00000001;//didnt worked
int address=0x010038B1; // 0x01003084 -- 0x01002FE0 -- 0x01003512 //Some addresses
RedrawWindow(Find,NULL,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_INTERNALPAINT|RDW_FRAME); //my program stuff
DWORD rc;
//this is where i call the function
CreateRemoteThread(hProcess,NULL,NULL,(LPTHREAD_START_ROUTINE)address,&RemoteThreadParams,0,&rc);
rc = WaitForSingleObject(hProcess, 30000);
CloseHandle(hProcess);
VirtualFreeEx(hProcess, (LPVOID)address, 0, MEM_RELEASE | MEM_DECOMMIT);
記住,我不希望使用DLL注入到執行該功能具有代碼(這不是什麼即時搜索),我實際上只想用一個代碼來做這件事。 謝謝。
直接處理寄存器是OS /目標特定?您是否錯過了指定縮小的標籤? – 2014-11-06 20:24:01
這是在Windows,IA32 – Ollegn 2014-11-06 20:31:02
許多編譯器允許在C/C++代碼中嵌入彙編指令,但不同編譯器之間的語法差別很大。你使用什麼編譯器?你有沒有閱讀過文檔? – Paulo1205 2014-11-06 21:08:55