首页
社区
课程
招聘
[旧帖] [分享][分享]破解初学者基础知识 比较组合 0.00雪花
发表于: 2010-8-10 12:21 1342

[旧帖] [分享][分享]破解初学者基础知识 比较组合 0.00雪花

2010-8-10 12:21
1342
经典比较组合,常为注册码出现处
(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比较。如此循环.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 73
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习下,顶楼主!
2010-8-10 14:20
0
雪    币: 261
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
收藏了.....支持LZ...
2010-8-10 22:03
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
很有用的东西,谢谢lz了,学习
2010-8-10 22:15
0
雪    币: 915
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
复习一下了,没有实例,学不到新的东西。
2010-8-10 23:41
0
游客
登录 | 注册 方可回帖
返回
//