注入DLL的代码调用原进程的函数时出现内存访问异常 本帖最后由 jiangsheng 于 2010-07-04 07:49:23 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在使用这块内存之前可以使用AfxIsValidAddress对其进行检查。 结构化异常如cpu异常、内存访问违规异常、除零异常你是捕获不到的 有些异常不是try catch能解决的。 回1,2楼的兄弟:这个函数地址是不会变的 每次CALL肯定都是正确的,出问题的地方是在函数内部。回3楼的兄弟 :访问违规时再被我调用的原进程的函数内部,我没办法做检查。回4,5楼兄弟:那我应该用什么办法解决这个问题呢? 是向量化异常,或者是SEH 吗?请指教 使用__try{}__except(1){}来捕获这样.另外,函数地址一般可能根据模块基址来定位,一般动态获取而不写死. 我做过一个反汇编程序,与你的问题差不多,你需要注意 CALL 指令前后都会操作堆栈,你可以尝试 JMP 指令,这样不操作堆栈,比如:MOV EBX, 0x007BDE30JMP EBX这样出错概率相对要小一点,, 7楼兄弟:用了你说的方法后 出现了 error C2712: 无法在要求对象展开的函数中使用 __try回8楼 :我无法做地址有效性判断 因为出错的地址我是调用的函数内部调用的 我没办法修改那个函数回9楼:同上 搞定了 结贴 7楼正解 至于出现error C2712: 无法在要求对象展开的函数中使用 __try的问题 把被检查的那部分代码单独做个函数 里面不要写需要析构的代码就OK了 结贴。同时也谢谢其他兄弟的热心解答 如何解决UDP服务器对每个连接的消息处理 希望改变CTabCtrl的样式,如经常看到的\__/,怎么实现呢? 能给一个用vc编写的com程序吗,能说明问题就行? 请教高手:模板函数怎么用?请高手指点 100分问:我该怎么隐藏网络映射的盘? a test web视频会议控件,可以试用,有谁有源码吗?高价收购 CStdioFile问题,在写一个文件时用writestring,结果把第一行覆盖掉了 如何用调用notepad.exe打开一个txt文件??? 为什么单选(收音机)按钮,在初始化对话框时设置其中一个为选中状态,结果不成功 win32 DLL能用CString类型吗? DLL 问题
回3楼的兄弟 :访问违规时再被我调用的原进程的函数内部,我没办法做检查。
回4,5楼兄弟:那我应该用什么办法解决这个问题呢? 是向量化异常,或者是SEH 吗?请指教
我做过一个反汇编程序,
与你的问题差不多,
你需要注意 CALL 指令前后都会操作堆栈,
你可以尝试 JMP 指令,这样不操作堆栈,
比如:
MOV EBX, 0x007BDE30
JMP EBX
这样出错概率相对要小一点,,
回8楼 :我无法做地址有效性判断 因为出错的地址我是调用的函数内部调用的 我没办法修改那个函数
回9楼:同上