首页
社区
课程
招聘
[讨论]病毒免疫器的一些问题!我是新手,希望帮助!
发表于: 2005-10-15 13:14 4214

[讨论]病毒免疫器的一些问题!我是新手,希望帮助!

2005-10-15 13:14
4214
软件名称:水晶情缘网络在线电视专家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大哥手下留情!不知道发在这里对不对 !感觉病毒免疫器应该算一个壳!

                                            等待帮助的新手

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
不是病毒免疫器,是作者设置的自校验
病毒免疫器主页无法登陆,你可以google一下下载看看

至于能看到中文,是WKTVBDE调试时复制过来的字符参考

1C->BranchF  条件跳转   堆栈==0则跳
1D->BranchT  条件跳转   堆栈==FFFFFFFF则跳
1E->Branch   绝对跳转   jmp   
看《加密与解密2》 P247
2005-10-15 14:10
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢fly老大! :)

问题明白了

我继续学习一下,如果有结果我会发心得

再次感谢fly老大

我马上更改文章标题
2005-10-15 14:17
0
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
我前段时间也看了看它的一软件,按fly的说法改后运行就自动关机了。暗桩不少。加油啦!
2005-10-15 18:34
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
5
最初由 xsy3660 发布
我前段时间也看了看它的一软件,按fly的说法改后运行就自动关机了。暗桩不少。加油啦!


关机是因为除了启动时的检验还有其他检验
而不是因为按fly的说法改后就关机
继续找检验就行了
2005-10-15 20:05
0
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
fly老大,不好意思,你误会了,我不是说你那改的方法是不对。是想说除了那地方有比较外还有很多地方检验,希望楼主多加油,多找找。
2005-10-15 22:05
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
问题解决

正在研究注册码和算法

现在有这样一个问题

程序是vb5的,但是设置断点出现问题断不下来

程序不停的查找od  winhex 等等调试工具

找到有调试工具的字样就会自动关机,不过现在没有什么问题关机问题已经解决,就是在注册的时候断不下来

继续研究中~~~~

郁闷中~~~~

水晶的软件大同小异,都差不多,暗桩仔细点都能找到
2005-10-16 14:19
0
游客
登录 | 注册 方可回帖
返回
//