WinBowl Version 3.2 PJ小记(2)

时间:2005-12-20 来源: 作者: 点击:
下面将假注册码处理为一个十六进制处,由0040D934 E897800100 call 004259D0到此: ============================================================================ :004259D0 8B442404 mov eax, dword ptr [esp+04] :004259D4 50 push eax :004259D5 E846FFFFFF call 0
  下面将假注册码处理为一个十六进制处,由0040D934 E897800100  call 004259D0到此:
============================================================================
:004259D0 8B442404                mov eax, dword ptr [esp+04]
:004259D4 50                      push eax
:004259D5 E846FFFFFF              call 00425920<--------想CALL就进去
:004259DA 83C404                  add esp, 00000004
:004259DD C3                      ret

CALL到此:
:00425920 53                      push ebx
:00425921 56                      push esi
:00425922 8B74240C                mov esi, dword ptr [esp+0C]
:00425926 57                      push edi
:00425927 55                      push ebp
.....................
.....................
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042596A(C)
|
:00425971 33DB                    xor ebx, ebx
:00425973 8A1E                    mov bl, byte ptr [esi]<----取一位注册码存入BL
:00425975 46                      inc esi

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042596F(C)
|
:00425976 33ED                    xor ebp, ebp<--------------累加器清零

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004259AF(U)
|
:00425978 833DEC6E430001          cmp dword ptr [00436EEC], 00000001
:0042597F 7E0D                    jle 0042598E
..............
..............
:0042598E 8B0DE06C4300            mov ecx, dword ptr [00436CE0]
:00425994 33C0                    xor eax, eax
:00425996 668B0459                mov ax, word ptr [ecx+2*ebx]
:0042599A 83E004                  and eax, 00000004

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042598C(U)
|
:0042599D 85C0                    test eax, eax
:0042599F 7410                    je 004259B1<-----------------------处理完毕跳出去
:004259A1 8D44AD00                lea eax, dword ptr [ebp+4*ebp]<----计算处理注册码
:004259A5 46                      inc esi<---------------------------注册码移一位
:004259A6 8D6C43D0                lea ebp, dword ptr [ebx+2*eax-30]<-计算处理注册码
:004259AA 33DB                    xor ebx, ebx<----------------------清空EBX
:004259AC 8A5EFF                  mov bl, byte ptr [esi-01]<---------取下一位注册码
:004259AF EBC7                    jmp 00425978

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042599F(C)
|
:004259B1 8BC5                    mov eax, ebp<----------------------EBP为假注册码的十六进制数
..............
:004259BE C3                      ret


下面处理注册名及比较处,由0040D9B1 E8C4FAFFFF call 0040D47A到此:
================================================================
:0040D47A 66C70508BC43000000      mov word ptr [0043BC08], 0000
:0040D483 56                      push esi
:0040D484 57                      push edi
:0040D485 E893020000              call 0040D71D
:0040D48A 668B1508BC4300          mov dx, word ptr [0043BC08]<--计算一个值X开始处
:0040D491 B9FF000000              mov ecx, 000000FF
:0040D496 668BC2                  mov ax, dx
:0040D499 66C1EA08                shr dx, 08
:0040D49D 3477                    xor al, 77
:0040D49F 6623C1                  and ax, cx
:0040D4A2 0FB7F0                  movzx esi, ax
:0040D4A5 668B3C7510BC4300        mov di, word ptr [2*esi+0043BC10]
:0040D4AD 6633FA                  xor di, dx
:0040D4B0 668BC7                  mov ax, di
:0040D4B3 66893D08BC4300          mov word ptr [0043BC08], di
:0040D4BA 3462                    xor al, 62
:0040D4BC 6623C1                  and ax, cx
:0040D4BF 66C1EF08                shr di, 08
:0040D4C3 0FB7F0                  movzx esi, ax
:0040D4C6 668B147510BC4300        mov dx, word ptr [2*esi+0043BC10]
:0040D4CE 6633D7                  xor dx, di
:0040D4D1 668BC2                  mov ax, dx
:0040D4D4 66891508BC4300          mov word ptr [0043BC08], dx
:0040D4DB 3432                    xor al, 32
:0040D4DD 6623C1                  and ax, cx
:0040D4E0 66C1EA08                shr dx, 08
:0040D4E4 0FB7F0                  movzx esi, ax
:0040D4E7 668B3C7510BC4300        mov di, word ptr [2*esi+0043BC10]
:0040D4EF 6633FA                  xor di, dx
:0040D4F2 668BC7                  mov ax, di
:0040D4F5 66893D08BC4300          mov word ptr [0043BC08], di
:0040D4FC 3430                    xor al, 30
:0040D4FE 6623C1                  and ax, cx
:0040D501 66C1EF08                shr di, 08
:0040D505 0FB7F0                  movzx esi, ax
:0040D508 668B147510BC4300        mov dx, word ptr [2*esi+0043BC10]
:0040D510 6633D7                  xor dx, di<-----------------以上到此处计算出一个值X=0x1EAF(固定不变,所以不必了解其算法)
:0040D513 8B3D70854300            mov edi, dword ptr [00438570]
:0040D519 85FF                    test edi, edi<--------------测试注册名长度
:0040D51B 742D                    je 0040D54A<----------------为空则跳
:0040D51D 8D347D76854300          lea esi, dword ptr [2*edi+00438576]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040D548(C)
|
:0040D524 0FB64601                movzx eax, byte ptr [esi+01]<-------取一位注册名
:0040D528 0FB7CA                  movzx ecx, dx<----------------------取值 X 存入ECX
:0040D52B 66C1EA08                shr dx, 08<-------------------------取 X 高8位存入DX
:0040D52F 33C1                    xor eax, ecx<-----------------------注册名异或 X
:0040D531 25FF000000              and eax, 000000FF<------------------取低8位值
:0040D536 83EE02                  sub esi, 00000002<------------------注册名地址-2
:0040D539 668B044510BC4300        mov ax, word ptr [2*eax+0043BC10]<--从[2*EAX+43BC10]中取个数Y
:0040D541 6633C2                  xor ax, dx<-------------------------Y=Y XOR X的高8位
:0040D544 4F                      dec edi<----------------------------计数器-1
:0040D545 668BD0                  mov dx, ax<-------------------------X=Y
:0040D548 75DA                    jne 0040D524<-----------------------循环

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040D51B(C)
|
:0040D54A 668BC2                  mov ax, dx<-------------------------上面计算完后X的值存入AX
:0040D54D B9FF000000              mov ecx, 000000FF<------------------ECX=FF
:0040D552 66891508BC4300          mov word ptr [0043BC08], dx
:0040D559 3430                    xor al, 30<-------------------------X低位 XOR 30
:0040D55B 6623C1                  and ax, cx<-------------------------取AX低位
:0040D55E 66C1EA08                shr dx, 08<-------------------------取X的高位
:0040D562 0FB7F8                  movzx edi, ax<----------------------存入EDI
:0040D565 668B347D10BC4300        mov si, word ptr [2*edi+0043BC10]<--从中取出一个数Y
:0040D56D 6633F2                  xor si, dx<-------------------------Y异或X的高位
:0040D570 668BC6                  mov ax, si<-------------------------存入AX
:0040D573 66893508BC4300          mov word ptr [0043BC08], si
:0040D57A 3432                    xor al, 32<-------------------------X低位 XOR 32
:0040D57C 6623C1                  and ax, cx<-------------------------取EAX低位
:0040D57F 66C1EE08                shr si, 08<-------------------------取X的高位
:0040D583 0FB7F8                  movzx edi, ax<----------------------存入EDI
:0040D586 668B147D10BC4300        mov dx, word ptr [2*edi+0043BC10]<--从中取出一个数Y
:0040D58E 6633D6                  xor dx, si<-------------------------Y异或X的高位
:0040D591 668BC2                  mov ax, dx<-------------------------存入AX
:0040D594 66891508BC4300          mov word ptr [0043BC08], dx
:0040D59B 3462                    xor al, 62<-------------------------X低位 XOR 62
:0040D59D 6623C1                  and ax, cx<-------------------------取AX低位
:0040D5A0 66C1EA08                shr dx, 08<-------------------------取X的高位
:0040D5A4 0FB7F8                  movzx edi, ax<----------------------存入EDI
:0040D5A7 668B347D10BC4300        mov si, word ptr [2*edi+0043BC10]<--从中取出一个数Y
:0040D5AF 6633F2                  xor si, dx<-------------------------Y异或X的高位
:0040D5B2 668BC6                  mov ax, si<-------------------------存入AX
:0040D5B5 66893508BC4300          mov word ptr [0043BC08], si
:0040D5BC 3477                    xor al, 77<-------------------------X低位 XOR 77
:0040D5BE 6623C1                  and ax, cx<-------------------------取AX低位
:0040D5C1 66C1EE08                shr si, 08<-------------------------取X的高位
:0040D5C5 0FB7C8                  movzx ecx, ax<----------------------存入ECX
:0040D5C8 668B044D10BC4300        mov ax, word ptr [2*ecx+0043BC10]<--从中取出一个数Y
:0040D5D0 8B0DB8854300            mov ecx, dword ptr [004385B8]
:0040D5D6 6633C6                  xor ax, si<-------------------------Y异或X的高位
:0040D5D9 66A308BC4300            mov word ptr [0043BC08], ax<--------AX则为真注册码(下命令? AX显示正确注册码)
:0040D5DF 6635A494                xor ax, 94A4
:0040D5E3 668BD0                  mov dx, ax
:0040D5E6 80F2A4                  xor dl, A4
:0040D5E9 3AD1                    cmp dl, cl<---------比较真假注册码低位
:0040D5EB 7512                    jne 0040D5FF<-------不等则跳
:0040D5ED C1E910                  shr ecx, 10
:0040D5F0 66C1E808                shr ax, 08
:0040D5F4 3494                    xor al, 94
:0040D5F6 3AE8                    cmp ch, al<---------比较真假注册码高位
------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容