-
-
修改内存跳转问题(更新提问)
-
发表于:
2009-12-7 16:58
3797
-
呃....困扰多日...
目的: 让目标程序调用自己编写的函数
第一部分:(已解决)
过程:1 查找地址
2.编写程序
void __stdcall test(){
::AfxMessageBox ("dsssssssssssssssssssssssssss");
}
3.测试程序
请各位朋友给指点下我的问题可能出现在哪里.......
现在注入后 查看 地址是确实改了的,但是地址过高 应该超出了2G的范围,那么我想调用我的test应该怎么办.... 有什么资料可以参考 谢谢各位
后续 解决方案(5L):
临时的解决办法
就是原文中 我试图 E8 ******** JMP 到函数需要计算地址吧......(原先我以为不能jmp到立即数,但是貌似是不对的)
临时变通为 mov eax,test
JMP eax
*((BYTE *)(0x00452e98))= (BYTE)(0xB8);
* ((DWORD *)(0x00452e99)) = (DWORD)(test);
*((BYTE *)(0x00452e9D)) = (BYTE)(0xFF);
*((BYTE *)(0x00452e9E)) = (BYTE)(0xE0);
*((BYTE *)(0x00452e9F)) = (BYTE)(0x90);
-----------------------------------------------------------------
第二部分:(等待)
本来想另外出分求助的,但是考虑到这仍然是一个问题,为了以后好整理,特提到一块,我看能否时候补分,不能的话,下次提问一定补上.
问题:上面那部分代码是无错的 注入验证也是可以的,一切似乎都那么美好,但是恐怖的事情发生了,我再接再厉 进入实战 仅仅是做了小小的改动
正如你所看到的,仅仅是地址多了大约2M而已
奇怪的现象出现了,VS2008 对所有形如0x006*****的地址报 未声明的标识符 错2052
我甚至更换了一个机器 仍然出现该情况,求指点.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课