本帖最后由 cqr2287 于 2016-10-4 11:09 编辑
无聊无聊无聊,写002cm。
字体挺好看的。
下面开始分析
随便输入。看看提示啥
载入od。
f9直接运行,下MessageBoxA断点。
没断下来,那就使用f12暂停法。
[Asm] 纯文本查看 复制代码 0040261C . FF15 10414000 call dword ptr ds:[<&MSVBVM50.#rtcMsgBox>; Msvbvm50.rtcMsgBox
00402622 . 8D4D E8 lea ecx,dword ptr ss:[ebp-0x18]
呃呃呃,vb函数,怪不得断不下来。。
向上回溯,找到了提示的立即数
[Asm] 纯文本查看 复制代码 004025E3 . /EB 56 jmp short Afkayas_.0040263B
004025E5 > |68 C81B4000 push Afkayas_.00401BC8 ; UNICODE "You Get Wrong"
004025EA . |68 9C1B4000 push Afkayas_.00401B9C ; ASCII "\r"
004025EF . |FFD7 call edi ; Msvbvm50.__vbaStrCat
004025F1 . |8BD0 mov edx,eax
004025F3 . |8D4D E8 lea ecx,dword ptr ss:[ebp-0x18]
004025F6 . |FFD3 call ebx ; Msvbvm50.__vbaStrMove
004025F8 . |50 push eax
004025F9 . |68 E81B4000 push Afkayas_.00401BE8 ; UNICODE "Try Again"
004025FE . |FFD7 call edi ; Msvbvm50.__vbaStrCat
00402600 . |8945 CC mov dword ptr ss:[ebp-0x34],eax
有一个跳转跳进了失败。我们追踪它
[Asm] 纯文本查看 复制代码 0040258B . /74 58 je short Afkayas_.004025E5
0040258D . |68 801B4000 push Afkayas_.00401B80 ; UNICODE "You Get It"
00402592 . |68 9C1B4000 push Afkayas_.00401B9C ; ASCII "\r"
00402597 . |FFD7 call edi ; Msvbvm50.__vbaStrCat
00402599 . |8BD0 mov edx,eax
0040259B . |8D4D E8 lea ecx,dword ptr ss:[ebp-0x18]
0040259E . |FFD3 call ebx ; Msvbvm50.__vbaStrMove
004025A0 . |50 push eax
004025A1 . |68 A81B4000 push Afkayas_.00401BA8 ; UNICODE "KeyGen It Now"
可见,这个跳转跳过了成功,走向了失败。爆破的话,把他Nop就可以了。
追码开始
我们向上回溯,在push ecx处下段。
f9运行。
682816是什么鬼?不管他。继续f8
变成了AKA-682816
继续f8
它就是真马。
我们简单一看,就可以知道软件的算法是AKA-+根据用户名算出的字符。这个与机器码无关。
好,分析结束。
|