首页
社区
课程
招聘
[原创]肯定会有许多新手会遇到此问题,来看"爆破我"
2015-7-3 14:08 6938

[原创]肯定会有许多新手会遇到此问题,来看"爆破我"

2015-7-3 14:08
6938
学习逆向过程,最简单的就是参考字符串,以及断点MessageBox函数去找关键判断。

本程序避免了这两种方式,使用自定义窗体代替MessageBox。 应该能难到许多新手吧。

程序有3处要爆破:
1.菜单点击
2.工具栏按钮
3.工具栏下拉按钮

爆破成功会弹出成功爆破的窗口显示。

***这个crackme是我的弱点,希望爆破成功的大师能传授一点经验,如果寻找窗体打开之前的关键call。

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

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (17)
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hystat 2015-7-3 14:14
2
0
上传的附件:
雪    币: 443
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gs笨笨 2015-7-3 16:16
3
0
1、打开WinHex
2、Alt+G,输入偏移 2307A0(十六进制)
3、修改字节F8 13,改成:78 11
4、保存文件。
附上菜鸟修改过的文件,如有更好破解方法的请大侠告之。
BlowMe.rar
上传的附件:
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hystat 2015-7-3 16:27
4
0
[QUOTE=gs笨笨;1379196]1、打开WinHex
2、Alt+G,输入偏移 2307A0(十六进制)
3、修改字节F8 13,改成:78 11
4、保存文件。
附上菜鸟修改过的文件,如有更好破解方法的请大侠告之。
BlowMe.rar[/QUOTE]

能不能传授一下,你找判断的思路啊?谢谢啦!  

另外想请问一下,为什么你只改一处就实现了三个地方都成功了?  我的代码是三处判断。
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
goddkiller 2015-7-3 16:38
5
0
第一处 - “注册”

00631EC8  |.  BA 02000000   mov     edx, 0x2
上面的0x2改为1即可

程序会走到
00631F1F >|> \33C9          xor     ecx, ecx                                                                  
00631F21  |.  B2 01         mov     dl, 0x1
00631F23  |.  A1 20116300   mov     eax, dword ptr [0x631120]
00631F28  |.  E8 B3AFF8FF   call    <Vcl::Forms::TCustomForm::TCustomForm(System::Classes::TComponent *)>

这里就是弹出爆破成功的对话框,此时记住这个0x631120这个值,因为这个是success_form3的位置
00631120 >00631178  <BlowMe._cls_frmSuccess_TForm3>

第二处 - “下拉注册”

程序走到这里
00631EE8  |.  33C9          xor     ecx, ecx
00631EEA  |.  B2 01         mov     dl, 0x1
00631EEC  |.  A1 A0136300   mov     eax, dword ptr [0x6313A0]
00631EF1  |.  E8 EAAFF8FF   call    <Vcl::Forms::TCustomForm::TCustomForm(System::Classes::TComponent *)>

我们会现调用的代码是一样的,只是传给eax不一样而已,这里的eax的值为
006313A0 >006313F8  <BlowMe._cls_frmFaile_TForm2>

因此我们只要把这里的0x6313A0改成0x631120就行了

第三处 - “菜单-注册”

这里我们发现程序会走到

00631E8C      A1 FC3F6400   mov     eax, dword ptr [0x643FFC]
00631E91  |.  8B00          mov     eax, dword ptr [eax]
00631E93  |.  E8 7810F9FF   call    <Vcl::Forms::TCustomForm::Show(void)>

我们同样观察下0x643FFC这个值,在程序执行到00631E91这里的时候注意看下eax里面是什么

0064A7D0  00000000
0064A7D4  01EFF510   //这个是成功爆破的对话框
0064A7D8  01EFF150   --> 这个值就是正常走的逻辑
0064A7DC  01EFF8D0
0064A7E0  01F12520

我们看下01EFF150里面是什么东西

01EFF150  006313F8  <BlowMe._cls_frmFaile_TForm2>
01EFF154  01F3CE10
01EFF158  01F530EC  UNICODE "Form2"

其他的值为:
01EFF510  00631178  <BlowMe._cls_frmSuccess_TForm3>
01EFF514  01F3CE10
01EFF518  01F538AC  UNICODE "Form3"

01EFF8D0  00631674  <BlowMe._cls_frmAboat_TForm4>
01EFF8D4  01F3CE10
01EFF8D8  01F53A8C  UNICODE "Form4"

01F12520  006318F0  <BlowMe._cls_frmMain_TForm1>
01F12524  01F3CE10
01F12528  01F52FAC  UNICODE "Form1"

到这里就很明显了,这个mov eax,[eax]显然是在选择要显示的对话框

我们只要搜下0064A7D4这个全局变量是谁在存放就行了,我们发现是下面这里存放了

00643D58  0064A7D4  BlowMe.0064A7D4

我们想要的值,改就很简单了,直接把0x643FFC替换成0x000643D58就行了
上传的附件:
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hystat 2015-7-3 16:45
6
0
大哥,怎么断点呢?  我不知怎么下手,没有 MessageBox弹出,也没有字符串参考。
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hystat 2015-7-3 16:49
7
0
爆破思路从哪开始下手呢? 求大侠赐教。
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
goddkiller 2015-7-3 16:55
8
0
他这个是比较取巧的方法,因为你失败的地方全调用form2.了,他只是把调用form2的地方换成了

success_form3
雪    币: 443
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gs笨笨 2015-7-3 16:55
9
0
兄弟的程序只是把成功的窗口隐藏起来了,点击的时候就把失败的窗口给显示出来。只要把显示失败替换成显示成功的就会全部显示成功了。
语文从来没及格,表达能力特别差,不知道兄弟能否看明白?
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hystat 2015-7-3 17:03
10
0
原来是这样的。我在做的时候也想过这个问题,到底是一开始把窗口全部创建还是用到时再用局部变量创建。没想到全局的更容易攻破。

另外,我用od根本找不到任何可用的字符串信息?  您是如何做到的?
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hystat 2015-7-3 17:04
11
0
您一说我也明白了,成功窗口在一开始创建好了,其实是个全局变量。

您是怎样找到这些有用的数据呢?  一开始总要断个点什么的吧?
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hystat 2015-7-3 17:22
12
0
再改了一下,不创建全局对象。 改了unit的名称。

希望大侠能教点思路啊。
上传的附件:
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
goddkiller 2015-7-3 17:25
13
0
PE Explorer  找到对应的按钮事件代码即可。
上传的附件:
  • 1.png (33.63kb,31次下载)
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
goddkiller 2015-7-3 17:36
14
0
这个一样没啥用~~~~
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hystat 2015-7-3 17:38
15
0
大哥,那个PE Explorer太强大了,我按钮里的代码你全看到了,那怎么改都没啥用啊,唯一有用的只能是加大代码复杂程度了。
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hystat 2015-7-3 21:55
16
0
大神,能否再请教一下,如果我要让注册按钮点击没反应,在反汇编中应该怎样做呢?  假如这个click的代码太多,逐一nop太费事了。
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hystat 2015-7-4 00:33
17
0
请教大神,为什么你贴出来的码有很多vcl的参考信息?  我的od中没有,如何才能显示这些vcl信息?
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
我很懒 2015-8-30 18:42
18
0
新手看到这个还是头痛啊。。  具体怎么让破?
游客
登录 | 注册 方可回帖
返回