【破文标题】诛仙鑫金(p-code)脱壳去自校验分析
【破文作者】吴宗宪(酷子)
【作者邮箱】1183204@qq.com
【作者主页】1183204@qq.com
【破解工具】peid0.94+OD
【破解平台】XPsp2
【软件名称】诛仙鑫金
【软件大小】
【原版下载】
【保护方式】upx+自效验
【软件简介】
【破解声明】初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
------------------------------------------------------------------------
【破解过程】嘿嘿!!好久没有写东西了
昨天拿到一个诛仙鑫金的程序,里面只有一个程序,运行后会多生成几个文件,也会多一个叫QQ.exe的程序
查了下壳是UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo的
主程序"诛仙鑫金"脱壳后运行没有问题
另一个程序QQ.exe脱壳后也现"程序被修改过清检查病毒“
这里很明显的是程序有自效验
我今天的目的就是说下怎么去除这个自效验
脱完壳后peid查下是vb的程序,一般vb程序我都会再用Die再查看一下,发现他是p-code的
好的,是p-code的我就用WKTVBDEBUGGER来调试他
启动WKTVBDEBUGGER
file--open找到脱好壳的QQ.exe
Action--run运行程序
快速按下两次确定(注意一定要快速)
就来到程序开始的地方
00431C48: 0A ImpAdCallFPR4 功能模块!0043354Ch
00431C4D: 05 ImpAdLdRf
00431C50: 56 NewIfNullAd
00431C53: FD Lead2/FStAdNoPop
00431C57: 05 ImpAdLdRf
00431C5A: 24 NewIfNullPr 00406178
00431C5D: 0D VCallHresult CVBApp::Load
00431C62: 1A FFree1Ad
00431C65: 27 LitVar_Missing 0012FCC0h
00431C68: 25 PopAdLdVar
00431C69: 27 LitVar_Missing 0012FCD0h
00431C6C: 25 PopAdLdVar
00431C6D: 05 ImpAdLdRf
00431C70: 24 NewIfNullPr LL 004029D0
00431C73: 0D VCallHresult meth__imethSHOW
00431C78: 14 ExitProc
00431C79: 06 MemLdRfVar
00431C7C: E8 CI4R8
00431C7D: 11 ThisVCall
想一下,vb程序出现了提示框,可以用rtcMsgbox,试了下,能断下,但这个软件我不知道怎么向上向下翻代码,所以能断但看不到前面的代码,晕死子
再想下,vb程序自效验有可能用到rtcFileLen函数来对比文件的大小,所以用不着个试下
在WKTVBDEBUGGER的右边找到API(Crtl+B)进入函数列表向下找到rtcFileLen
双击下好断点
ok准备工作做好了
按Go!(f5),运行程序
程序会断下来
0043469E: 23 FStStrNoPop
004346A1: 1B LitStr: '.exe'
004346A4: 2A ConcatStr
004346A5: 23 FStStrNoPop
004346A8: 5E ImpAdCallI4 rtcFileLen on address 7346E967h 程序会断在这里
004346AD: F5 LitI4: -> 2F200h 193024 这两数就是脱后和没有脱的文件大小
004346B2: CC NeI4
004346B3: 32 FFreeStr
004346C0: 29 FFreeAd:
004346C7: 1C BranchF 00434701 (No Jump) F8走到这里可以看到(No Jump),不跳就会
004346CA: 00 LargeBos 到下面错误的地方,这时,我们代码下的Edit
004346CC: 27 LitVar_Missing 0012F9D4h 进入内存编辑双击第一个数据把第一个数据
004346CF: 27 LitVar_Missing 0012F9F4h 1C修改为1D,再按下Patch Mow!,就修改好了
004346D2: 3A LitVarStr '诛仙鑫金'
004346D7: 4E FStVarCopyObj 0012FA14h
004346DA: 04 FLdRfVar 0012FA14h
004346DD: F5 LitI4: -> 10h 16
004346E2: 3A LitVarStr '程序被修改过请检查病毒'
004346E7: 4E FStVarCopyObj 0012FA34h
修改好后再继续按Go!(F5)
又断了下来,说明这里还有一个效验的地方
004379F9: 23 FStStrNoPop
004379FC: 1B LitStr: '.exe'
004379FF: 2A ConcatStr
00437A00: 23 FStStrNoPop
00437A03: 5E ImpAdCallI4 rtcFileLen on address 7346E967h 这里和上面那个效验是一样的
00437A08: F5 LitI4: -> 2F200h 193024 文件大小
00437A0D: CC NeI4
00437A0E: 32 FFreeStr
00437A1B: 29 FFreeAd:
00437A22: 1C BranchF 00437A5C (No Jump) F8到这里,和前面的一样进入内存编辑,把1C改为1D
00437A25: 00 LargeBos
00437A27: 27 LitVar_Missing 0012F93Ch
00437A2A: 27 LitVar_Missing 0012F95Ch
00437A2D: 3A LitVarStr '诛仙鑫金'
00437A32: 4E FStVarCopyObj 0012F97Ch
00437A35: 04 FLdRfVar 0012F97Ch
00437A38: F5 LitI4: -> 10h 16
00437A3D: 3A LitVarStr '程序被修改过请检查病毒'
00437A42: 4E FStVarCopyObj 0012F99Ch
修改好后再按Go!(F5)
哈哈,程序运行起来了,耶,成功
因为我们刚才修改的是内存,再运行的话还是没修改过
最后打开一个16位编辑器打开脱壳后的QQ.exe
查找我们刚才修改的两个地址(注册是偏移地址)
346C7和37A22两个偏移地址处,把这两个地址处的数据1C改为1D,保存下
好了又收工了
我知道的关于p-code的东东西就这么多了哈
对了,最后还要把修改后的程序改名为QQ.exe,要不运行那个诛仙鑫金.exe时他也会效验出错的,因为他要检查QQ.exe这个文件名
------------------------------------------------------------------------
【破解总结】这是我第一次搞pcode程序的自效验,有很多不足的地方请大家指正
人常说:熟读唐诗300首 ,不会做诗也会吟
我相信:勤做练习几百个, 不会破解也能行
------------------------------------------------------------------------
【版权声明】转载请注明出处,请注明作者并保持文章的完整, 谢谢!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课