Lemmy v4.4 注册码分析(2)

时间:2005-12-20 来源: 作者: 点击:
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00401A95(U) | :00401AA3 85C9 test ecx, ecx //位数是否为零 :00401AA5 7E11 jle 00401AB8 :00401AA7 51 push ecx //这是位数 :00401AA8 53 push ebx //这是用注册码推出来的ID :00401AA9 52 p
  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401A95(U)
|
:00401AA3 85C9                    test ecx, ecx                //位数是否为零
:00401AA5 7E11                    jle 00401AB8
:00401AA7 51                      push ecx                //这是位数
:00401AA8 53                      push ebx                //这是用注册码推出来的ID
:00401AA9 52                      push edx                //这是你输入的ID
:00401AAA E8515F0000              call 00407A00                //是否相同?
:00401AAF 83C40C                  add esp, 0000000C            
:00401AB2 85C0                    test eax, eax                
:00401AB4 7502                    jne 00401AB8                //如相同清ebp不然则相反,从而导致最后返回的eax值不同
:00401AB6 33ED                    xor ebp, ebp

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401AA5(C), :00401AB4(C)
|
:00401AB8 53                      push ebx
:00401AB9 E8A4640100              call 00417F62                
:00401ABE 83C404                  add esp, 00000004
:00401AC1 8BC5                    mov eax, ebp                //eax<==ebp
:00401AC3 5F                      pop edi
:00401AC4 5E                      pop esi
:00401AC5 5D                      pop ebp
:00401AC6 5B                      pop ebx
:00401AC7 C20800                  ret 0008


//下面是注册码的判断过程:

:00401060 83EC08                  sub esp, 00000008
:00401063 8B54240C                mov edx, dword ptr [esp+0C]
:00401067 53                      push ebx
:00401068 56                      push esi
:00401069 57                      push edi
:0040106A 8A4204                  mov al, byte ptr [edx+04]            //edx中是刚才处理过的假注册码
:0040106D 8BF9                    mov edi, ecx                    //同样两位两位处理
:0040106F 8A4A02                  mov cl, byte ptr [edx+02]            
:00401072 8844240C                mov byte ptr [esp+0C], al            //第五位放入第0位
:00401076 8A4207                  mov al, byte ptr [edx+07]            
:00401079 884C240D                mov byte ptr [esp+0D], cl            //第三位放入第1位
:0040107D 8A0A                    mov cl, byte ptr [edx]            
:0040107F 8844240E                mov byte ptr [esp+0E], al            //第八位放入第2位
:00401083 8A4206                  mov al, byte ptr [edx+06]            
:00401086 884C240F                mov byte ptr [esp+0F], cl            //第零位放入第3位
:0040108A 8A4A03                  mov cl, byte ptr [edx+03]            
:0040108D 88442410                mov byte ptr [esp+10], al            //第七位放入第4位
:00401091 8A4205                  mov al, byte ptr [edx+05]            
:00401094 884C2411                mov byte ptr [esp+11], cl            //第四位放入第5位
:00401098 8A4A01                  mov cl, byte ptr [edx+01]            
:0040109B 88442412                mov byte ptr [esp+12], al            //第六位放入第6位
:0040109F 8D74240C                lea esi, dword ptr [esp+0C]            //传地址给esi
:004010A3 33C0                    xor eax, eax                    
:004010A5 884C2413                mov byte ptr [esp+13], cl            //第二位放入第7位
:004010A9 2BF2                    sub esi, edx                    //用edx作计数器

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004010BB(C)
|
:004010AB 8A4C3814                mov cl, byte ptr [eax+edi+14]            //开始将换过位的假注册码和edi+14中的数逐个异或
:004010AF 8A1C16                  mov bl, byte ptr [esi+edx]            //edi+14中的数为312ACF04C76BF4DA
:004010B2 32CB                    xor cl, bl
:004010B4 40                      inc eax
:004010B5 880A                    mov byte ptr [edx], cl            //异或出来的东东保存
:004010B7 42                      inc edx                    
:004010B8 83F808                  cmp eax, 00000008                //是否已结束
:004010BB 7CEE                    jl 004010AB                    //否则继续
:004010BD 5F                      pop edi
:004010BE 5E                      pop esi
:004010BF 5B                      pop ebx
:004010C0 83C408                  add esp, 00000008
:004010C3 C20400                  ret 0004


分析:
    其实已经很明显了,这是一个用注册码推ID的软件。它将我们输入的注册码转成16进制数的形式,然后进行换位,这一步得到的东东再和
16进制数31 2A CF 04 C7 6B F4 DA逐位异或,然后这个东东和你的ID比较,相同说明是正确的,否则就让你检查。
我们可以用计算器来推一个你自己的注册码,例如:我的ID为bbbsl,16进制为62 62 62 73 6c,假设注册码为数组a[8],则经它折腾之后实际上数组变为b[8]={
a[5],a[3],a[8],a[0],a[7],a[4],a[6],a[2]},若要让推出来的ID前五位同bbbsl相同,就必须是数组b前五位和31 2a cf 04 c7相异或后得到的东东==62 62 62
73 6c,so拿起计算器算算吧,62^31=53,62^2a=48,62^cf=AD,73^04=77,6c^c7=AB,即a[5]=53,a[3]=48,a[8]=AD,a[0]=77,a[7]=AB,其余各位随意,所以我的注册码为
id: bbbsl
sn: 770048005300ABAD
------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容