160个破解练习之2-Afkayas.1.Exe

来源:互联网 发布:苏州软件测试公司 编辑:程序博客网 时间:2024/05/16 00:47

好了,今天我们来破解这个小程序。

首先,把文件载入PEiD,查看文件的基本信息,看看是否带壳。载入后的信息如下图:

可以看到这个程序使用VB写的,不带壳,好了,可以破解了。

打开这个程序,出现弹窗

随便输入几个字符,点击OK

载入IDA,搜素文本“...Wrong”,得到以下代码:

.text:00402579 test    si, si
.text:0040257C mov     [ebp-6Ch], eax
.text:0040257F mov     [ebp-54h], ecx
.text:00402582 mov     [ebp-5Ch], eax
.text:00402585 mov     [ebp-44h], ecx
.text:00402588 mov     [ebp-4Ch], eax
.text:0040258B jz      short loc_4025E5         //若条件成立,跳转到注册失败的代码段,这里可以直接NOP掉,或者改写命令 jnz.....

.text:0040258D push    offset aYouGetIt      ; "You Get It"
.text:00402592 push    offset asc_401B9C     ; "\r\n"
.text:00402597 call    edi ; __vbaStrCat
.text:00402599 mov     edx, eax
.text:0040259B lea     ecx, [ebp-18h]
.text:0040259E call    ebx ; __vbaStrMove
.text:004025A0 push    eax
.text:004025A1 push    offset aKeygenItNow   ; "KeyGen It Now"
.text:004025A6 call    edi ; __vbaStrCat
.text:004025A8 lea     ecx, [ebp-6Ch]
.text:004025AB mov     [ebp-34h], eax
.text:004025AE lea     edx, [ebp-5Ch]
.text:004025B1 push    ecx
.text:004025B2 lea     eax, [ebp-4Ch]
.text:004025B5 push    edx
.text:004025B6 push    eax
.text:004025B7 lea     ecx, [ebp-3Ch]
.text:004025BA push    0
.text:004025BC push    ecx
.text:004025BD mov     dword ptr [ebp-3Ch], 8
.text:004025C4 call    ds:rtcMsgBox
.text:004025CA lea     ecx, [ebp-18h]
.text:004025CD call    ds:__vbaFreeStr
.text:004025D3 lea     edx, [ebp-6Ch]
.text:004025D6 lea     eax, [ebp-5Ch]
.text:004025D9 push    edx
.text:004025DA lea     ecx, [ebp-4Ch]
.text:004025DD push    eax
.text:004025DE lea     edx, [ebp-3Ch]
.text:004025E1 push    ecx
.text:004025E2 push    edx
.text:004025E3 jmp     short loc_40263B
.text:004025E5 ; ---------------------------------------------------------------------------
.text:004025E5
.text:004025E5 loc_4025E5:                   ; CODE XREF: .text:0040258Bj
.text:004025E5 push    offset aYouGetWrong   ; "You Get Wrong"
.text:004025EA push    offset asc_401B9C     ; "\r\n"
.text:004025EF call    edi ; __vbaStrCat
.text:004025F1 mov     edx, eax
.text:004025F3 lea     ecx, [ebp-18h]
.text:004025F6 call    ebx ; __vbaStrMove
.text:004025F8 push    eax
.text:004025F9 push    offset aTryAgain      ; "Try Again"
.text:004025FE call    edi ; __vbaStrCat

直接把文件载入UE,找到.text:0040258B jz      short loc_4025E5   代码所在位置,直接改成90 90 或者改成jnz的十六进制代码 即可爆破。


破解成功。

还有其他的方法:

将程序载入OD,找到上述代码处。

1.继续向上查看发现 _vbaStrCmp调用,尝试将esi变为0,过关成功!

.text:00402533 call    ds:__vbaStrCmp
.text:00402539 mov     esi, eax
.text:0040253B lea     edx, [ebp-20h]
.text:0040253E neg     esi
.text:00402540 lea     eax, [ebp-18h]


2.在弹出框位置下断点,然后直接从堆栈中得到真码和假码,重新输入,过关!


3.从验证入口点直接单步,完成注册机,过关!(此过程得出的结果为"AKA-"+itoa(17CFBH*strlen(input)+input[0]))。

 我是在一个大牛的文章里边看到的这个方法,就借鉴过来了。

0 0
原创粉丝点击