反汇编练习-20170113

前言

看到一个cm, 楼主用的是强改流程,程序闪退. 这正常, 应该是后面用到了输入的注册码.
cm用弹框(MessageBoxA)来提示注册码”不对”, 是一个用到数据库操作的小程序, 单EXE.
通过注册码校验后,因为数据库没配好,提示数据库操作错误, 我不关心.
注册码用的明码比对, 很好找.

记录

用MessageBoxA弹错误信息
断在MessageBoxA,返回用户领空,下断点,重新跟注册码判断流程

注册码判断函数
004619D4     /.  55            push ebp
004619D5     |.  8BEC          mov ebp,esp
004619D7     |.  33C9          xor ecx,ecx
004619D9     |.  51            push ecx
004619DA     |.  51            push ecx
004619DB     |.  51            push ecx
004619DC     |.  51            push ecx
004619DD     |.  53            push ebx
004619DE     |.  8BD8          mov ebx,eax                         ;  eax 是新的ebx
004619E0     |.  33C0          xor eax,eax
004619E2     |.  55            push ebp                            ;  看口令, ds:[ebx+0x2ec] is the pwd ok
004619E3     |.  68 DB1A4600   push djsetup.00461ADB
004619E8     |.  64:FF30       push dword ptr fs:[eax]
004619EB     |.  64:8920       mov dword ptr fs:[eax],esp
004619EE     |.  FF83 E8020000 inc dword ptr ds:[ebx+0x2E8]
004619F4     |.  83BB E8020000>cmp dword ptr ds:[ebx+0x2E8],0x3
004619FB     |.  7C 4D         jl short djsetup.00461A4A           ;  口令重试次数判断
004619FD     |.  8D55 F8       lea edx,dword ptr ss:[ebp-0x8]
00461A00     |.  8B83 E4020000 mov eax,dword ptr ds:[ebx+0x2E4]
00461A06     |.  E8 09B8FDFF   call djsetup.0043D214
00461A0B     |.  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]
00461A0E     |.  8D55 FC       lea edx,dword ptr ss:[ebp-0x4]
00461A11     |.  E8 3291FAFF   call djsetup.0040AB48
00461A16     |.  8B55 FC       mov edx,dword ptr ss:[ebp-0x4]
00461A19     |.  8B83 EC020000 mov eax,dword ptr ds:[ebx+0x2EC]
00461A1F     |.  E8 8C28FAFF   call <djsetup.fnIsPwdOk1>
00461A24     |.  74 24         je short djsetup.00461A4A
00461A26     |.  6A 40         push 0x40
00461A28     |.  B9 E81A4600   mov ecx,djsetup.00461AE8
00461A2D     |.  BA F41A4600   mov edx,djsetup.00461AF4
00461A32     |.  A1 D0035A00   mov eax,dword ptr ds:[0x5A03D0]
00461A37     |.  8B00          mov eax,dword ptr ds:[eax]
00461A39     |.  E8 CA3EFFFF   call <djsetup.fnPwdDiff>
00461A3E     |.  C783 34020000>mov dword ptr ds:[ebx+0x234],0x2
00461A48     |.  EB 63         jmp short djsetup.00461AAD
00461A4A     |>  8D55 F0       lea edx,dword ptr ss:[ebp-0x10]
00461A4D     |.  8B83 E4020000 mov eax,dword ptr ds:[ebx+0x2E4]
00461A53     |.  E8 BCB7FDFF   call djsetup.0043D214
00461A58     |.  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]     ;  pwd input
00461A5B     |.  8D55 F4       lea edx,dword ptr ss:[ebp-0xC]
00461A5E     |.  E8 E590FAFF   call djsetup.0040AB48
00461A63     |.  8B55 F4       mov edx,dword ptr ss:[ebp-0xC]
00461A66     |.  8B83 EC020000 mov eax,dword ptr ds:[ebx+0x2EC]    ;  ds:[ebx+0x2ec] is the pwd ok
00461A6C     |.  E8 3F28FAFF   call <djsetup.fnIsPwdOk1>           ;  edx is userPwd, eax is Pwd ok
00461A71     |.  75 0C         jnz short djsetup.00461A7F
00461A73     |.  C783 34020000>mov dword ptr ds:[ebx+0x234],0x1    ;  口令正确
00461A7D     |.  EB 2E         jmp short djsetup.00461AAD
00461A7F     |>  6A 40         push 0x40
00461A81     |.  B9 E81A4600   mov ecx,djsetup.00461AE8
00461A86     |.  BA 101B4600   mov edx,djsetup.00461B10
00461A8B     |.  A1 D0035A00   mov eax,dword ptr ds:[0x5A03D0]
00461A90     |.  8B00          mov eax,dword ptr ds:[eax]
00461A92     |.  E8 713EFFFF   call <djsetup.fnPwdDiff>            ;  pwd diff, 如果有错误弹框提示
00461A97     |.  8B83 E4020000 mov eax,dword ptr ds:[ebx+0x2E4]
00461A9D     |.  8B10          mov edx,dword ptr ds:[eax]
00461A9F     |.  FF92 B0000000 call dword ptr ds:[edx+0xB0]
00461AA5     |.  33C0          xor eax,eax
00461AA7     |.  8983 34020000 mov dword ptr ds:[ebx+0x234],eax
00461AAD     |>  33C0          xor eax,eax
00461AAF     |.  5A            pop edx                             ;  00B6B350
00461AB0     |.  59            pop ecx                             ;  00B6B350
00461AB1     |.  59            pop ecx                             ;  00B6B350
00461AB2     |.  64:8910       mov dword ptr fs:[eax],edx
00461AB5     |.  68 E21A4600   push djsetup.00461AE2
00461ABA     |>  8D45 F0       lea eax,dword ptr ss:[ebp-0x10]
00461ABD     |.  E8 5E24FAFF   call djsetup.00403F20
00461AC2     |.  8D45 F4       lea eax,dword ptr ss:[ebp-0xC]
00461AC5     |.  E8 5624FAFF   call djsetup.00403F20
00461ACA     |.  8D45 F8       lea eax,dword ptr ss:[ebp-0x8]
00461ACD     |.  E8 4E24FAFF   call djsetup.00403F20
00461AD2     |.  8D45 FC       lea eax,dword ptr ss:[ebp-0x4]
00461AD5     |.  E8 4624FAFF   call djsetup.00403F20
00461ADA     \.  C3            retn
00461ADB      .^ E9 A01EFAFF   jmp djsetup.00403980
00461AE0      .^ EB D8         jmp short djsetup.00461ABA
00461AE2      .  5B            pop ebx                             ;  00B6B350
00461AE3      .  8BE5          mov esp,ebp
00461AE5      .  5D            pop ebp                             ;  00B6B350
00461AE6      .  C3            retn

// 比对注册码, 拿用户输入的口令和预留的注册码进行比对.
004042B0 <djsetup.fnIsPwdOk1>   /$  53            push ebx
004042B1                        |.  56            push esi
004042B2                        |.  57            push edi
004042B3                        |.  89C6          mov esi,eax
004042B5                        |.  89D7          mov edi,edx
004042B7                        |.  39D0          cmp eax,edx
004042B9                        |.  0F84 8F000000 je djsetup.0040434E
004042BF                        |.  85F6          test esi,esi                        ;  SpaceTime
004042C1                        |.  74 68         je short djsetup.0040432B
004042C3                        |.  85FF          test edi,edi                        ;  123456
004042C5                        |.  74 6B         je short djsetup.00404332
004042C7                        |.  8B46 FC       mov eax,dword ptr ds:[esi-0x4]      ;  str len 1
004042CA                        |.  8B57 FC       mov edx,dword ptr ds:[edi-0x4]      ;  str len 2
004042CD                        |.  29D0          sub eax,edx
004042CF                        |.  77 02         ja short djsetup.004042D3
004042D1                        |.  01C2          add edx,eax
004042D3                        |>  52            push edx
004042D4                        |.  C1EA 02       shr edx,0x2
004042D7                        |.  74 26         je short djsetup.004042FF
004042D9                        |>  8B0E          /mov ecx,dword ptr ds:[esi]
004042DB                        |.  8B1F          |mov ebx,dword ptr ds:[edi]
004042DD                        |.  39D9          |cmp ecx,ebx                        ;  比较4个字节(byte0~byte3)
004042DF                        |.  75 58         |jnz short djsetup.00404339
004042E1                        |.  4A            |dec edx
004042E2                        |.  74 15         |je short djsetup.004042F9
004042E4                        |.  8B4E 04       |mov ecx,dword ptr ds:[esi+0x4]     ;  比较4个字节(byte4~byte7)
004042E7                        |.  8B5F 04       |mov ebx,dword ptr ds:[edi+0x4]
004042EA                        |.  39D9          |cmp ecx,ebx
004042EC                        |.  75 4B         |jnz short djsetup.00404339
004042EE                        |.  83C6 08       |add esi,0x8
004042F1                        |.  83C7 08       |add edi,0x8
004042F4                        |.  4A            |dec edx
004042F5                        |.^ 75 E2         \jnz short djsetup.004042D9
004042F7                        |.  EB 06         jmp short djsetup.004042FF
004042F9                        |>  83C6 04       add esi,0x4
004042FC                        |.  83C7 04       add edi,0x4
004042FF                        |>  5A            pop edx                             ;  00B6B350
00404300                        |.  83E2 03       and edx,0x3
00404303                        |.  74 22         je short djsetup.00404327
00404305                        |.  8B0E          mov ecx,dword ptr ds:[esi]
00404307                        |.  8B1F          mov ebx,dword ptr ds:[edi]
00404309                        |.  38D9          cmp cl,bl                           ;  比较最后一个字节
0040430B                        |.  75 41         jnz short djsetup.0040434E
0040430D                        |.  4A            dec edx
0040430E                        |.  74 17         je short djsetup.00404327
00404310                        |.  38FD          cmp ch,bh
00404312                        |.  75 3A         jnz short djsetup.0040434E
00404314                        |.  4A            dec edx
00404315                        |.  74 10         je short djsetup.00404327
00404317                        |.  81E3 0000FF00 and ebx,0xFF0000
0040431D                        |.  81E1 0000FF00 and ecx,0xFF0000
00404323                        |.  39D9          cmp ecx,ebx
00404325                        |.  75 27         jnz short djsetup.0040434E
00404327                        |>  01C0          add eax,eax
00404329                        |.  EB 23         jmp short djsetup.0040434E
0040432B                        |>  8B57 FC       mov edx,dword ptr ds:[edi-0x4]
0040432E                        |.  29D0          sub eax,edx
00404330                        |.  EB 1C         jmp short djsetup.0040434E
00404332                        |>  8B46 FC       mov eax,dword ptr ds:[esi-0x4]
00404335                        |.  29D0          sub eax,edx
00404337                        |.  EB 15         jmp short djsetup.0040434E
00404339                        |>  5A            pop edx                             ;  00B6B350
0040433A                        |.  38D9          cmp cl,bl
0040433C                        |.  75 10         jnz short djsetup.0040434E
0040433E                        |.  38FD          cmp ch,bh
00404340                        |.  75 0C         jnz short djsetup.0040434E
00404342                        |.  C1E9 10       shr ecx,0x10
00404345                        |.  C1EB 10       shr ebx,0x10
00404348                        |.  38D9          cmp cl,bl
0040434A                        |.  75 02         jnz short djsetup.0040434E
0040434C                        |.  38FD          cmp ch,bh
0040434E                        |>  5F            pop edi                             ;  00B6B350
0040434F                        |.  5E            pop esi                             ;  00B6B350
00404350                        |.  5B            pop ebx                             ;  00B6B350
00404351                        \.  C3            retn                                ;  比较成功后,返回的是0

// 报错弹框
00455908 <djsetup.fnPwdDiff>    /$  55            push ebp
00455909                        |.  8BEC          mov ebp,esp
0045590B                        |.  83C4 B0       add esp,-0x50
0045590E                        |.  53            push ebx
0045590F                        |.  56            push esi
00455910                        |.  57            push edi
00455911                        |.  8BF9          mov edi,ecx
00455913                        |.  8BF2          mov esi,edx
00455915                        |.  8945 FC       mov dword ptr ss:[ebp-0x4],eax
00455918                        |.  8B5D 08       mov ebx,dword ptr ss:[ebp+0x8]
0045591B                        |.  E8 E427FBFF   call <jmp.&user32.GetActiveWindow>  ; [GetActiveWindow
00455920                        |.  8945 F4       mov dword ptr ss:[ebp-0xC],eax
00455923                        |.  6A 02         push 0x2
00455925                        |.  8B45 F4       mov eax,dword ptr ss:[ebp-0xC]
00455928                        |.  50            push eax
00455929                        |.  A1 70025A00   mov eax,dword ptr ds:[0x5A0270]
0045592E                        |.  8B00          mov eax,dword ptr ds:[eax]
00455930                        |.  FFD0          call eax
00455932                        |.  8945 EC       mov dword ptr ss:[ebp-0x14],eax
00455935                        |.  6A 02         push 0x2
00455937                        |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]
0045593A                        |.  8B40 24       mov eax,dword ptr ds:[eax+0x24]
0045593D                        |.  50            push eax
0045593E                        |.  A1 70025A00   mov eax,dword ptr ds:[0x5A0270]
00455943                        |.  8B00          mov eax,dword ptr ds:[eax]
00455945                        |.  FFD0          call eax
00455947                        |.  8945 E8       mov dword ptr ss:[ebp-0x18],eax
0045594A                        |.  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]
0045594D                        |.  3B45 E8       cmp eax,dword ptr ss:[ebp-0x18]
00455950                        |.  74 60         je short djsetup.004559B2
00455952                        |.  C745 C0 28000>mov dword ptr ss:[ebp-0x40],0x28
00455959                        |.  8D45 C0       lea eax,dword ptr ss:[ebp-0x40]
0045595C                        |.  50            push eax
0045595D                        |.  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]
00455960                        |.  50            push eax
00455961                        |.  A1 24015A00   mov eax,dword ptr ds:[0x5A0124]
00455966                        |.  8B00          mov eax,dword ptr ds:[eax]
00455968                        |.  FFD0          call eax
0045596A                        |.  8D45 B0       lea eax,dword ptr ss:[ebp-0x50]
0045596D                        |.  50            push eax                            ; /pRect = NULL
0045596E                        |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]      ; |
00455971                        |.  8B40 24       mov eax,dword ptr ds:[eax+0x24]     ; |
00455974                        |.  50            push eax                            ; |hWnd = NULL
00455975                        |.  E8 0A29FBFF   call <jmp.&user32.GetWindowRect>    ; \GetWindowRect
0045597A                        |.  6A 1D         push 0x1D
0045597C                        |.  6A 00         push 0x0
0045597E                        |.  6A 00         push 0x0
00455980                        |.  8B4D D0       mov ecx,dword ptr ss:[ebp-0x30]
00455983                        |.  8B55 C8       mov edx,dword ptr ss:[ebp-0x38]
00455986                        |.  2BCA          sub ecx,edx
00455988                        |.  D1F9          sar ecx,1
0045598A                        |.  79 03         jns short djsetup.0045598F
0045598C                        |.  83D1 00       adc ecx,0x0
0045598F                        |>  03CA          add ecx,edx
00455991                        |.  51            push ecx
00455992                        |.  8B55 CC       mov edx,dword ptr ss:[ebp-0x34]
00455995                        |.  8B45 C4       mov eax,dword ptr ss:[ebp-0x3C]     ;  djsetup.0040AB90
00455998                        |.  2BD0          sub edx,eax
0045599A                        |.  D1FA          sar edx,1
0045599C                        |.  79 03         jns short djsetup.004559A1
0045599E                        |.  83D2 00       adc edx,0x0
004559A1                        |>  03D0          add edx,eax                         ; |
004559A3                        |.  52            push edx                            ; |X = 12F71C (1242908.)
004559A4                        |.  6A 00         push 0x0                            ; |InsertAfter = HWND_TOP
004559A6                        |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]      ; |
004559A9                        |.  8B40 24       mov eax,dword ptr ds:[eax+0x24]     ; |
004559AC                        |.  50            push eax                            ; |hWnd = NULL
004559AD                        |.  E8 1A2BFBFF   call <jmp.&user32.SetWindowPos>     ; \SetWindowPos
004559B2                        |>  33C0          xor eax,eax
004559B4                        |.  E8 6F72FFFF   call djsetup.0044CC28
004559B9                        |.  8945 F0       mov dword ptr ss:[ebp-0x10],eax
004559BC                        |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]
004559BF                        |.  E8 84EFFFFF   call djsetup.00454948
004559C4                        |.  84C0          test al,al
004559C6                        |.  74 06         je short djsetup.004559CE
004559C8                        |.  81CB 00001000 or ebx,0x100000
004559CE                        |>  33C9          xor ecx,ecx
004559D0                        |.  55            push ebp
004559D1                        |.  68 4D5A4500   push djsetup.00455A4D
004559D6                        |.  64:FF31       push dword ptr fs:[ecx]
004559D9                        |.  64:8921       mov dword ptr fs:[ecx],esp
004559DC                        |.  53            push ebx                            ; /Style = MB_OK|MB_DEFBUTTON2|MB_APPLMODAL|MB_NOFOCUS|B60C80
004559DD                        |.  57            push edi                            ; |Title = "?
004559DE                        |.  56            push esi                            ; |Text = "?
004559DF                        |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]      ; |
004559E2                        |.  8B40 24       mov eax,dword ptr ds:[eax+0x24]     ; |
004559E5                        |.  50            push eax                            ; |hOwner = NULL
004559E6                        |.  E8 8929FBFF   call <jmp.&user32.MessageBoxA>      ; \MessageBoxA
004559EB                        |.  8945 F8       mov dword ptr ss:[ebp-0x8],eax
004559EE                        |.  33C0          xor eax,eax
004559F0                        |.  5A            pop edx                             ;  00B6B350
004559F1                        |.  59            pop ecx                             ;  00B6B350
004559F2                        |.  59            pop ecx                             ;  00B6B350
004559F3                        |.  64:8910       mov dword ptr fs:[eax],edx
004559F6                        |.  68 545A4500   push djsetup.00455A54
004559FB                        |>  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]
004559FE                        |.  3B45 E8       cmp eax,dword ptr ss:[ebp-0x18]
00455A01                        |.  74 38         je short djsetup.00455A3B
00455A03                        |.  6A 1D         push 0x1D
00455A05                        |.  6A 00         push 0x0
00455A07                        |.  6A 00         push 0x0
00455A09                        |.  8B4D BC       mov ecx,dword ptr ss:[ebp-0x44]     ;  djsetup.004043D0
00455A0C                        |.  8B55 B4       mov edx,dword ptr ss:[ebp-0x4C]
00455A0F                        |.  2BCA          sub ecx,edx
00455A11                        |.  D1F9          sar ecx,1
00455A13                        |.  79 03         jns short djsetup.00455A18
00455A15                        |.  83D1 00       adc ecx,0x0
00455A18                        |>  03CA          add ecx,edx
00455A1A                        |.  51            push ecx
00455A1B                        |.  8B55 B8       mov edx,dword ptr ss:[ebp-0x48]
00455A1E                        |.  8B45 B0       mov eax,dword ptr ss:[ebp-0x50]
00455A21                        |.  2BD0          sub edx,eax
00455A23                        |.  D1FA          sar edx,1
00455A25                        |.  79 03         jns short djsetup.00455A2A
00455A27                        |.  83D2 00       adc edx,0x0
00455A2A                        |>  03D0          add edx,eax                         ; |
00455A2C                        |.  52            push edx                            ; |X = 12F71C (1242908.)
00455A2D                        |.  6A 00         push 0x0                            ; |InsertAfter = HWND_TOP
00455A2F                        |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]      ; |
00455A32                        |.  8B40 24       mov eax,dword ptr ds:[eax+0x24]     ; |
00455A35                        |.  50            push eax                            ; |hWnd = NULL
00455A36                        |.  E8 912AFBFF   call <jmp.&user32.SetWindowPos>     ; \SetWindowPos
00455A3B                        |>  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]
00455A3E                        |.  E8 9972FFFF   call djsetup.0044CCDC
00455A43                        |.  8B45 F4       mov eax,dword ptr ss:[ebp-0xC]
00455A46                        |.  50            push eax                            ; /hWnd = NULL
00455A47                        |.  E8 E829FBFF   call <jmp.&user32.SetActiveWindow>  ; \SetActiveWindow
00455A4C                        \.  C3            retn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值