首页
社区
课程
招聘
[原创]第一题 WannaLOL分析
发表于: 2017-6-1 15:44 2575

[原创]第一题 WannaLOL分析

2017-6-1 15:44
2575

通过查找字符串“Registration successful !”找到其所在的关键CALL004011F4,分析如下:

004011F4   $  55            push ebp
004011F5   .  8BEC          mov ebp,esp
004011F7   .  83EC 1C       sub esp,0x1C
004011FA   .  8D45 E4       lea eax,dword ptr ss:[ebp-0x1C]
004011FD   .  6A 15         push 0x15                                ; /Count = 15 (21.)
004011FF   .  50            push eax                                 ; |Buffer = 00000031
00401200   .  68 E9030000   push 0x3E9                               ; |ControlID = 3E9 (1001.)
00401205   .  FF35 38AA4000 push dword ptr ds:[0x40AA38]             ; |hWnd = 000C01D6 (class='#32770',parent=000E04BC)
0040120B   .  FF15 A8704000 call dword ptr ds:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
00401211   .  68 F4010000   push 0x1F4                               ; /Timeout = 500. ms
00401216   .  FF15 00704000 call dword ptr ds:[<&KERNEL32.Sleep>]    ; \Sleep
0040121C   .  8D45 E4       lea eax,dword ptr ss:[ebp-0x1C]
0040121F   .  50            push eax
00401220   .  E8 DB000000   call WannaLOL.00401300                   ;  取注册码位数
00401225   .  83F8 04       cmp eax,0x4                              ;  必须为4位
00401228   .  59            pop ecx
00401229   .  0F85 A0000000 jnz WannaLOL.004012CF                    ;  非4位则失败
0040122F   .  6A 30         push 0x30
00401231   .  59            pop ecx
00401232   .  384D E4       cmp byte ptr ss:[ebp-0x1C],cl            ;  第1位:非0
00401235   .  0F84 94000000 je WannaLOL.004012CF
0040123B   .  384D E5       cmp byte ptr ss:[ebp-0x1B],cl            ;  第2位:非0
0040123E   .  0F84 8B000000 je WannaLOL.004012CF
00401244   .  384D E6       cmp byte ptr ss:[ebp-0x1A],cl            ;  第3位:非0
00401247   .  0F84 82000000 je WannaLOL.004012CF
0040124D   .  384D E7       cmp byte ptr ss:[ebp-0x19],cl            ;  第4位:非0
00401250   .  74 7D         je short WannaLOL.004012CF
00401252   .  807D E4 31    cmp byte ptr ss:[ebp-0x1C],0x31          ;  第1位:1
00401256   .  75 77         jnz short WannaLOL.004012CF
00401258   .  807D E5 35    cmp byte ptr ss:[ebp-0x1B],0x35          ;  第2位:5
0040125C   .  75 71         jnz short WannaLOL.004012CF
0040125E   .  74 03         je short WannaLOL.00401263
00401260   .  75 01         jnz short WannaLOL.00401263
00401262      E8            db E8
00401263   >  66:B8 0800    mov ax,0x8
00401267   .  66:35 0700    xor ax,0x7
0040126B   .  0FBE45 E6     movsx eax,byte ptr ss:[ebp-0x1A]         ;  第3位->eax
0040126F   .  2BC1          sub eax,ecx                              ;  第3位 -30
00401271   .  8945 FC       mov dword ptr ss:[ebp-0x4],eax           ;  (第3位 -30) -> [0012f8b0]
00401274   .  0FBE45 E4     movsx eax,byte ptr ss:[ebp-0x1C]         ;  第1位 -> eax
00401278   .  DB45 FC       fild dword ptr ss:[ebp-0x4]              ;  '第3位' - 30 -> 压入st---------
0040127B   .  2BC1          sub eax,ecx                              ;  第1位 -30
0040127D   .  8945 FC       mov dword ptr ss:[ebp-0x4],eax           ;  (第1位 -30) -> [0012f8b0]
00401280   .  0FBE45 E5     movsx eax,byte ptr ss:[ebp-0x1B]         ;  第2位->eax
00401284   .  DB45 FC       fild dword ptr ss:[ebp-0x4]              ;  (第1位 -30) -> 压入st   1---------
00401287   .  2BC1          sub eax,ecx
00401289   .  8945 FC       mov dword ptr ss:[ebp-0x4],eax           ;  (第2位 -30) -> [0012f8b0]    5
0040128C   .  DA75 FC       fidiv dword ptr ss:[ebp-0x4]             ;  st(0) <- st(0) /(第2位 -30)  即  st0=1/5=0.2----------
0040128F   .  0FBE45 E7     movsx eax,byte ptr ss:[ebp-0x19]         ;  第4位->eax
00401293   .  2BC1          sub eax,ecx                              ;  第4位- 30
00401295   .  8945 FC       mov dword ptr ss:[ebp-0x4],eax           ;  (第4位- 30) -> [0012f8b0]
00401298   .  DEE9          fsubp st(1),st                           ;  st0 = st1 - st0----------
0040129A   .  DA4D FC       fimul dword ptr ss:[ebp-0x4]             ;  st(0) <- st(0) * (第4位- 30)-------------------
0040129D   .  D80D 1C714000 fmul dword ptr ds:[0x40711C]             ;  st0 *= ds:[0x40711C]    16--------------------
004012A3   .  D95D FC       fstp dword ptr ss:[ebp-0x4]              ;  st0 -> [0012f8b0]
004012A6   .  74 03         je short WannaLOL.004012AB
004012A8   .  75 01         jnz short WannaLOL.004012AB
004012AA      E8            db E8
004012AB   >  66:B8 0800    mov ax,0x8
004012AF   .  66:35 0700    xor ax,0x7
004012B3   .  D945 FC       fld dword ptr ss:[ebp-0x4]               ;  st0 <- [0012f8b0]
004012B6      D81D 18714000 fcomp dword ptr ds:[0x407118]            ;  ds:[0x407118] 与 st0比较    384.00----------------
004012BC   .  6A 00         push 0x0
004012BE   .  68 78804000   push WannaLOL.00408078                   ;  CrackMe 2017 CTF
004012C3   .  DFE0          fstsw ax                                 ;  保存状态字的值到AX  AX<- MSW
004012C5   .  9E            sahf                                     ;  把AH内容装入标志寄存器
004012C6   . /75 0E         jnz short WannaLOL.004012D6              ;  关健比较
004012C8   .  68 5C804000   push WannaLOL.0040805C                   ;  Registration successful !
004012CD   .  EB 0C         jmp short WannaLOL.004012DB
004012CF   >  6A 00         push 0x0
004012D1   .  68 48804000   push WannaLOL.00408048                   ;  CrackMe 2017 CTF v2
004012D6   >  68 40804000   push WannaLOL.00408040                   ;  error !
004012DB   >  FF35 34AA4000 push dword ptr ds:[0x40AA34]             ; |hOwner = 000E04BC ('PEDIY CTF 2017',class='myWindowClass')
004012E1   .  FF15 AC704000 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA

解析如下:

注册码必须为4位,用B1B2B3B4表示,须满足3个条件:

1B1 = 0x31,即字符’1’

2B2 = 0x35,即字符’5’

3( ( ( B3 – 0x30 - 0.2 ) * ( B4 -0x30 ) ) * 16 = 384.00

 

B3=0x35时,可计算出B4=0x35,所以一组答案为1555



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//