首页
社区
课程
招聘
歪打正着--菜鸟清楚文件校验全过程[分享]
发表于: 2005-10-29 13:48 3834

歪打正着--菜鸟清楚文件校验全过程[分享]

2005-10-29 13:48
3834
目标软件:飞雪桌面日历V1.1
软件下载地址:http://www.shareware.cn/
***************************
发信人:龙城三少爷[BCG]
发文目的:把自己的破解过程写出来,希望得到各位前辈的指点
***************************
接触破解那么久,终于和各位前辈所预言的一样,碰到各种各样的壳了,好不容易弄到了二哥的脱壳教程(豪华版那个),就兴冲冲的看完了脱壳入门十八篇,颇有收获,这不,又到中国下载软件中心找猎物来了.
Peid显示:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo,很多人都说刚开始学脱壳都是从这个开始的,我也不例外..脱壳过程就不多说了.发现脱壳后的程序一运行就退出了.先按照上次skyege兄弟教的下rtcFilen函数跟踪,可是在某一处,循环了好多次...........
于是OD重新载入程序
命令行下 bp __vbaEnd函数,F9运行
660CBDA8 M>  68 689C0000     push 9C68                         //停在这里了.
660CBDAD     E8 01200000     call MSVBVM60.660CDDB3
660CBDB2 M>  6A 61           push 61
660CBDB4     E8 FA1F0000     call MSVBVM60.660CDDB3
660CBDB9     8B4424 04       mov eax,dword ptr ss:[esp+4]
660CBDBD     85C0            test eax,eax
660CBDBF     7C 05           jl short MSVBVM60.660CBDC6
660CBDC1     33C0            xor eax,eax
到这里我就迷茫好久了,不知道重复按了多少次F8,依次提示什么浮点数异常呀,程序退出代码0呀的.一看到这个异常,我头脑浮现的都是这几天看<加密与解密>中所说的SEH(还不是很明白,被那些结构弄懵了!),满脑子都是prev和handle了.抱着试试看的心理,重复上面的步骤.看右边堆栈显示:
0012F850   004595ED  返回到 UnPackFX.004595ED 来自 MSVBVM60.__vbaEnd

于是ctrl+g输入004595ED

004595A7     50              push eax
004595A8     FF15 90124000   call dword ptr ds:[<&MSVBVM60.rtcFileLen>; MSVBVM60.rtcFileLen                //难道也是通过检查文件长度吗?
004595AE     33C9            xor ecx,ecx
004595B0     3D 00020400     cmp eax,40200
004595B5     0F95C1          setne cl
004595B8     F7D9            neg ecx
004595BA     8BF1            mov esi,ecx
004595BC     8D55 D4         lea edx,dword ptr ss:[ebp-2C]
004595BF     52              push edx
004595C0     8D45 D8         lea eax,dword ptr ss:[ebp-28]
004595C3     50              push eax
004595C4     8D4D DC         lea ecx,dword ptr ss:[ebp-24]
004595C7     51              push ecx
004595C8     8D55 E0         lea edx,dword ptr ss:[ebp-20]
004595CB     52              push edx
004595CC     6A 04           push 4
004595CE     FF15 78124000   call dword ptr ds:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStrList
004595D4     83C4 14         add esp,14
004595D7     8D4D D0         lea ecx,dword ptr ss:[ebp-30]
004595DA     FF15 54134000   call dword ptr ds:[<&MSVBVM60.__vbaFreeO>; MSVBVM60.__vbaFreeObj
004595E0     66:3BF3         cmp si,bx
004595E3     74 08           je short UnPackFX.004595ED              //这里程序结束
004595E5     EB 00           jmp short UnPackFX.004595E7             //这里程序也结束
004595E7     FF15 44104000   call dword ptr ds:[<&MSVBVM60.__vbaEnd>] ; MSVBVM60.__vbaEnd
004595ED     FF15 DC104000   call dword ptr ds:[<&MSVBVM60.__vbaExitP>; MSVBVM60.__vbaExitProc                             //来到这里,向上看

于是我把je short UnPackFX.004595ED  ----------->nop      
        机器码由74,08------------------------->9090
      把jmp short UnPackFX.004595E7-------------->jmp short UnPackFX.004595F3(让他跳到下一句继续执行程序)
        机器码由EB00----------------------------->EB0C
用UltraEdit改了上面相应的机器码后保存,发现程序可以正常运行了

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 229
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
支持,学习!!兄弟进步了
2005-10-29 15:38
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
2005-10-29 17:03
0
游客
登录 | 注册 方可回帖
返回
//