吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3233|回复: 2
收起左侧

[原创] 160 CrackMe 002

[复制链接]
Teak 发表于 2019-3-3 22:22
本帖最后由 Teak 于 2019-3-30 20:38 编辑

160Crackme之002 Afkayas.1

1.        F9 运行,然后输入账户和密码11111  12345 ,如下图所示

1.png
2. F12暂停,点击k,寻找这个弹窗的函数,如下图所示:

2.png
Crakme 001已经说过了,77地址开头的不用看,这个应该不是c++写的,弹窗函数叫rtcMsgBox(应该和MessageBox一样弹窗吧,百度即可验证),
然后右键显示调用,在反汇编窗口中跟随,鼠标往上滚,如下图所示
3.png

3.在图示地址rtcMsgBox中下断,途中两个的字符You Get Wrong和Try again是rtcMsgBox所需的参数,
why?因为弹窗的时候有这些字符,肯定传给rtcMsgBox了;从图中向下的红色箭头指向004025E5,
说明经过红色箭头起始地方的判断才跳转到4025e5,往上查看,判断的地方下断,如下图所示:
4.png

4.接下来,鼠标继续往上走,找一个像call之后入栈的地方,如 push ebp,该push ebp上面有nop或是retn的很可能就是我们要找的。
往上翻滚许久,终于发现了我们想要的。
5.png
5.接下来F8大法,找找哪里传入11111或12345;
首先在push ebp处下断,然后继续运行,等程序再弹一遍,我们再点击一遍 确定,然后再点ok,程序会在push ebp处停下来,如下图所示:

6.png
6.        F8大法,开始找输入11111或12345,找到有2处,时间可能有点长,但能加深印象,我可是从头跟到尾的,
如下图所示,单步F8的时候,找到一个比较有趣的数字和一个有趣的字符AKA-  487704,猜想可能就是我们想要的,
可以单独运行程序去验证想法
   7.png


如下图所示,在402523这个地方的call,由于运行到该call的下一条指令了,call的函数已经变了,
该call的作用是将AKA-与487704连接在一起。

8..png
7.        再跑一遍程序,看看哪个地方生成487704,单步F8,如下图所示:
里面的注释是我F8时写上去的,反复验证,其中的步骤你得去单步体会
9.png
由上图可以发现,487704是由地址为40243f的系统call生成的,既然是系统的函数肯定就是实现某个功能,
它传递了一个参数edi,edi=77118,然后生成的487704,吃过了CrackMe 001的亏,我没跟了,先直接换算看看,
结果发现0x77118=487704(10进制),验证了猜想。
算法的核心代码如下:
[Asm] 纯文本查看 复制代码
00402412   .  50            push eax                                                    ; /eax=164c6c [eax]=11111 输入的字符串
00402413   .  8B1A          mov ebx,dword ptr ds:[edx]                                  ; |ebx=9e4950
00402415   .  FF15 E4404000 call dword ptr ds:[<&MSVBVM50.__vbaLenBstr>]                ; \eax=5..计算字符串长度
0040241B   .  8BF8          mov edi,eax                                                 ;  edi=5
0040241D   .  8B4D E8       mov ecx,dword ptr ss:[ebp-0x18]                             ;  ecx=[12f4c8]=11111
00402420   .  69FF FB7C0100 imul edi,edi,0x17CFB                                        ;  edi=edi(5)*17cfb=770e7
00402426   .  51            push ecx                                                    ; /String = "?"
00402427   .  0F80 91020000 jo Afkayas_.004026BE                                        ; |
0040242D   .  FF15 F8404000 call dword ptr ds:[<&MSVBVM50.#rtcAnsiValueBstr_516>]       ; \返回字符串的第一个字符,eax=31,edx=163dee,[edx]=1111
00402433   .  0FBFD0        movsx edx,ax                                                ;  edx=31
00402436   .  03FA          add edi,edx                                                 ;  edi=770e7+31=77118
00402438   .  0F80 80020000 jo Afkayas_.004026BE
0040243E   .  57            push edi
0040243F   .  FF15 E0404000 call dword ptr ds:[<&MSVBVM50.__vbaStrI4>]                  ;  msvbvm50.__vbaStrI4
00402445   .  8BD0          mov edx,eax                                                 ;  /eax=15e68c,[eax]="487704" edx=487704
00402447   .  8D4D E0       lea ecx,dword ptr ss:[ebp-0x20]                             ;  ecx=12f4c0
0040244A   .  FF15 70414000 call dword ptr ds:[<&MSVBVM50.__vbaStrMove>]                ;  msvbvm50.__vbaStrMove
00402450   .  8BBD 50FFFFFF mov edi,dword ptr ss:[ebp-0xB0]                             ;  edi=[12f430]=91b524

简单来说,就是取你输入“11111”的字符串长度,然后乘以0x17cb,然后加上第一个字符串的ascii码0x31,即5*17cfb+31=77118   0x77118=(10进制)487704.

Python3:

str=input("请随便输入一个账户,如11111:")
print("生成的密码为:"+"AKA-"+"%d"%(len(str)*0x17cfb+ord(str[0])))
上述若有不到之处,请望指正

免费评分

参与人数 1威望 +1 吾爱币 +7 热心值 +1 收起 理由
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hjm666 发表于 2019-3-4 09:13
直接断下关键API函数可以不走弯路
 楼主| Teak 发表于 2019-3-4 10:21
hjm666 发表于 2019-3-4 09:13
直接断下关键API函数可以不走弯路

简单的软件确实很快发现关键call,不过对于新手来说,这需要一段时间,因为过程很重要
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-4 08:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表