求助这个call指令怎么写!!
时间:2011-04-19
来源:互联网
我想修改一个dll,在dll入口处跳转到另一个地方,再那个地方,会执行LoadLibrary("xxx.dll")语句,然后再跳回来继续执行!
现在我的想法是在程序入口处改为jmp xxxx(xxxx为LoadLibrary("xxx.dll")的地址),在LoadLibrary("xxx.dll")后面不上jmp xxxx替换的代码,然后再跳转回去!
问题是在LoadLibrary("xxx.dll")中,我写法是
Assembly code
Assembly code
我觉得如果写成
Assembly code
这样是不对的,这样只能在我电脑上运行,那么应该怎么写呢??求助大家一下,非常感谢哈
现在我的想法是在程序入口处改为jmp xxxx(xxxx为LoadLibrary("xxx.dll")的地址),在LoadLibrary("xxx.dll")后面不上jmp xxxx替换的代码,然后再跳转回去!
问题是在LoadLibrary("xxx.dll")中,我写法是
Assembly code
push xxxxx;xxxxx地址保存着xxx.dll call LoadLibrary现在我搞不懂这个call LoadLibrary怎么写!!我看到我电脑上vc代码你出来是
Assembly code
call dword ptr [__imp__LoadLibraryA@4 (0042a148)]
我觉得如果写成
Assembly code
call 0042a148
这样是不对的,这样只能在我电脑上运行,那么应该怎么写呢??求助大家一下,非常感谢哈
作者: StriveScript 发布时间: 2011-04-19
这些都是在这个待修改的 dll 里?如果是的话,call LoadLibrary 可以写成 jmp ???????? ,其中 ???????? 是 call dword ptr [__imp__LoadLibraryA@4 (0042a148)] 这个指令的地址。这是因为 0042a148 这个 dword 存放的是 LoadLibrary() 函数的入口地址,但这个 0042a148 是可能变化的;所以,不能直接使用它。但对于一个模块里的上面的两个指令而言,它们的间隔是固定的,所以可以通过 jmp 指令调整到这个 call 指令来来进行 LoadLibrary() 函数的调用。
作者: zara 发布时间: 2011-04-19
没看懂你的意思。郁闷。。。
不过你要执行call LoadLibrary的话 可以先通过GetProcAddress拿到他的地址啊
不过你要执行call LoadLibrary的话 可以先通过GetProcAddress拿到他的地址啊
作者: gangyilovevc 发布时间: 2011-04-19
一楼正解,还可以直接查找到dll里导出表中LoadLibrary()函数的地址,直接call(jmp)就可以了,或者利用Detours库hook住dll的入口点也可以
作者: aiwnx 发布时间: 2011-04-19
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28