邪恶八进制信息安全团队技术讨论组's Archiver

冰血封情 2004-7-22 12:18

[转载]破解圣经

文章整理:风飘雪

(1)经典比较组合,常为注册码出现处(by programhunter)
1
   mov  eax [    ]  这里可以是地址,也可以是其它寄存器
   mov  edx [    ]  同上  通常这两个地址就储存着重要信息
   call 00??????
   test eax eax
   jz(jnz)
2
   mov  eax [    ]  这里可以是地址,也可以是其它寄存器
   mov  edx [    ]  同上  通常这两个地址就储存着重要信息
   call 00??????
   jne(je)
3
  mov eax [  ]
  mov edx [  ]
  cmp eax,edx
  jnz(jz)
或者
begin  mov al [  ]
    mov cl [  ]
    cmp al,cl
    jnz(jz)
    mov al [  +1]
    mov cl [  +1]
    cmp al,cl
    jnz(jz)
    cmp eax ecx (eax为计数器)
    jnl begin
    mov al 01
4
   lea edi [   ]
   lea esi [   ]
   repz cmpsd
   jz(jnz)
5
   mov  eax [    ]  这里可以是地址,也可以是其它寄存器
   mov  edx [    ]  同上  通常这两个地址就储存着重要信息
   call 00??????
   setz (setnz) al (bl,cl…)
6
   mov  eax [    ]  这里可以是地址,也可以是其它寄存器
   mov  edx [    ]  同上  通常这两个地址就储存着重要信息
   call 00??????
   test eax eax
   setz (setnz) bl,cl…
7
   call 00??????  ***
   push eax (ebx,ecx…)
   ……
   ……
   call 00??????
   pop eax (ebx,ecx…)
   test eax eax
   jz(jnz)
   这个形式比较特别,它的关键比较地方不在第二call中,而在第一call中

(2)注册码按字节依次给出
:0042A159 0FBE03            movsx eax, byte ptr [ebx]
:0042A15C 50               push eax        ^^^^^
:0042A15D E8228C0400          call 00472D84
:0042A162 59               pop ecx
:0042A163 83F84A            cmp eax, 0000004A ---->J
:0042A166 7559              jne 0042A1C1
:0042A168 0FBE5301           movsx edx, byte ptr [ebx+01]
:0042A16C 52               push edx        ^^^^^^^
:0042A16D E8128C0400          call 00472D84
:0042A172 59               pop ecx
:0042A173 83F853            cmp eax, 00000053
                       ^^^^^^^^^^^^^^^^^----> S
:0042A176 7549              jne 0042A1C1
:0042A178 0FBE4B02           movsx ecx, byte ptr [ebx+02]
:0042A17C 83F924            cmp ecx, 00000024   ^^^^^^^
                       ^^^^^^^^^^^^^^^^^----> $
:0042A17F 7540              jne 0042A1C1
:0042A181 0FBE4303           movsx eax, byte ptr [ebx+03]
:0042A185 83F832            cmp eax, 00000032  ^^^^^^^^
                       ^^^^^^^^^^^^^^^^^----> 2
:0042A188 7537              jne 0042A1C1
:0042A18A 0FBE5304           movsx edx, byte ptr [ebx+04]
:0042A18E 83FA38            cmp edx, 00000038  ^^^^^^^^
                       ^^^^^^^^^^^^^^^^^----> 8
:0042A191 752E              jne 0042A1C1
:0042A193 0FBE4B05           movsx ecx, byte ptr [ebx+05]
:0042A197 83F939            cmp ecx, 00000039  ^^^^^^^
                       ^^^^^^^^^^^^^^^^^----> 9
:0042A19A 7525              jne 0042A1C1
:0042A19C 0FBE4306           movsx eax, byte ptr [ebx+06]
:0042A1A0 83F832            cmp eax, 00000032  ^^^^^^^^
                       ^^^^^^^^^^^^^^^^^----> 2
:0042A1A3 751C              jne 0042A1C1
:0042A1A5 0FBE5307           movsx edx, byte ptr [ebx+07]
:0042A1A9 83FA31            cmp edx, 00000031  ^^^^^^^^                                                                                                                                       
                       ^^^^^^^^^^^^^^^^^
                                  ----->1
(3)比较位数
cmp dword ptr[ebp-04],0000000A
jne/jge/jle/je 00xxxx

mov eax, dword ptr [ebp-04]
call 00xxxx
cmp eax, 0000000A <----比较注册码是否为10位
jne 00xxxxx  <----不是,错
(4)VB程序经典比较
PUSH    XXX               //假注册码
PUSH    XXX               //真注册码
CALL    [MSVBVM60!__vbaStrCmp]
TEST    EAX,EAX
JNZ    00XXXXX
(5)SmartCheck中,注册码常出现处
__vbasrtcmp(String:"zzzzz",String:"yyyyy")returns
__vbaStrVarVal(VARIATN:String"a") returns
__vbaVarTstEq(VARIANT:****, VARIANT:****) returns
(6)依次取两位比较
:004044D8 8A10   mov dl, byte ptr [eax]
:004044DA 8ACA   mov cl, dl
:004044DC 3A16   cmp dl, byte ptr [esi]
:004044DE 751C   jne 004044FC
:004044E0 84C9   test cl, cl
:004044E2 7414   je 004044F8
:004044E4 8A5001  mov dl, byte ptr [eax+01]
:004044E7 8ACA   mov cl, dl
:004044E9 3A5601  cmp dl, byte ptr [esi+01]
:004044EC 750E   jne 004044FC
:004044EE 83C002  add eax, 00000002 ***
:004044F1 83C602  add esi, 00000002 ***
:004044F4 84C9   test cl, cl
:004044F6 75E0   jne 004044D8
每次程序依次取两位,放入byte ptr [esi],byte ptr [esi+1],与eax, eax+1比较。如此循环
(7)小写转大写(一时找不到,自己补充)
(8)大写转小写(一时找不到,自己补充)

整理By风飘雪

页: [1]
© 1999-2008 EvilOctal Security Team