吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 4493|回复: 20

[原创逆向图文] 玄奥八字爆破分析

  [复制链接]
李沉舟 发表于 2017-4-4 15:23 | 显示全部楼层 |阅读模式

本帖最后由 镜中神无 于 2017-4-4 15:28 编辑

【软件名称】玄奥八字
【软件官网】http://xazhouyi.com
【编写语言】Borland C++ Builder
【所需工具】Restorator、OllyDbg、WinHex、自写的一个Delphi Debug
【分析说明】没有其他意思,只是学习爱好

本人学艺不精,乃是菜鸟一只,如有错误,还望指正。

不过听一朋友说紫微斗数比四柱命理准,反正我也不确定是不是对的,我个人觉得准不准就看用神。

首先,下载安装,用DeDe扫描发现是Borland C++ Builder写的。
1.png
我汗,顿时懵逼了,第一次搞BC++的程序,话说Windows平台上的C/C++编译器不是应该都标配VC了吗?吐槽一个。

BC++和Delphi都用的是VCL框架,我想按钮事件的找法应该是差不多的,老套路了,用Restorator打开,在RCDATA类型资源里面果然发现了编译后的窗体信息。

2.png

准确定位到那个窗口是因为Reg(注册)字样的关系,一般命名都是这样的规范,然后在里面在TButton类的实例,发现只有一个Button1,记下OnClick事件名称,是“Button1Click”

打开WinHEX,打开主程序,按Ctrl+F,搜索

3.png

注意会一般会搜索到实际结果数目 x 2,因为有些是事件地址结构,有些是资源本身。

还有Delphi的string结构是这样的

字符串长度(DWORD) 字符串

不是Windows默认的以0结尾的字符串,二者谁优谁劣,实难断言。

如果没有搜到准确的,按F3可以继续搜索。

4.png

IA-32处理器采用“低对低,高对高”的小端方式,就是说,一个数字,在内存中是高字节储存在高地址,低字节储存在低地址。

记下这个地址458338

然后我们一共会找到3个地址,458338、4586BC、459E54

打开OD,载入程序,在这3个地址上面下断点,然后F9运行程序。

5.png

6.png

点击确定后,发现程序中断在

00459E54  /.  55            push ebp

研究一下这块函数

00459F12  |.  83F8 0F       cmp eax,0xF

00459F15  |. /74 0D         je short BaZi.00459F24  //这里应该是比较注册码位数,如果等于15就跳走。
00459F17  |. |8B45 B0       mov eax,[local.20]
00459F1A  |. |E8 1DA50E00   call BaZi.0054443C
00459F1F  |. |E9 6A020000   jmp BaZi.0045A18E
00459F24  |> \8B55 B0       mov edx,[local.20]


我们假设这个注册码位数比较成立,继续往下面看,发现这里有个有意思的东西。


0045A03C  |.  E8 5FF1FFFF   call BaZi.004591A0
0045A041  |.  59            pop ecx                                  ;  BaZi.00559BCA
0045A042  |.  84C0          test al,al
0045A044  |.  0F84 44010000 je BaZi.0045A18E
0045A04A  |.  FF35 90266D00 push dword ptr ds:[0x6D2690]
0045A050  |.  E8 9FF2FFFF   call BaZi.004592F4
0045A055  |.  59            pop ecx                                  ;  BaZi.00559BCA
0045A056  |.  84C0          test al,al
0045A058  |.  0F84 30010000 je BaZi.0045A18E
0045A05E  |.  FF35 90266D00 push dword ptr ds:[0x6D2690]
0045A064  |.  E8 F7F3FFFF   call BaZi.00459460
0045A069  |.  59            pop ecx                                  ;  BaZi.00559BCA
0045A06A  |.  84C0          test al,al
0045A06C  |.  0F84 1C010000 je BaZi.0045A18E


这些JE都跳向同一个地方,我们去那个地址看看,

0045A18E  |> \8B45 B0       mov eax,[local.20]
0045A191  |.  66:83B8 38030>cmp word ptr ds:[eax+0x338],0x3
0045A199  |.  75 56         jnz short BaZi.0045A1F1
0045A19B  |.  6A 10         push 0x10
0045A19D  |.  68 B7545E00   push BaZi.005E54B7
0045A1A2  |.  68 8E545E00   push BaZi.005E548E
0045A1A7  |.  8B45 B0       mov eax,[local.20]
0045A1AA  |.  E8 494D1000   call BaZi.0055EEF8
0045A1AF  |.  50            push eax                                 ; |hOwner = 00DAD158
0045A1B0  |.  E8 77C51500   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
0045A1B5  |.  8B15 90266D00 mov edx,dword ptr ds:[0x6D2690]
0045A1BB  |.  8955 D8       mov [local.10],edx
0045A1BE  |.  837D D8 00    cmp [local.10],0x0


这里调用了一个MessageBoxA,而注册失败是没有提示的,这也就是我们要找按钮事件的原因。

test指令其实就是and(求与)指令,不过test指令不会保存结果,就像cmp和sub的关系。
与操作是逻辑运算,要求两个参加运算的数都相等(1),否则结果为假(0)【二进制运算】
test al,al 表示,al如果为0,则EFlags中,ZF标志位设为1,否则ZF是0。

因为任何数与自身进行与操作,结果不变。

JE是ZF = 1的时候跳转的,也就是说,这个al如果为0就会跳走。

先在3个JE上面下好断点,输入15位注册码,然后点击确定,程序断下来了。

发现al寄存器是0,根据取反规则可知,注册码正确和不正确是相反的,我们尝试把3个CALL的返回值全部改为1尝试。

修改数据如下:
004591A0      B0 01         mov al,0x1
004591A2      C3            retn


004592F4      B0 01         mov al,0x1
004592F6      C3            retn


00459460      B0 01         mov al,0x1
00459462      C3            retn


然后F9运行,重新输入15位注册码尝试。

确实是注册成功了,但是仍然没有提示啊,看来开头估计出错了。

保存以后打开,发现成功。

然后我就在想,BC++的按钮事件特征码会不会和Delphi一样,找到了我以前写的一个Delphi Debug,下载见,https://www.52hb.com/thread-28648-1-1.html

7.png

WTF?我也是现在才知道这个梗……

评分

参与人数 19威望 +1 HB +37 THX +8 收起 理由
消逝的过去 + 2
xiaoxixpj + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
sjtkxy + 1 + 1
EMT + 1 + 1
一路走来不容易 + 1
冷亦飞 + 1
kway + 1
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
zm315857235 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
lies + 1
叶落花开 + 2
DDK4282 + 1 + 1 [快捷评语] - 评分=感谢您的作品!
L灬淡定丶 + 1 [快捷评语] - 2017,让我们17学破解!
小柒 + 1 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
lily3521 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
Shark恒 + 1 + 20 + 1 虽然有点小问题,但不影响大局,讲解很细致,喜欢楼主教程的风格!
因素 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
雨语 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
开始学习ing + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2017-4-4 21:22 | 显示全部楼层

虽然有点小问题,但不影响大局,讲解很细致,喜欢楼主教程的风格!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
lily3521 发表于 2017-4-4 22:09 | 显示全部楼层

大鲨鱼都发话了,赞赞。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
123-木头人 发表于 2017-4-4 22:27 来自手机端 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
小值是个小白 发表于 2017-4-5 11:55 | 显示全部楼层

虽然我还是在最最最初级入门阶段,纯白纸什么都不懂.但是看到别人发的教程帖子.总是很激动!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
leyou 发表于 2017-4-6 09:14 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
hdx253 发表于 2017-4-6 12:13 | 显示全部楼层

支持原创~学习
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
别管我了行 发表于 2022-4-21 02:21 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
4957465 发表于 2022-4-21 10:15 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
4957465 发表于 2022-4-21 10:59 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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