首页
社区
课程
招聘
[原创]简单分析“WannaLOL”注册码 大牛路过。新手勿进。斑竹置顶!!
2017-6-1 21:25 4702

[原创]简单分析“WannaLOL”注册码 大牛路过。新手勿进。斑竹置顶!!

2017-6-1 21:25
4702

原题地址:http://ctf.pediy.com/?game-fight-31.htm

1.载入OD后 BP GetWindowTextA 下断,

2.F9 运行,

3.随便输入一个字符串(尽量不要相同)我这里就输入123456

点击(Register)此时被断下。CTRL+F9 执行到返回。一直返回到程序领空。

单步走几下发现如下信息:

这就说明,注册吗在这段代码之间进行了一个判断。现在只要分析中间这段代码就ok!为什么是这样?

下面具体来说明下,首先下断的是GetWindowTextA这个API。这个API简单的理解就是获取用户输入文本的一个函数。MessageBoxA弹出消息框。不管成功失败给出提示信息。由此我们可以分析出。注册码在中间这段代码之间进行了比较。所以分析中间这段就ok.清楚了这点之后  我们就在返回到程序领空的第一行下断。

在点击注册按钮。

断在这个位置。单步F8.

下面这个CALL传入我们输入的注册码。先不管他。路过(步过)。因为下这个call的返回值和4进行了比较猜测他是获取输入注册码长度的一个函数。在看看后面又有4个和CL比较。而这个EBP-1C这个地址,指向的是我们输入的中注册码的ascii的值。
00401232   ·  384D E4       CMP     BYTE PTR SS:[EBP-1C], CL
00401235   ·▼ 0F84 94000000 JE      WannaLOL2.004012CF
0040123B   ·  384D E5      CMP     BYTE PTR SS:[EBP-1B], CL
0040123E   ·▼ 0F84 8B000000 JE      WannaLOL2.004012CF
00401244   ·  384D E6      CMP     BYTE PTR SS:[EBP-1A], CL
00401247   ·▼ 0F84 82000000 JE      WannaLOL2.004012CF
0040124D   ·  384D E7      CMP     BYTE PTR SS:[EBP-19], CL

为了使这段中的跳转不实现。(假如实现了就提示注册失败"ERROR")

注册码长度为4位切ascii的值不是30(0).

接着之后是。和31 35 比较。31对应的是1   35对应的是5(可以查ascii对照表)

说明注册码第一位和第二位为 31(1)、35(5).

将注册码改为“1534”(本着不重复的原则)高低位对新手朋友不好区分。不重复的话就很容易分辨出是第几位。

接着单步往下看

由于上面的代码并没有对ebp进行赋值。所有ebp-1c还是只想注册码ascii的地址

这里过程大致和上面一段差不多,变成浮点运算而已。逐位去除ASCII值 减去30 参与后面的计算。

计算结果等于384则注册成功。

总结下就一个方程式  (x-0.2)*y=384/16=24(384除以16等于24)

16在这里是个浮点常量

x ,y 分别是第三四位的ASCII值减去30

简化下方程式  xy+0.8y=24  这里x=x+1;这里很明显就能看出来y是等于5的。首先ascii没有小数 切x  y是小于10的

且不等0的。 所以满足0.8y是个整数的只有5.然后可以算出x=4。前面是说了x=x+1所以x=5;所以ascii码为35(5)   35(5)

注册码为1555

好吧。既然你不服那就用段代码来证明下

最后如图:



[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (2)
雪    币: 187
活跃值: (128)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Baymax 2017-8-30 16:13
2
0

1

雪    币: 29
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
f4800 2020-4-15 21:06
3
0
大神牛贴  新手学习啦  。。
游客
登录 | 注册 方可回帖
返回