吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12238|回复: 8
收起左侧

[Scripts] 强力促进钢蛋壳升级--VP1.72demo主程序iat修复脚本

[复制链接]
wuqing1501 发表于 2010-7-18 23:56
本帖最后由 wuqing1501 于 2010-7-19 00:07 编辑

不多说了吧,详细的脱壳过程可以看我写的这篇文章-《促进钢蛋壳升级-简单分析及脱VProtect1.72demo版加密VB程序》地址:http://www.52pojie.cn/thread-52705-1-1.html
        到达OEP后直接跑脚本就可以了 脚本跑完后 UIF修复一下 然后DUMP  修复 就可以了,但是这样修复的程序只能在本机 运行 不能跨平台,IAT脚本中查找IAT的方法不变,只是在之前的基础上修改而来的,查找效率有了不小的提升,目前只知道支持1.72DEMO  估计不支持 VP加壳的程序,因为VP主程序 修复的时候相当的慢 ,基本上今天一天我都在修改脚本,有兴趣的可以自己测试一下脚本能否使用,我这里可以顺利跑完,也就是只修复了00401000那部分的IAT ,对于主程序那里的IAT也都被壳处理了,但是我同时都修复后 却没有成功,只修复00401000那部分还可以本机运行,功能也可以正常使用,所以就没有再做大强度的测试了,因为用脚本完全跑完真个VP程序 不止一个小时呢,我个人感觉应该可以分两步来完成修复IAT ,先修复00401000那部分修复好后可以本机运行 然后在修复主程序段段内IAT,不过我是没有精力再搞了。还是放下脚本让有兴趣的继续研究吧。
     脚本共两个,第一个脚本是修复00401000段内调用的IAT的,第二个脚本是修复主程序段也就是OEP所在的段内调用IAT的,另外第脚本二在运行过程中当EIP 也就是运行到0080a938这行时会出错,这个时候要手动该脚本为单步,然后在脚本合适的地方重新运行那样停止的程序就会能重新运行,然后重新在OEP处新建EIP,并修改一下ESP的值,保证堆栈平衡,然后重新再跑一遍脚本二 就可以修复完的 好了不多说了有兴趣的自己看看吧!
     再次支持苦力升级!
     注意:一定要先运行脚本一,修复完后再运行脚本二!因为004010000那里的调用IAT时 第一个跳转就是调向主程序段调用的IAT那里的!
脚本一:
var oep
var ptr
var ip1
var addr
var refaddr
var refaddr2
var temesp
var ptr1
var kebase1
var kebase2
var iataddr1
var iataddr2
var iatstartaddr

mov kebase1,007fc000
mov kebase2,00bde000
mov iatstartaddr,00401000
start:
              mov oep,eip
              mov temesp,esp
findkebase1tzm:
              mov eip,kebase1
              find  eip, #595B588BC18B4F24519D03C38B5F4489039C58#
              cmp   $RESULT,0
              je findkebase2tzm
              add  $RESULT,11
              bp $RESULT
findkebase2tzm:
              mov eip,kebase2
              find  eip, #595B588BC18B4F24519D03C38B5F4489039C58#
              cmp   $RESULT,0
              je start
              add  $RESULT,11
              bp $RESULT
start:              
              mov esp,temesp
              mov eip,iatstartaddr
              mov ptr1,eip
iatfind:
               
               mov temesp,esp
               find  ptr1, #e9??????00008bc0#   
               cmp   $RESULT,0
               je    exit                     
               mov   ptr,$RESULT   
               mov   ptr1,ptr
               mov   eip,ptr
               mov   refaddr, ptr
               sti
               sti
               sti
               sti
               mov ip1, eip
               mov ip1, [ip1]
               and ip1, 0ff
cmp9c:
               cmp ip1,9c
               jnz tzm1iataddrfind
               je  iat23addrfind                     
tzm1iataddrfind:
               sti
               mov iataddr,eax
               gn iataddr
               cmp   $RESULT,0
               je tzm1iataddrfind
tzm1iatfix:

               sub eax,refaddr
               SUB eax,5
               mov refaddr,ptr
               mov [refaddr],#e99090909090#
               add refaddr,1
               mov [refaddr],eax,4
               mov esp,temesp

nextfind:
               add ptr1,3
               jmp iatfind
iat23addrfind:
               esto
               mov iataddr,eax
               gn iataddr
               cmp   $RESULT,0
               jne tzm3iatfix
               mov iataddr,ebx
               gn iataddr
               cmp   $RESULT,0
               je iat23addrfind
tzm2iatfix:
               sub ebx,refaddr
               SUB ebx,5
               mov refaddr,ptr
               mov [refaddr],#e99090909090#
               add refaddr,1
               mov [refaddr],ebx,4
               mov esp,temesp
               jmp nextfind
tzm3iatfix:
               sub eax,refaddr
               SUB eax,5
               mov refaddr,ptr
               mov [refaddr],#e99090909090#
               add refaddr,1
               mov [refaddr],eax,4
               mov esp,temesp
               jmp nextfind

exit:
              mov esp,temesp
              mov eip,oep
              ret

脚本二:

var oep
var ptr
var ip1
var addr
var refaddr
var temesp
var ptr1
var code
var kebase1
var kebase2
var iataddr
mov kebase1,007fc000
mov kebase2,00bde000
mov oep,eip
mov temesp,esp
start:              
               mov esp,temesp
               mov eip,kebase1 //查找的起始位置
               mov ptr1,eip
tzm3iatfind:
               
               mov temesp,esp
               find  ptr1,#E9??????
00?????????????????????????????????????????????????CCCCC#   
               cmp   $RESULT,0
               je    exit                     
               mov   ptr,$RESULT   
               mov   ptr1,ptr
               mov   eip,ptr
               mov   refaddr, ptr
               sti
               mov ip1, eip
               mov ip1, [ip1]
               and ip1, 0ff
finde9:      
               cmp ip1,e9
               jnz find68
               sti
               mov ip1, eip
               mov ip1, [ip1]
               and ip1, 0ff
               cmp ip1,50
               jnz nextfind
               sti
               mov ip1, eip
               mov ip1, [ip1]
               and ip1, 0ff
               cmp ip1,e9
               jnz nextfind
               je  tzm3iataddrfind
find68:
               cmp ip1,68
               jnz find50
               sti
               mov ip1, eip
               mov ip1, [ip1]
               and ip1, 0ff
               cmp ip1,9c
               jnz nextfind
               sti
               mov ip1, eip
               mov ip1, [ip1]
               and ip1, 0ff
               cmp ip1,81
               jnz nextfind  
               sti
               mov ip1, eip
               mov ip1, [ip1]
               and ip1, 0ff
               cmp ip1,9d
               jnz nextfind
               je tzm3iataddrfind         
               
find50:
               cmp ip1,50
               jnz nextfind
               sti
               mov ip1, eip
               mov ip1, [ip1]
               and ip1, 0ff
               cmp ip1,e9
               jnz nextfind
tzm3iataddrfind:
               sti
               mov iataddr,eax
               gn iataddr
               cmp   $RESULT,0
               je tzm3iataddrfind
tzm3iatfix:
               
               sub eax,refaddr
               SUB eax,5
               mov refaddr,ptr
               mov [refaddr],#E9909090909#
               add refaddr,1
               mov [refaddr],eax,4
               mov esp,temesp

nextfind:
               add ptr1,3
               jmp tzm3iatfind
exit:
              mov esp,temesp
              mov eip,oep
              ret
不好意思刚才的附件里忘 了放脚本就发了出来
重现上传
VP1.72demo主程序IAT修复脚本.rar (1.47 KB, 下载次数: 22)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

tysan 发表于 2010-7-19 00:25
哇 ,还支持跨平台呀  强悍
yezizhu78 发表于 2010-7-19 00:38
wumingbo 发表于 2010-8-12 17:50
红楼一梦 发表于 2011-1-8 13:56
版主都说好的东西我也要研究下
pass45 发表于 2012-2-24 19:04
哇  学习学习
dk747 发表于 2013-8-18 21:48
别骗我,我下载看看
爱你的QQ 发表于 2013-10-27 11:09
Vportect売.你会脱不.我o蛋一个.求助
几点 发表于 2014-11-12 13:58
我没上过学 不要骗我哦 下来看着好用不
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-25 01:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表