精易论坛

标题: 取子程序真实地址ASM版 [打印本页]

作者: 心冷、鱼儿    时间: 2018-7-11 12:15
标题: 取子程序真实地址ASM版
自己写HOOK的时候,发现hook类一直有问题,遂跟了下,发现是易语言的包装函数会导致ecx的值清0


导致调用类方法的时候错误,就百度了下取子程序真实地址,发现很多有错误,还有有文本参数的取不出来


便根据 aiksie 开源的方法写了汇编的,效率没测试,里面有对比完全正确。








作者: 雨后风细微    时间: 2018-7-11 12:23
  
子程序名返回值类型公开备 注
_取子程序真实地址整数型 
参数名类 型参考可空数组备 注
子程序指针子程序指针
置入代码 ({ 83, 81, 139, 69, 8, 64, 139, 8, 128, 249, 232, 117, 248, 139, 72, 1, 141, 92, 8, 5, 139, 11, 193, 225, 8, 129, 249, 0, 85, 139, 236, 141, 64, 4, 117, 225, 139, 195, 89, 91, 201, 194, 4, 0 })


这是我自用的。。。

作者: 反客为主    时间: 2018-7-11 12:28
学习,,,,,,
作者: 花开一半    时间: 2018-7-11 13:29
谢谢分享啊
作者: 这就是用户名    时间: 2018-7-11 13:35
看看
作者: 搞事    时间: 2018-7-11 13:46
不错哟~~         
作者: Fate    时间: 2018-7-11 14:05
支持一下
作者: cdk3344520    时间: 2018-7-11 14:46
感觉好厉害的样子
作者: 529512527    时间: 2018-7-11 21:47
先看看???
作者: wo33201    时间: 2018-7-11 22:16
先看看???
作者: aa304048020    时间: 2018-7-12 04:09
我是新手
作者: wanzhenghe999    时间: 2018-7-12 13:52
不错,楼主给力.

作者: Su·    时间: 2018-7-12 21:17
不错,楼主给力.
作者: 毛超    时间: 2018-7-13 10:00
加油 加油

作者: LBrowser    时间: 2018-7-13 20:57
伸手拿了,顺便亲了你一下             
作者: 腾龙跃然    时间: 2018-7-16 01:08
#在这里快速回复效果自看
作者: 89496414    时间: 2018-7-17 12:39
666666666666666
作者: 益脑三通    时间: 2018-7-31 13:13
汇编部分咋没 植入代码的
作者: 胖虎O    时间: 2022-4-8 23:58
看一下谢谢了
作者: aadada    时间: 2022-5-28 21:57
看起来不错
作者: 猫神父    时间: 2023-4-12 18:30
兼容类内方法、DLL函数,特此引入局部变量,返回值时用局部变量,让编译器自己平衡堆栈

  
子程序名返回值类型公开备 注
_pGetSubAddress整数型 取子程序真实地址
参数名类 型参考可空数组备 注
ptr子程序指针
变量名类 型静态数组备 注
RealPtr整数型 
RealPtr = -1
' _asm{
' push ebx                         ;保存寄存器以免错误
' push ecx
' mov eax,dword [ebp+08h]          ;获取到子程序地址
' do:                              ;循环标记
' inc eax                          ;指针+1
' cmp byte [eax],232               ;判断是不是call
' jne do                           ;不是就继续判断是不是call
' inc eax
' mov ecx,dword [eax]              ;如果是call,获取到call的偏移地址
' add eax,04h
' lea ebx,dword [eax+ecx]          ;call的地址
' cmp byte [ebx],85                ;判断是不是子程序开头
' jne do
' cmp byte [ebx+01h],139
' jne do
' cmp byte [ebx+02h],236
' jne do
' mov [ebp-4],ebx                      ;把指针局部变量返回
' jmp exit                         ;跳出循环
' jmp do                           ;继续循环
' exit:
' pop ecx
' pop ebx
' }end
' 将leave和ret保留给编译器处理,以应对更多环境
返回 (RealPtr)



作者: qq420345437    时间: 2024-8-20 05:11
谢谢大佬分享
作者: Easy易人    时间: 2024-8-29 13:08

谢谢大佬分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4