软件WinImp1.11(主程序winimp32.exe 大小463,872字节)
该软件是类似winzip的压缩软件,支持的格式较多,压缩率也很高,并且软件本身有自交验功能。
本人是在该软件报警后,发现机器中有病毒的。
工具:trw2000-1.22
过程如下:
输入如下内容 name:1234 key1:12345678 key2:12345678
用BPX HMEMCPY下断点,拦截后BC *,PMODULE后进入下面程序
0167:00426013 PUSH EBX
0167:00426014 PUSH ECX
0167:00426015 PUSH EDX
0167:00426016 PUSH ESI
0167:00426017 PUSH EDI
0167:00426018 ENTER 24,00
0167:0042601C MOV ESI,EAX
0167:0042601E PUSH DWORD 0100
0167:00426023 PUSH DWORD 00453C60
0167:00426028 PUSH BYTE +65
0167:0042602A PUSH EAX
0167:0042602B XOR EBX,EBX
0167:0042602D CALL NEAR [CS:0043D7A0] <----
get name code
0167:00426034 MOV DWORD [EBP-04],00
0167:0042603B MOV EAX,00453C60
0167:00426040 JMP SHORT 00426046
0167:00426042 AND EBX,BYTE +03
0167:00426045 INC EAX
0167:00426046 CMP BYTE [EAX],00
0167:00426049 JZ 00426067
0167:0042604B CMP BYTE [EAX],20
0167:0042604E JZ 00426042
0167:00426050 CMP BYTE [EAX],2E
0167:00426053 JZ 00426042
0167:00426055 MOVZX EDI,BYTE [EAX]
0167:00426058 MOV EDX,EBX
0167:0042605A MOV CL,[EDI+00451110]
0167:00426060 INC EBX
0167:00426061 ADD [EDX+EBP-04],CL
<---- move to [005cf740]
1234<->31323334
0167:00426065 JMP SHORT 00426042
0167:00426067 PUSH BYTE +0C
0167:00426069 LEA EAX,[EBP-24]
0167:0042606C PUSH EAX
0167:0042606D PUSH BYTE +66
0167:0042606F PUSH ESI
0167:00426070 MOV EBX,10
0167:00426075 CALL NEAR [CS:0043D7A0] <----
get key1 code
0167:0042607C LEA EAX,[EBP-24]
0167:0042607F XOR EDX,EDX
0167:00426081 CALL 00437454
<---- 对代码的检测,并送入[005cf738]
12345678<->78563412
0167:00426086 PUSH BYTE +0C
0167:00426088 MOV [EBP-0C],EAX
0167:0042608B LEA EAX,[EBP-24]
0167:0042608E PUSH EAX
0167:0042608F PUSH BYTE +67
0167:00426091 PUSH ESI
0167:00426092 MOV DWORD [EBP-08],00
0167:00426099 MOV EBX,10
0167:0042609E CALL NEAR [CS:0043D7A0] <----
get key2 code
0167:004260A5 LEA EAX,[EBP-24]
0167:004260A8 XOR EDX,EDX
0167:004260AA CALL 00437454
<---- 对代码的检测,并送入[005cf73c]
12345678<->78563412
0167:004260AF MOV EDX,[EBP-0C]
0167:004260B2 MOV [EBP-08],EAX
0167:004260B5 CMP EDX,01000000
0167:004260BB JC 004260D3
0167:004260BD CMP EAX,01000000
0167:004260C2 JC 004260D3
0167:004260C4 MOV EAX,EDX
0167:004260C6 MOV EDX,[EBP-08]
0167:004260C9 CALL 004262A7
<---- main proc
0167:004260CE CMP EAX,[EBP-04]
0167:004260D1 JZ 004260EB
进入main proc
0167:004262A7 PUSH EBX
0167:004262A8 PUSH ECX
0167:004262A9 PUSH ESI
0167:004262AA MOV ECX,EAX
0167:004262AC MOV EBX,EDX
0167:004262AE MOV EDX,[0044A764]
0167:004262B4 CALL 0042622D
<-------1
0167:004262B9 MOV ESI,EAX
0167:004262BB MOV EDX,EBX
0167:004262BD MOV EBX,20
0167:004262C2 MOV EAX,ECX
0167:004262C4 XOR ECX,ECX
0167:004262C6 CALL 00436B7E
<-------2
0167:004262CB XOR EAX,ESI
<---- 这里是将key1的code进行一系列运算后的值(esi)
与key2的code(eax)异或,之后与name的code比较
这样可以简单的作出一个注册机
NAME XOR 199B0737(12345678<->KEY1)=KEY2
34333231(1234) XOR 199B0737=2DA83506
name:1234
key1:12345678
key2:2da83506
0167:004262CD POP ESI
0167:004262CE POP ECX
0167:004262CF POP EBX
0167:004262D0 RET
注意:key1,key2的长度是name的2倍。如果有兴趣,
可以进入上面的1,2中,分析一下,作出一个注册机。
--------------------------------------------------
1:
0167:0042622D PUSH EBX
0167:0042622E PUSH ECX
0167:0042622F PUSH ESI
0167:00426230 PUSH EDI
0167:00426231 ENTER 04,00
0167:00426235 PUSH EDX
0167:00426236 TEST BYTE [EBP-08],01
0167:0042623A JNZ 00426243
0167:0042623C MOV ECX,01
0167:00426241 JMP SHORT 00426245
0167:00426243 MOV ECX,EAX
0167:00426245 MOV DWORD [EBP-04],02
0167:0042624C MOV EDI,EAX
0167:0042624E JMP SHORT 00426259
0167:00426250 SHL DWORD [EBP-04],1
0167:00426253 CMP DWORD [EBP-04],BYTE +00
0167:00426257 JZ 0042629F
0167:00426259 MOV ESI,[0044A760]
0167:0042625F MOV EAX,EDI
0167:00426261 MOV EDX,EDI
0167:00426263 MUL EDX
0167:00426265 CMP ESI,EDX
0167:00426267 JA 00426273
0167:00426269 MOV EBX,EAX
0167:0042626B MOV EAX,EDX
0167:0042626D XOR EDX,EDX
0167:0042626F DIV ESI
0167:00426271 MOV EAX,EBX
0167:00426273 DIV ESI
0167:00426275 MOV ESI,[EBP-08]
0167:00426278 MOV EAX,EDX
0167:0042627A MOV EDI,EDX
0167:0042627C TEST [EBP-04],ESI
0167:0042627F JZ 00426250
0167:00426281 MOV ESI,[0044A760]
0167:00426287 MOV EDX,ECX
0167:00426289 MUL EDX
0167:0042628B CMP ESI,EDX
0167:0042628D JA 00426299
0167:0042628F MOV EBX,EAX
0167:00426291 MOV EAX,EDX
0167:00426293 XOR EDX,EDX
0167:00426295 DIV ESI
0167:00426297 MOV EAX,EBX
0167:00426299 DIV ESI
0167:0042629B MOV ECX,EDX
0167:0042629D JMP SHORT 00426250
0167:0042629F MOV EAX,ECX
0167:004262A1 LEAVE
0167:004262A2 POP EDI
0167:004262A3 POP ESI
0167:004262A4 POP ECX
0167:004262A5 POP EBX
0167:004262A6 RET
------------------------------------------------
2:
0167:00436B7E AND EBX,BYTE +3F
0167:00436B81 TEST BL,60
0167:00436B84 JNZ 00436B8E
0167:00436B86 MOV ECX,EBX
0167:00436B88 SHRD EAX,EDX,CL
0167:00436B8B SHR EDX,CL
0167:00436B8D RET
0167:00436B8E MOV ECX,EBX
0167:00436B90 MOV EAX,EDX
0167:00436B92 SUB ECX,BYTE +20
0167:00436B95 XOR EDX,EDX
0167:00436B97 SHR EAX,CL
0167:00436B99 RET
0167:00436B9A AND EBX,BYTE +3F
0167:00436B9D TEST BL,60
0167:00436BA0 JNZ 00436BAA
0167:00436BA2 MOV ECX,EBX
0167:00436BA4 SHRD EAX,EDX,CL
0167:00436BA7 SAR EDX,CL
0167:00436BA9 RET
0167:00436BAA MOV ECX,EBX
0167:00436BAC MOV EAX,EDX
0167:00436BAE SUB ECX,BYTE +20
0167:00436BB1 SAR EDX,1F
0167:00436BB4 SAR EAX,CL
0167:00436BB6 RET
0167:00436BB7 AND EBX,BYTE +3F
0167:00436BBA TEST BL,60
0167:00436BBD JNZ 00436BC7
0167:00436BBF MOV ECX,EBX
0167:00436BC1 SHLD EDX,EAX,CL
0167:00436BC4 SHL EAX,CL
0167:00436BC6 RET
0167:00436BC7 MOV ECX,EBX
0167:00436BC9 MOV EDX,EAX
0167:00436BCB SUB ECX,BYTE +20
0167:00436BCE XOR EAX,EAX
0167:00436BD0 SHL EDX,CL
0167:00436BD2 RET
custer 2000.9.3
- 标 题:一篇破解入门 (7千字)
- 作 者:custer
- 时 间:2000-9-4 8:56:19
- 链 接:http://bbs.pediy.com