首页
社区
课程
招聘
[旧帖] 插入可执行代码到PE文件中去,在保存旧的OEP时的疑问?? 0.00雪花
发表于: 2010-11-21 12:18 2869

[旧帖] 插入可执行代码到PE文件中去,在保存旧的OEP时的疑问?? 0.00雪花

2010-11-21 12:18
2869
在插入可执行代码到PE文件中去时,有一段代码是用来把原程序入口地址(OEP)保存并在插入的执行体返回时获得原程序入口地址,并返回原程序执行点的一段代码不知是什么意思请高手帮帮忙
DWORD dwAddress;
dwAddress = 0-(iMageNewSection.VirtualAddress-dwOldOEP+sizeof(szHexCode));
szOepA=StrOfDWord(dwAddress);

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 73
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主不明白的是dwAddress的计算方法吗?

我也曾经有过类似的疑问 后来在网上找到了答案

关于jmp/call指令的偏移地址机器码计算方法如下:

call/jmp目的地址减去前面call/jmp地址再减去call/jmp指令的长度

即: 目的地址 - 当前地址 = 偏移地址

比如:
当前的call指令地址是: 0045F76C
call指令的目的地址是: 008EA880
而call指令的长度是5个字节

计算结果如下:
008EA880 - 0045F76C - 5 = 00 48 B1 0F

call指令的opcode是E8
那么在这里call 008EA880的机器码就是: E8 0F B1 48 00
2010-11-22 20:50
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
原来如此
2010-11-23 15:34
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哎,偶汇编知识太薄弱,还得继续深造啊
2010-11-25 01:52
0
游客
登录 | 注册 方可回帖
返回
//