加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【脱壳笔记】IAT错误指针修复小技巧(以ORiEN和MoleBox为例)

(2015-11-03 00:00:34)
标签:

逆向

脱壳

iat

分类: 逆向

一般在dump程序之后首先会想到用ImportREC去修复错误的函数指针,但是有时候这种方法不好使时,就可以通过手动跟踪IAT指针的变迁来防止指针被加密或破坏。

MoleBox V2.X为例,首先侦壳:

http://s14/mw690/002S5apNgy6WHbCS41v7d&690

OD载入程序,看到一个近call一个pushadESP定律直接到离OEP几步路的地方:

http://s10/mw690/002S5apNgy6WHbCUtDP19&690

004697B1   58            pop     eax ;  UnPackMe.00469BD8

004697B2   58            pop     eax

004697B3   FFD0          call    eax

然后在OEP 0x00405159C处利用LoadPE dumpc程序,用ImportREC修复时会发现无效指针:

http://s13/mw690/002S5apNgy6WHbCYTF2ac&690

这时候修复会失败,于是在程序开始之前,用监视指针位置,下硬件访问断点,可以看到:

http://s11/mw690/002S5apNgy6WHbD30bE8a&690

此时指针是正确的,接下来需要找到使得它被破坏的代码:

http://s12/mw690/002S5apNgy6WHbD5FAn1b&690

修改jzjmp,跳过破坏IAT的代码,然后用CTRL+S搜索接近出口的代码段,走几步来到OEP dump程序,发现以及没有无效指针,双击运行:

http://s3/mw690/002S5apNgy6WHbDa50Kc2&690

脱壳完成!这里又顺便拿了另外一个程序练练手:

http://s15/mw690/002S5apNgy6WHbObL6S8e&690

OD载入之后是一个长跳转,然后还是ESP定律,到OEP后用ImportREC看看指针:

http://s3/mw690/002S5apNgy6WHbOeiSSa2&690

有两个无效指针,采用同样的套路对下硬件访问断点,并进行监视:

http://s10/mw690/002S5apNgy6WHbOgHLH39&690    找到罪魁祸首,然后直接Nop = =……,然后CTRL+G0x0045159C,在OEP位置下断点,再用ImportREC看时:
http://s3/mw690/002S5apNgy6WHbOjToub2&690

这样就全是有效的指针了,然后用LoadPE dump程序,修复后双击运行:

http://s5/mw690/002S5apNgy6WHbOmmcQ44&690



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有