TA的每日心情 | 2025-6-23 21:25 |
---|
签到天数: 126 天 [LV.7]常住居民III
|
欢迎您注册加入!这里有您将更精采!
您需要 登录 才可以下载或查看,没有账号?注册
×
1)经典比较组合,常为注册码出现处(by programhunter)
1 [mw_shl_code=asm,true]mov eax [ ] ;这里可以是地址,也可以是其它寄存器mov edx [ ] ; 同上 通常这两个地址就储存着重要信息
call 00??????
test eax eax
jz(jnz) [/mw_shl_code]
2
[mw_shl_code=asm,true]mov eax [ ] ;这里可以是地址,也可以是其它寄存器
mov edx [ ] 同上 通常这两个地址就储存着重要信息
call 00??????
jne(je) [/mw_shl_code]
3
[mw_shl_code=asm,true] mov eax [ ]
mov edx [ ]
cmp eax,edx
jnz(jz) [/mw_shl_code]
或者
[mw_shl_code=asm,true]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 [/mw_shl_code]
4
[mw_shl_code=asm,true] lea edi [ ]
lea esi [ ]
repz cmpsd
jz(jnz) [/mw_shl_code]
5
[mw_shl_code=asm,true] mov eax [ ] ;这里可以是地址,也可以是其它寄存器
mov edx [ ] ;同上 通常这两个地址就储存着重要信息
call 00??????
setz (setnz) al (bl,cl…) [/mw_shl_code]
6
[mw_shl_code=asm,true]mov eax [ ] ;这里可以是地址,也可以是其它寄存器
mov edx [ ] ;同上 通常这两个地址就储存着重要信息
call 00??????
test eax eax
setz (setnz) bl,cl… [/mw_shl_code]
7
[mw_shl_code=asm,true]
call 00?????? *** ; 这个形式比较特别,它的关键比较地方不在第二call中,而在第一call中
push eax (ebx,ecx…)
……
……
call 00??????
pop eax (ebx,ecx…)
test eax eax
jz(jnz) [/mw_shl_code]
(2)注册码按字节依次给出
[mw_shl_code=asm,true]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 [/mw_shl_code]
(3)比较位数
[mw_shl_code=asm,true]cmp dword ptr[ebp-04],0000000A
jne/jge/jle/je 00xxxx [/mw_shl_code]
或
[mw_shl_code=asm,true]mov eax, dword ptr [ebp-04]
call 00xxxx
cmp eax, 0000000A ;<----比较注册码是否为10位
jne 00xxxxx ;<----不是,错[/mw_shl_code]
(4)VB程序经典比较
[mw_shl_code=asm,true]PUSH XXX ;假注册码
PUSH XXX ;真注册码
CALL [MSVBVM60!__vbaStrCmp]
TEST EAX,EAX
JNZ 00XXXXX [/mw_shl_code]
(5)SmartCheck中,注册码常出现处
[mw_shl_code=vb,true]__vbasrtcmp(String:"zzzzz",String:"yyyyy")returns
__vbaStrVarVal(VARIATN:String"a") returns
__vbaVarTstEq(VARIANT:****, VARIANT:****) returns [/mw_shl_code]
(6)依次取两位比较
[mw_shl_code=asm,true]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 [/mw_shl_code]
每次程序依次取两位,放入byte ptr [esi],byte ptr [esi+1],与eax, eax+1比较。如此循环
(7)小写转大写(一时找不到,自己补充)
(8)大写转小写(一时找不到,自己补充)
|
|