LPVOID callbase888;//全局变量存放代码注入时申请的空间地址
void hanhuacall( )
{
long hhc_address=0x0040B381;
long hhc_content=0x03611099;
long hhc_channel=5;
_asm
{
pushad
push hhc_content
//问题1:如果将这个hhc_content改成全局的callbase888就注入失败
//问题2:或把hhc_content定义为全局变量也注入失败
push hhc_channel
push 9
call hhc_address
add esp, 0xc
popad
}
}
void CMyDlg::OnButton2()
{ char buf[122];
GetDlgItemText(IDC_EDIT1,buf,sizeof(buf));
JuBing=::FindWindow(NULL,"xxxxxxxx");
::GetWindowThreadProcessId(JuBing,&pid);
hProcess=::OpenProcess(PROCESS_ALL_ACCESS,false,pid);
LPVOID callbase888=::VirtualAllocEx(hProcess,NULL,0x256,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
::WriteProcessMemory(hProcess,callbase888,(LPVOID)buf,0x256,NULL);
LPVOID callbase=::VirtualAllocEx(hProcess,NULL,0x1024,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
if (!::WriteProcessMemory(hProcess,callbase,hanhuacall,0x1024,NULL)) {AfxMessageBox("注入汇编代码失败");}
HANDLE hRemoteThread=::CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)callbase,NULL,0,NULL);
::WaitForSingleObject(hProcess,0);
::VirtualFreeEx(hProcess,callbase,0x1024,MEM_RELEASE);
::CloseHandle(hProcess);
::VirtualFreeEx(hProcess,callbase888,0x256,MEM_RELEASE);
}
我在一个进程两次申请空间第一次为申请存储文字内容而开辟的(想作为void hanhuacall( )的其中一个参数使用)。第二次申请的空间为存储要注入的函数代码(void hanhuacall)开辟的空间。。我的目的就是要开辟一个指定进程的空间后得到地址用来作要注入的函数void hanhuacall的hhc_address参数,失败后偿试过用全局变量和宏,均失败!就连要注入的函数void hanhuacall中的hhc_address参数定义为全局变量也失败,但
hhc_address参数指定一个确切的地址如0x00401234,则正常!!总失败!十分郁闷,又找不到C++内联汇编使用的详细方法和注意事项! 求助高手或老师指点指点!
C++内联汇编传递参数?在指定进程开辟了空间后无法远程注入使用?
答案:2 悬赏:50 手机版
解决时间 2021-02-19 10:52
- 提问者网友:暗中人
- 2021-02-18 19:21
最佳答案
- 五星知识达人网友:封刀令
- 2021-02-18 20:39
call指令你处理错了,call 立即数是调用当前地址+立即数位置处的函数,把地址放到寄存器里,call 寄存器
全部回答
- 1楼网友:旧脸谱
- 2021-02-18 21:31
你好!
晕,你怎么问我啊。。。我是菜鸟啊。而且我用的是VB啊。晕。。。
仅代表个人观点,不喜勿喷,谢谢。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯