首页
社区
课程
招聘
[转帖]Enjoy.fix.Armadillo.Nanomites.By.NewBBQ
发表于: 2007-4-8 21:44 4559

[转帖]Enjoy.fix.Armadillo.Nanomites.By.NewBBQ

2007-4-8 21:44
4559
很好的一个工具,这里木有,转来一份~收藏

转自UnPack.Cn:http://www.unpack.cn/thread-11192-1-1.html


我的这个小程序是在98下 Kol+Delphi 做的(简单测试通过),不知兼容性如何(应该不存在平台问题吧)?
说说修复原理吧,为什么说可以正确还原CC呢?修复CC的难点是判断真CC,所以目前穿山甲之所以没有人做CC修复的程序(模拟的除外,说白了它就是真假都模拟),想跟踪脱壳程序方便些,一般都只好无奈地进行手工修复和遇错再修复。那为什么我说能正确还原呢?网上的文章不是已提出有假CC吗,你是怎样来正确排除它?是的,我们不防自己做个程序,加入 Nanomites 所需的标签macro,加壳成功后,你调试一下它,你会发现你来到的第一个CC必定是无论是否跳转,都是五字节的距离,聪明的你应该找到答案了吧,这个就是加壳器为 标签macro 设定的判断,目前版本来说是独一无二的,也就是说这里生成的CC是没有做假的,如果做假了,想还原,哈哈,就很麻烦了。
标签macro 是一对的,也就说只要我们能够找到这一对的开始和结束的位置,它里面的真假CC就有不攻自破的方法,在此范围内利用反汇编指令长度的配合,你是绝对不会修错里面的CC的!所以关键是找到 标签macro ,我都说过了,它是独一无二的,聪明的你应该想到了吧!我的小程序就是这样做的,A.逐字节扫描含CC的Section,先找出第一个 标签macro (都用90修复或EB03或E900000000修复,下一次找到的就重复A.),向下进行反汇编指令扫描,发现CC指令的就是要修复的CC了!一直循环到修复结束!
主要的做法和观点都讲了,具体的细节操作我用编程交给了修复器去做,当中的修复涉及到汇编引擎、反汇编引擎、编译引擎、查找引擎,衔接代码引擎,为了拯救手工修复,没什么好说的了,只好埋头努力把修复器做出来!
另外,我的模板里
L023:
cmp esi,edi
jnb L396
call L402
xchg ebx,eax
cmp dword ptr ds:[ebx+30],0 // 这时是 标签macro 开关
je L055 // 请改为 je L051 //这样会比较准,修复时间会长一点

更新:在XP修正98下不会Cash的Bug,原因已经知道(已经屏蔽),但先确定修复功能是否稳定,再更新。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
呵呵,这么快就转到看雪了,辛苦了老大。
2007-4-8 22:59
0
雪    币: 242
活跃值: (1664)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
3
这个确实不错,支持!
2007-4-9 08:44
0
游客
登录 | 注册 方可回帖
返回
//