首页
社区
课程
招聘
Asprotect SKE 2。x Advanced Import protection中一个未弄明白的问题
发表于: 2006-11-10 18:49 4391

Asprotect SKE 2。x Advanced Import protection中一个未弄明白的问题

2006-11-10 18:49
4391
shooo和kanxue在脱asp2.x时提到
"进入EA0000后发生了什么,一共三层
第一层:保存所有当前寄存器 (出来后还要继续运行的,不能影响后面,不过它不是明目张胆的pushad)
第二层:1. 决定是哪一种方式的导入函数调用
           a. 第一种方式:将call 00EA0000 变成call F00004之类,出来后再次从原地进入F00004进入导入函数
           b. 第二种方式:直接带着参数进入导入函数
        2. 决定这个调用是call (ff15)还是jmp (ff25)
           不要以为C的都是call,delphi的都是jmp
           c. 如果是call (ff15),返回地址要+1 ,比如inc [esp],因为call 00EA0000 占5个字节,call (ff15)占6个字节
           d. 如果是jmp (ff25),要esp+4,想一下就知道原因了:)
        3. 如果是1.b的情况,可能有更邪恶的对下一行的偷代码,我一直没有找到好的方式解决它:(
第三层:恢复所有的寄存器返回"

第二层的第2点(返回地址+1,esp+4),我没弄明白,请大家指点。
原文链接:
http://bbs.pediy.com/showthread.php?s=&threadid=19313
http://bbs.pediy.com/showthread.php?s=&threadid=23771

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 277
活跃值: (312)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
2
因为call 00EA0000 占5个字节,call (ff15)占6个字节
2006-11-10 20:46
0
雪    币: 226
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢2楼的回复:
我所能够理解的是:
call 00ea0000:e8 xxxxxxxx被替换成
call dword ptr[yyyyyyyy]:ff15 yyyyyyyy或者
jmp dword ptr[yyyyyyyy]:ff25 yyyyyyyy

当call 00ea0000:e8 xxxxxxxx被替换成
call dword ptr[yyyyyyyy]:ff15 yyyyyyyy时,替换后执行时的返回地址是相对于替换前的返回地址要加1.这一点我能够明白。

我所不明白的有以下:
1:call 00ea0000:e8 xxxxxxxx被替换成
jmp dword ptr[yyyyyyyy]:ff25 yyyyyyyy
返回地址esp+4
2:6个字节替换5个字节,这时岂不是覆盖了后一条指令的操作码。

请知道的给予连贯,详细的讲解。不胜感激。
2006-11-11 11:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
程序中断后怎么不运行 程序呀?我看你们的都可以运行,这是怎么样回事呢?
也就是程序在Od里跑不起来,高手,怎么办呀/?
2006-11-12 00:02
0
游客
登录 | 注册 方可回帖
返回
//