软件名称:水晶情缘网络在线电视专家6.9x完整版
保护方式:ASPack 2.12 -> Alexey Solodovnikov + 病毒免疫器
声明:我是新手,来寻求帮助!(问题如果解决,或者我弄明白知识,我会整理发布心得,希望大家帮助)
破解目的:只为技术 吸取经验和知识!
这几天无聊看到了水晶情缘的软件,就拿来练练手,没想到遇到了病毒免疫器这个东西,以前没有遇到过,所以碰到了很多困难!现在解决了一部分,但是还有很多没有解决,所以前来寻求帮助!
这个软件的验证方式采用了重起验证和注册码验证,重新启动后检测注册表,他的注册信息写入了注册表!每次软件重新启动的时候就会读取注册表信息,如果不正确提示未注册!当在软件里面注册的时候,如果填入用户名、注册码不正确就不能够正常注册!更不用说写入注册表了!
言归正传,开始说说我的过程!首先 ASPack 2.12 这个壳很好解决,脱壳工具网上已经一大堆了,我是选择手动(fly老大常说了,一定要亲自动手嘛)!如果有不知道怎么脱壳的去找教程,一找一堆!
干净的脱掉了ASPack 2.12 ,本以为很简单,但是噩梦从此开始!
脱ASPack 2.12 掉后查壳 Microsoft Visual Basic 5.0 / 6.0 一看不仅心里面偷乐,很简单嘛!启动脱壳后的文件,发现提示 程序遇到病毒破坏,异常退出,建议杀毒后再重新使用!但是一愣,以前没有遇到过啊,估计是软件的自我检测验证,当时判断应该是软件的大小被改变所以出现了这种情况!所以我开始跟踪程序,打开od跟踪了1天,一点效果没有,郁闷!
第二天,继续苦干,自己分析了一下,感觉这个东西应该不这么简单,无聊开始查找,突然看到了rtcfilelen,感觉这个有门二话不说下断,运行
74056192 > $ 81EC 40010000 sub esp,140 //断在这里 74056198 . 8D4424 00 lea eax,dword ptr ss:[esp]
7405619C . 50 push eax
7405619D . FFB424 480100>push dword ptr ss:[esp+148]
740561A4 . E8 15000000 call MSVBVM50.740561BE
740561A9 . 85C0 test eax,eax
740561AB 0F85 B90F0400 jnz MSVBVM50.7409716A
740561B1 . 8B4424 20 mov eax,dword ptr ss:[esp+20]
740561B5 . 81C4 40010000 add esp,140
740561BB . C2 0400 retn 4
740561BE $ 55 push ebp
740561BF . 8B4424 08 mov eax,dword ptr ss:[esp+8]
740561C3 . 8BEC mov ebp,esp
740561C5 . 81EC 08010000 sub esp,108
740561CB . 85C0 test eax,eax
740561CD . 0F84 D00F0400 je MSVBVM50.740971A3
740561D3 . 66:8338 00 cmp word ptr ds:[eax],0
740561D7 0F84 C60F0400 je MSVBVM50.740971A3
740561DD . 50 push eax
740561DE . 8D8D F8FEFFFF lea ecx,dword ptr ss:[ebp-108]
740561E4 . 51 push ecx
740561E5 . E8 04C6FCFF call MSVBVM50.740227EE
740561EA . 85C0 test eax,eax
740561EC 75 3E jnz short MSVBVM50.7405622C
740561EE . 68 D0FD1274 push MSVBVM50.7412FDD0 ; ASCII "?*"
740561F3 . 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
740561F9 . 50 push eax
740561FA . E8 48B20000 call MSVBVM50.74061447
740561FF . 83C4 08 add esp,8
74056202 . 85C0 test eax,eax
74056204 . 0F85 660F0400 jnz MSVBVM50.74097170
7405620A . FF75 0C push dword ptr ss:[ebp+C] ; /pFindFileData
7405620D . 8D8D F8FEFFFF lea ecx,dword ptr ss:[ebp-108] ; |
74056213 . 51 push ecx ; |FileName
74056214 . FF15 34110274 call dword ptr ds:[<&KERNEL32.FindFirstFi>; \FindFirstFileA
7405621A . 83F8 FF cmp eax,-1
7405621D 0F84 570F0400 je MSVBVM50.7409717A
74056223 . 50 push eax ; /hSearch
74056224 . FF15 30110274 call dword ptr ds:[<&KERNEL32.FindClose>] ; \FindClose
7405622A . 33C0 xor eax,eax
7405622C > 8BE5 mov esp,ebp
7405622E . 5D pop ebp
7405622F . C2 0800 retn 8
74056232 >/$ 33C9 xor ecx,ecx
74056234 |. 51 push ecx
74056235 |. 51 push ecx
74056236 |. 6A 01 push 1
74056238 |. FF7424 14 push dword ptr ss:[esp+14]
7405623C |. FF7424 14 push dword ptr ss:[esp+14]
74056240 |. 51 push ecx
74056241 |. FF7424 24 push dword ptr ss:[esp+24]
74056245 |. E8 48A20000 call MSVBVM50.74060492
7405624A \. C2 0C00 retn 0C
7405624D $ 55 push ebp
7405624E . 8BEC mov ebp,esp
74056250 . 83EC 0C sub esp,0C
74056253 . 53 push ebx
74056254 . 56 push esi
74056255 . 57 push edi
74056256 . 33DB xor ebx,ebx
74056258 . 8B7D 10 mov edi,dword ptr ss:[ebp+10]
7405625B . 8D047D 000000>lea eax,dword ptr ds:[edi*2]
74056262 . 50 push eax
74056263 . E8 83C3FCFF call MSVBVM50.740225EB
74056268 . 8BF0 mov esi,eax
7405626A . 85F6 test esi,esi
7405626C . 0F84 3B0F0400 je MSVBVM50.740971AD
74056272 . 837D 14 00 cmp dword ptr ss:[ebp+14],0
74056276 . 75 3F jnz short MSVBVM50.740562B7
74056278 . 33C9 xor ecx,ecx
7405627A . 8D047D 000000>lea eax,dword ptr ds:[edi*2]
74056281 . 51 push ecx ; /pDefaultCharUsed => NULL
74056282 . 51 push ecx ; |pDefaultChar => NULL
74056283 . 50 push eax ; |MultiByteCount
74056284 . 56 push esi ; |MultiByteStr
74056285 . 57 push edi ; |WideCharCount
74056286 . FF75 0C push dword ptr ss:[ebp+C] ; |WideCharStr
74056289 . 51 push ecx ; |Options => 0
7405628A . 51 push ecx ; |CodePage => CP_ACP
7405628B . FF15 00120274 call dword ptr ds:[<&KERNEL32.WideCharToM>; \WideCharToMultiByte
74056291 . FF75 14 push dword ptr ss:[ebp+14]
74056294 . 50 push eax
74056295 . 56 push esi
74056296 . FF75 08 push dword ptr ss:[ebp+8]
74056299 . E8 0EA30000 call MSVBVM50.740605AC
--------------------------------------------------------
略.....
看了半天,感觉这里应该是校验的位置,但是我能力有限,一堆的je jnz 根来跟去就懵了!(如果有那位大哥能否帮忙分析一下出一个心得?)
没有办法去查资料,后来在论坛上看到fly大哥和其他的一些高手的分析,知道了这个是病毒免疫器,而且fly大哥给出了解决方法,按照fly大的哥方法
利用vbexplorer 查找到
******Possible String Ref To->".exe"
|
:0041FF0F 3AB0FE1000 LitVarStr ;PushVarString ptr_00409F70
:0041FF14 FBEFA0FE ConcatVar ;
:0041FF18 60 CStrVarTmp ;
:0041FF19 3178FF FStStr ;SysFreeString [LOCAL_0088]; [LOCAL_0088]=Pop
:0041FF1C 2F68FF FFree1Str ;SysFreeString [LOCAL_0098]; [LOCAL_0098]=0
:0041FF1F 29060074FF6CFFE4 FFreeAd ;
:0041FF28 36120058FF38FF18 FFreeVar ;Free 0012/2 variants
:0041FF3D 0013 LargeBos ;IDE beginning of line with 13 byte codes
:0041FF3F 6C78FF ILdRf ;Push DWORD [LOCAL_0088]
**********Reference To->msvbvm50.rtcFileLen
|
:0041FF42 5E11000400 ImpAdCallI2 ;Call ptr_00401024; check stack 0004; Push EAX
:0041FF47 F5AEDC0100 LitI4 ;Push 0001DCAE
:0041FF4C DB GtI4 ;Push (Pop1 > Pop2)
:0041FF4D 1C1201 BranchF ;If Pop=0 then ESI=0041FF8A //这里1C1201->1E1201 (这里为什么要这么改呢?)
:0041FF50 0033 LargeBos ;IDE beginning of line with 33 byte codes
:0041FF52 27F8FE LitVar ;PushVar LOCAL_0108
:0041FF55 2708FF LitVar ;PushVar LOCAL_00F8
******Possible String Ref To->"?????诽掺揍"(纳闷,为什么FLY大哥的是中文,我这里是乱码,寻求答案)
|
:0041FF58 3A48FF1200 LitVarStr ;PushVarString ptr_00409FBC
:0041FF5D 4E18FF FStVarCopyObj ;[LOCAL_00E8]=vbaVarDup(Pop)
:0041FF60 0418FF FLdRfVar ;Push LOCAL_00E8
:0041FF63 F510000000 LitI4 ;Push 00000010
******Possible String Ref To->"???????????烷成????????行绑????""(纳闷,为什么FLY大哥的是中文,我这里是乱码,寻求答案)
|
:0041FF68 3A58FF1300 LitVarStr ;PushVarString ptr_00409F80
:0041FF6D 4E38FF FStVarCopyObj ;[LOCAL_00C8]=vbaVarDup(Pop)
:0041FF70 0438FF FLdRfVar ;Push LOCAL_00C8
**********Reference To->msvbvm50.rtcMsgBox
|
:0041FF73 0A14001400 ImpAdCallFPR4 ;Call ptr_0040102A; check stack 0014; Push EAX
:0041FF78 36080038FF18FF08 FFreeVar ;Free 0008/2 variants
:0041FF83 0004 LargeBos ;IDE beginning of line with 04 byte codes
:0041FF85 FCC800 End ;
:0041FF88 0313020004 InvalidExcode ;
:0041FF8D 70FF04 FStI2 ;Pop WORD [STACK_04FF]
:0041FF90 74FF05 FStFPR8 ;Fstp#8 [STACK_05FF]
:0041FF93 0A00240B00 ImpAdCallFPR4 ;Call ptr_75007400; check stack 000B; Push EAX
-------------------------------------------------------------------
略......
剩下的简单了 打开UE 搜索1C1201 改成1E1201 ,一共两处,自己试验只要改掉第一处就可以正常启动,由于不明白1C1201改成1E1201 的原因,所以不好对第二个下结论,感觉应该是隐藏的暗桩!
这样应该是破掉了病毒免疫器,但是我测试了一下,如果用破解完的程序运行,只要出现了注册的对话框,软件就会自动关闭,大约是2秒钟,估计在注册哪里还有暗桩,但是无论怎么分析都没有分析出来(希望各位有能力的大哥能否分析一下)
而且在VBEXPLORER中,发现了窗体FPJ估计是病毒免疫器,自己加进去的,简单看了一下(认真看我也看不懂,知识贫乏,正在努力)发现屏蔽了大多数调试工具,TRW2000 URSOFT W32DA numega smartch winhex ollydbg wktvb vb p-code regsnap regshot registry sh vbrezq vbexplorer wpe 等等,看了后浑身冒汗,终于明白了,为什么前一天一调试就重新启动的原因了!shutdown -s不重新启动就怪了!
按照正常如果爆破(正在爆破中) 估计:在软件启动的时候进行爆破,应该能够正常启动软件,但是不知道是不是能够正常的使用,病毒免疫器的暗桩太多了,如果有那位大哥能够分析一下,出一篇心得让我们这些新手学习一下,万分感谢!
以上是我的过程,乱七八糟,新手也许看看能有用,高手大哥们看一下笑一笑给点帮助!
询问的问题:1、1C1201改成1E1201 的原因
2、fly大哥的vbexplorer能够显示中文,为什么我得不能(我的版本汉化的1.01 版权:万涛)
3、希望能有哪位大哥分析一下病毒免疫器(也许很简单,但是希望高手大哥辛苦一下,让我们学习一下分析流程,和分析入手点注意事项,和一些其他的经验)
希望这个不算灌水,fly大哥手下留情!不知道发在这里对不对 !感觉病毒免疫器应该算一个壳!
等待帮助的新手
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课