本帖最后由 aiksie 于 2017-12-9 21:50 编辑
我百度搜索了下,论坛搜索了下,发现我看到的这些取子程序真实地址 源码,基本上都是有BUG的,不完全适用各种参数的子程序
一个非常简单的方法就能取到 子程序的真实地址,还用啥 汇编、API。。。。。
取子程序地址(&子程序) 这种子程序指针取到的并不是子程序真实的地址。
为啥要取子程序真实地址? 比如我需要 HOOK 某个地址, 如果我用的不是子程序真实地址,堆栈平衡就不好搞了。
原理:
每个子程序开头都是
push ebp
mov ebp,esp
只要判断 前3个字节,就能取到子程序的真实地址,用OD看一下就知道了。
另一种方法参考:http://bbs.eyuyan.com/read.php?tid=405188&displayMode=1#3226136
原理:没有文本型参数的,子程序真实地址一般是在第一个call,有一个文本型参数的,子程序真实地址是在第二个call,有两个文本型参数的,子程序真实地址是在第3个call,以此类推。
相比较我写的,这种汇编写的 代码就少了很多。。很多
为了方便大家,他的代码我也给贴一下
|
取子程序真实地址 | 整数型 | | |
子程序 | 子程序指针 | | | | 文本参数数量 | 整数型 | | | | 置入代码 ({ 139, 77, 12, 131, 193, 1, 139, 69, 8, 64, 128, 56, 232, 117, 250, 226, 248, 3, 64, 1, 131, 192, 5, 201, 194, 12, 0 }) 返回 (0 )
取子程序指针.e
(5.26 KB, 下载次数: 59)
补充内容 (2018-10-29 19:05):
心冷、鱼儿: 取子程序真实地址ASM版
|