先谢过了....
long dwID;
long dwSysID;
long dwAddress;
long dwWAddress;
ReadProcessMemory(g_hProcess, (LPCVOID)BASEADDR, &dwAddress, 4, 0);
ReadProcessMemory(g_hProcess, (LPCVOID)(dwAddress+0x8), &dwAddress, 4, 0);
ReadProcessMemory(g_hProcess, (LPCVOID)(dwAddress+0x24), &dwAddress, 4, 0);
ReadProcessMemory(g_hProcess, (LPCVOID)(dwAddress+0x18), &dwAddress, 4, 0);
for(int i = 0; i <= 768; i++)
{
ReadProcessMemory(g_hProcess, (LPCVOID)(dwAddress+0x4*i), &dwWAddress, 4, 0);
if(dwWAddress > 0)
{
ReadProcessMemory(g_hProcess, (LPCVOID)(dwWAddress+0x4), &dwWAddress, 4, 0);
ReadProcessMemory(g_hProcess, (LPCVOID)(dwWAddress+0x110), &dwID, 4, 0);
ReadProcessMemory(g_hProcess, (LPCVOID)(dwWAddress+0x10c), &dwSysID, 4, 0);
CString str;
str.Format("%x:%x", dwID, dwSysID);
MessageBox(NULL, str, "", MB_OK);
__asm
{
pushad
mov ecx, dword ptr [CALLBASE]
mov edx, dwID
mov eax, dwSysID
push edx
mov ecx, dword ptr [ecx+0x20]
push eax
add ecx, 0xd4
mov ebx, CALL_PICK //程序到此好像就没有跳出来 为什么不解中....
call ebx
popad
}
Sleep(100);
}
}
以上是我写挂自动拾取的代码. __asm块 独立使用CreateRemoteThread就可以正确执行
long dwID;
long dwSysID;
long dwAddress;
long dwWAddress;
ReadProcessMemory(g_hProcess, (LPCVOID)BASEADDR, &dwAddress, 4, 0);
ReadProcessMemory(g_hProcess, (LPCVOID)(dwAddress+0x8), &dwAddress, 4, 0);
ReadProcessMemory(g_hProcess, (LPCVOID)(dwAddress+0x24), &dwAddress, 4, 0);
ReadProcessMemory(g_hProcess, (LPCVOID)(dwAddress+0x18), &dwAddress, 4, 0);
for(int i = 0; i <= 768; i++)
{
ReadProcessMemory(g_hProcess, (LPCVOID)(dwAddress+0x4*i), &dwWAddress, 4, 0);
if(dwWAddress > 0)
{
ReadProcessMemory(g_hProcess, (LPCVOID)(dwWAddress+0x4), &dwWAddress, 4, 0);
ReadProcessMemory(g_hProcess, (LPCVOID)(dwWAddress+0x110), &dwID, 4, 0);
ReadProcessMemory(g_hProcess, (LPCVOID)(dwWAddress+0x10c), &dwSysID, 4, 0);
CString str;
str.Format("%x:%x", dwID, dwSysID);
MessageBox(NULL, str, "", MB_OK);
__asm
{
pushad
mov ecx, dword ptr [CALLBASE]
mov edx, dwID
mov eax, dwSysID
push edx
mov ecx, dword ptr [ecx+0x20]
push eax
add ecx, 0xd4
mov ebx, CALL_PICK //程序到此好像就没有跳出来 为什么不解中....
call ebx
popad
}
Sleep(100);
}
}
以上是我写挂自动拾取的代码. __asm块 独立使用CreateRemoteThread就可以正确执行
注入到目标进程后才能正确执行。
我利用HOOK将Dll映射到目标进程中
我的 攻击Call 打坐Call (无参) 可以正确执行
声明: dwID dwSysID 参数正确
mov ecx, dword ptr [ecx]
你这样改看看。。