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

标签:
逆向脱壳iat |
分类: 逆向 |
一般在dump程序之后首先会想到用ImportREC去修复错误的函数指针,但是有时候这种方法不好使时,就可以通过手动跟踪IAT指针的变迁来防止指针被加密或破坏。
以MoleBox V2.X为例,首先侦壳:
http://s14/mw690/002S5apNgy6WHbCS41v7d&690
用OD载入程序,看到一个近call一个pushad,ESP定律直接到离OEP几步路的地方:
http://s10/mw690/002S5apNgy6WHbCUtDP19&690
004697B1
004697B2
004697B3
然后在OEP 0x00405159C处利用LoadPE dumpc程序,用ImportREC修复时会发现无效指针:
http://s13/mw690/002S5apNgy6WHbCYTF2ac&690
这时候修复会失败,于是在程序开始之前,用监视指针位置,下硬件访问断点,可以看到:
http://s11/mw690/002S5apNgy6WHbD30bE8a&690
此时指针是正确的,接下来需要找到使得它被破坏的代码:
http://s12/mw690/002S5apNgy6WHbD5FAn1b&690
修改jz为jmp,跳过破坏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
http://s3/mw690/002S5apNgy6WHbOjToub2&690
这样就全是有效的指针了,然后用LoadPE dump程序,修复后双击运行:
http://s5/mw690/002S5apNgy6WHbOmmcQ44&690