前些时候,最要好的朋友把他单位的一个软件带回来硬要我帮他把狗解开。我当时就傻了眼(都怪我平时在此兄面前炫耀自己的电脑玩得如何如何啦),但又不好意思推脱,就只好硬着头皮应了下来。
我就边学习边破解,其实根本还谈不上学习“破解”,我只是开始接触8086汇编语言的指令,通过半个月的“狼吞虎咽”,才刚刚囫囵看懂一些最简单的汇编指令。经过一番苦苦搜索,我才发现搞这一行真难啊!连“看雪”、“大老”这样的绝顶高手都称自己为菜鸟,那我连鸟蛋都算不上,以后再也不敢在朋友面前装高手了(是要付出代价的啊。。。。。。)!
我现在基本上每天下班后什么业余时间都没有了(全用来照看那只狗了)。
经过一个多星期的边看教材边用OD,还是一无所获,特来此“解密圣地”向各为前辈求教!
此软件是用VB6.0写的,有一个DLL(也用狗加密)是用VC6.0写的。
用dogtest2.1查软件是彩虹天地的GS-MH狗,听说此狗壳的反跟踪和花指令大大的厉害(对我而言)!后来发现事实的确如此:用F7单步跟踪基本上就是在原地打转;用W32dsm反汇编就非法操作,用了KillFlowerV1.2也不行,可能与EXE文件太大也有关系(有7.96M之巨)。
用filemon查发现狗驱动用的是rcmhdog.vxd和gsdog.vxd,并发现在有狗时删除gsdog.vxd软件可以正常使用,但不可缺少rcmhdog.vxd。
00ABCC88 > 55 PUSH EBP
00ABCC89 8BEC MOV EBP,ESP
00ABCC8B 81EC B0000000 SUB ESP,0B0
00ABCC91 53 PUSH EBX
00ABCC92 56 PUSH ESI
00ABCC93 57 PUSH EDI
00ABCC94 56 PUSH ESI
00ABCC95 57 PUSH EDI
00ABCC96 52 PUSH EDX
00ABCC97 51 PUSH ECX
00ABCC98 53 PUSH EBX
00ABCC99 50 PUSH EAX
00ABCC9A 833D 64BABF00 0>CMP DWORD PTR DS:[BFBA64],0
00ABCCA1 0F85 54100000 JNZ CYZWX.00ABDCFB
00ABCCA7 8D85 74FFFFFF LEA EAX,DWORD PTR SS:[EBP-8C]
00ABCCAD 50 PUSH EAX
00ABCCAE FF15 7C73C000 CALL DWORD PTR DS:[<&KERNEL32.GetLocalTi>
00ABCCB4 EB 01 JMP SHORT CYZWX.00ABCCB7
00ABCCB6 808B 4580508B 8>OR BYTE PTR DS:[EBX+8B508045],85
00ABCCBD 7C FF JL SHORT CYZWX.00ABCCBE
00ABCCBF FFFF ??? ; 未知命令
00ABCCC1 50 PUSH EAX
00ABCCC2 8B85 78FFFFFF MOV EAX,DWORD PTR SS:[EBP-88]
00ABCCC8 50 PUSH EAX
00ABCCC9 8B85 74FFFFFF MOV EAX,DWORD PTR SS:[EBP-8C]
00ABCCCF 50 PUSH EAX
00ABCCD0 E8 50F3FFFF CALL CYZWX.00ABC025
我把上面的COM DWORD PTR DS:[BFBA64],0改成COM DWORD PTR [00BFBA64],1
EXE文件不检查狗了,如果此时把软件目录下的一个DLL文件删除,并运行修改过的EXE,程序可以出现正常的运行窗口,但不能执行任何菜单功能,而且在退出是有非法操作。
以下的是那个DLL的领空:
10001020 > 56 PUSH ESI
10001021 8B7424 08 MOV ESI,DWORD PTR SS:[ESP+8]
10001025 57 PUSH EDI
10001026 8A46 02 MOV AL,BYTE PTR DS:[ESI+2]
10001029 8D7E 14 LEA EDI,DWORD PTR DS:[ESI+14]
1000102C A2 84980010 MOV BYTE PTR DS:[10009884],AL
10001031 66:8B4E 04 MOV CX,WORD PTR DS:[ESI+4]
10001035 66:890D 8698001>MOV WORD PTR DS:[10009886],CX
1000103C 66:8B56 06 MOV DX,WORD PTR DS:[ESI+6]
10001040 66:8915 7898001>MOV WORD PTR DS:[10009878],DX
10001047 8B46 08 MOV EAX,DWORD PTR DS:[ESI+8]
1000104A A3 80980010 MOV DWORD PTR DS:[10009880],EAX
1000104F 8B4E 0C MOV ECX,DWORD PTR DS:[ESI+C]
10001052 890D 7C980010 MOV DWORD PTR DS:[1000987C],ECX
10001058 8B56 10 MOV EDX,DWORD PTR DS:[ESI+10]
1000105B 33C0 XOR EAX,EAX
1000105D 8915 74980010 MOV DWORD PTR DS:[10009874],EDX
10001063 893D 70980010 MOV DWORD PTR DS:[10009870],EDI
10001069 66:8B06 MOV AX,WORD PTR DS:[ESI]
1000106C 48 DEC EAX
1000106D 83F8 08 CMP EAX,8
10001070 77 54 JA SHORT CYZWXGS.100010C6
10001072 FF2485 F8100010 JMP DWORD PTR DS:[EAX*4+100010F8]
10001079 E8 813E0000 CALL CYZWXGS.10004EFF
1000107E EB 4A JMP SHORT CYZWXGS.100010CA
10001080 E8 933E0000 CALL CYZWXGS.10004F18
10001085 EB 43 JMP SHORT CYZWXGS.100010CA
10001087 E8 513E0000 CALL CYZWXGS.10004EDD
1000108C EB 3C JMP SHORT CYZWXGS.100010CA
1000108E E8 8D000000 CALL CYZWXGS.10001120
10001093 EB 35 JMP SHORT CYZWXGS.100010CA
10001095 E8 A03E0000 CALL CYZWXGS.10004F3A
1000109A EB 2E JMP SHORT CYZWXGS.100010CA
1000109C 33C0 XOR EAX,EAX
1000109E EB 2A JMP SHORT CYZWXGS.100010CA
100010A0 E8 DF3E0000 CALL CYZWXGS.10004F84
100010A5 EB 23 JMP SHORT CYZWXGS.100010CA
100010A7 E8 FC3E0000 CALL CYZWXGS.10004FA8
100010AC 8A0F MOV CL,BYTE PTR DS:[EDI]
100010AE 880D 84980010 MOV BYTE PTR DS:[10009884],CL
100010B4 EB 14 JMP SHORT CYZWXGS.100010CA
100010B6 E8 F33D0000 CALL CYZWXGS.10004EAE
100010BB 8B56 10 MOV EDX,DWORD PTR DS:[ESI+10]
100010BE 8915 80980010 MOV DWORD PTR DS:[10009880],EDX
100010C4 EB 04 JMP SHORT CYZWXGS.100010CA
我觉的这里是狗的算法核心,但我实在是看不明白,求高手们耐心指点!
下面是被多次调用的一个CALL:
100010CA 66:0FB60D 84980>MOVZX CX,BYTE PTR DS:[10009884]
100010D2 66:894E 02 MOV WORD PTR DS:[ESI+2],CX
100010D6 8B15 80980010 MOV EDX,DWORD PTR DS:[10009880]
100010DC 8956 08 MOV DWORD PTR DS:[ESI+8],EDX
100010DF 66:8B0D 8698001>MOV CX,WORD PTR DS:[10009886]
100010E6 66:894E 04 MOV WORD PTR DS:[ESI+4],CX
100010EA 8B15 7C980010 MOV EDX,DWORD PTR DS:[1000987C]
100010F0 8956 0C MOV DWORD PTR DS:[ESI+C],EDX
100010F3 5F POP EDI
100010F4 5E POP ESI
100010F5 C2 0400 RETN 4
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!