小菜鸟一枚 发表于 2020-3-30 13:50

学破解第100天,《仿QQ截图工具》学习

# 学破解第100天,《仿QQ截图工具》学习
前言:
  一直对黑客充满了好奇,觉得黑客神秘,强大,无所不能,来论坛两年多了,天天看各位大佬发帖,自己只能做一个伸手党。也看了官方的入门视频教程,奈何自己基础太差,看不懂。自我反思之下,决定从今天(2019年6月17日)开始定下心来,从简单的基础教程开始学习,希望能从照抄照搬,到能独立分析,能独立破解。
不知不觉学习了好几个月,发现自己离了教程什么都不会,不懂算法,不懂编程。随着破解学习的深入,楼主这个半吊子迷失了自我,日渐沉迷水贴装X,不能自拔。
==========申明:从第71天楼主开始水贴装X,帖子不再具有连续性,仅供参考,后续帖子为楼主YY专用贴!!!==========

立帖为证!--------记录学习的点点滴滴

## 0x1直接上OD
  1.就不查壳了,直接丢OD
```
00403831 >/$55            push ebp
00403832|.8BEC          mov ebp,esp
00403834|.6A FF         push -0x1
00403836|.68 F0624000   push 仿QQ截图.004062F0
0040383B|.68 A44C4000   push 仿QQ截图.00404CA4                      ;SE 处理程序安装
00403840|.64:A1 0000000>mov eax,dword ptr fs:
00403846|.50            push eax
00403847|.64:8925 00000>mov dword ptr fs:,esp
0040384E|.83EC 58       sub esp,0x58
00403851|.53            push ebx
00403852|.56            push esi
00403853|.57            push edi
00403854|.8965 E8       mov ,esp
00403857|.FF15 48604000 call dword ptr ds:[<&KERNEL32.GetVersion>;kernel32.GetVersion
```
看入口特征,应该是无壳,易语言编写的。

## 0x2运行软件,寻找爆破点
&emsp;&emsp;1.看着这我就知道我们要做的就是破解注册功能


&emsp;&emsp;2.点击注册,提示错误的注册码,有了对话框,自然就能想到messageBOX堆栈窗口回溯,下断点,运行程序,然后点击注册按钮,看堆栈窗口
```
0012F3D8   100622C6/CALL 到 MessageBoxA 来自 krnln.100622C0
0012F3DC   00000000|hOwner = NULL
0012F3E0   00228FF0|Text = "错误的注册码"
0012F3E4   004094A6|Title = "提示"
0012F3E8   00002040\Style = MB_OK|MB_ICONASTERISK|MB_TASKMODAL
```

接下就开始Ctrl+F9,然后F8,反复循环,回溯到调用弹窗的call
```
0042D194    E8 E06C0000   call 仿QQ截图.00433E79   ;就是它
0042D199    83C4 28         add esp,0x28
0042D19C    8B5D FC         mov ebx,dword ptr ss:
```

&emsp;&emsp;3.接下来就是找关键跳了,咋也不去翻,直接段首F2下断点,然后取消messageBOX断点,再次点击注册,什么也不输入,成功的断在了
```
0042CFB2    55            push ebp
0042CFB3    8BEC            mov ebp,esp
0042CFB5    81EC 08000000   sub esp,0x8
0042CFBB    6A FF         push -0x1
0042CFBD    6A 08         push 0x8
0042CFBF    68 0F010116   push 0x1601010F
0042CFC4    68 02010152   push 0x52010102
```

一路F8单步走,注意大跳转,走着走着,这里大跳了,后面紧跟着的就是失败的messageBOX了
```
0042D0E4    E8 37ECFFFF   call 仿QQ截图.0042BD20
0042D0E9    85C0            test eax,eax
0042D0EB    0F84 60000000   je 仿QQ截图.0042D151
```

&emsp;&emsp;4.想必0042D0EB这就是关键跳了,直接nop,运行程序,果然看到注册成功的提示语


试试修改图片质量,发现,拖不动???


纳尼,不是已经爆破成功了吗?咋还是不能修改呢?

&emsp;&emsp;5.我们找到了关键跳,发现直接nop行不通,关键跳上面一般就是关键call,所以仔细观察,调用一个call,然后eax为0就跳转,我直接F4到0042D0E4这一行,此时eax的值为:

爆破成功了,可以随意修改图片质量。

## 0x3通过启动程序时破解
&emsp;&emsp;1.我们看到关键call,retn后程序打开,显示已注册,那么我能不能在启动程序时,破解掉它的验证呢?重新载入程序,一路F8,程序跑起来就跟进去
```
004038FA|.E8 3BD8FFFF   call 仿QQ截图.0040113A   ;第一次这里跑起来,F7进去再F8

004014E1|.FFD0          call eax         ;第二次这里跑起来,F7进去再F8

10029A66    E8 04F5FFFF   call krnln.10028F6F    ;第三次这里跑起来,F7进去再F8

10029A66    E8 04F5FFFF   call krnln.10028F6F   ;第四次这里跑起来,F7进去再F8
;......省略n步重复步骤,来到了
00433E32    E8 1E000000   call 仿QQ截图.00433E55
00433E37    83C4 04         add esp,0x4
00433E3A    6A 00         push 0x0
00433E3C    E8 0E000000   call 仿QQ截图.00433E4F
```

&emsp;&emsp;2.此时搜索字符串出现了,标题名,已注册,质量等字样


从已注册进去,来到了
```
0042BB47    E8 D4010000   call 仿QQ截图.0042BD20
0042BB4C    85C0            test eax,eax
0042BB4E    0F84 FA000000   je 仿QQ截图.0042BC4E
0042BB54    6A 00         push 0x0
0042BB56    68 01000000   push 0x1
0042BB5B    6A FF         push -0x1
0042BB5D    6A 06         push 0x6
0042BB5F    68 06000116   push 0x16010006
0042BB64    68 01000152   push 0x52010001
0042BB69    E8 11830000   call 仿QQ截图.00433E7F
0042BB6E    83C4 18         add esp,0x18
0042BB71    6A 00         push 0x0
0042BB73    68 99000000   push 0x99                              ; 已注册
```

此时程序主窗口还未出现,这里的字符串都是主窗口显示的,那还用说了,启动时验证在这,上面0042BB4E就是关键跳,0042BB47这个就是关键call,在关键call这里回车进去,直接retn返回,程序跑起来,直接显示已注册。


## 0x4去掉弹网页
&emsp;&emsp;1.程序关闭时,居然还弹了网页(http://wan3d.com/),不能忍,下ShellExecuteA断点,运行程序,然后叉掉程序,看堆栈窗口
```
0012EB58   1003C95E/CALL 到 ShellExecuteA 来自 krnln.1003C958
0012EB5C   00000000|hWnd = NULL
0012EB60   100E3BEC|Operation = "open"
0012EB64   00AD39E0|FileName = "http://wan3d.com"
0012EB68   00000000|Parameters = NULL
0012EB6C   00000000|DefDir = NULL
0012EB70   00000005\IsShown = 0x5
```

回车来到了,还记得前面的学习内容吧,直接5个push加call一起nop掉即可!
```
1003C94B|.55            push ebp                                 ; /IsShown = 0x5
1003C94C|.6A 00         push 0x0                                 ; |DefDir = NULL
1003C94E|.6A 00         push 0x0                                 ; |Parameters = NULL
1003C950|.51            push ecx                                 ; |FileName = "http://wan3d.com"
1003C951|.68 EC3B0E10   push krnln.100E3BEC                      ; |Operation = "open"
1003C956|.6A 00         push 0x0                                 ; |hWnd = NULL
1003C958|.FF15 C0340C10 call dword ptr ds:[<&SHELL32.ShellExecut>; \ShellExecuteA
```

&emsp;&emsp;2.呃,保存不出去,这好像是在系统call里面,那咱不nop这里了,直接CTRL+F9和F8跟出去,找到真正的call,n多次之后,终于跟出来了
```
00433A71   /0F85 3E000000   jnz 仿QQ截图.00433AB5
00433A77   |6A 00         push 0x0
00433A79   |68 52CC4100   push 仿QQ截图.0041CC52                      ; http://wan3d.com
00433A7E   |6A FF         push -0x1
00433A80   |6A 0B         push 0xB
00433A82   |68 72030116   push 0x16010372
00433A87   |68 01000152   push 0x52010001
00433A8C   |E8 EE030000   call 仿QQ截图.00433E7F
00433A91   |83C4 18         add esp,0x18
00433A94   |68 1D000100   push 0x1001D
00433A99   |68 72030116   push 0x16010372
00433A9E   |68 01000152   push 0x52010001
00433AA3   |68 01000000   push 0x1
00433AA8   |BB B4060000   mov ebx,0x6B4
00433AAD   |E8 C7030000   call 仿QQ截图.00433E79
00433AB2   |83C4 10         add esp,0x10
```
00433A71这个直接改成jmp了,关闭程序,再也不会弹网页了,复习一下API断点

## 0x5总结
&emsp;&emsp;1.有消息弹窗通过messageBOX下断点,回溯找关键call和关键跳,改跳转或者关键call,直接return,防止在使用功能时,判断注册标志
&emsp;&emsp;2.程序启动时,会判断是否注册,可以在程序还未跑起来时,通过F8和F7不断跟进,在字符串全部解密后,窗口未显示前,搜索注册字符串,同样找到关键call和关键跳
&emsp;&emsp;3.去广告那一步,我是坚决不会承认可以直接搜索字符串定位关键跳的,也不会承认API断下来后,堆栈窗口下拉就能看得到真正的调用返回处

总结:楼主是个小菜鸟,离了教程啥都不会!

PS:例子程序下载地址:
说明:
1.原程序中有qq和email联系方式,我已经用C32修改去掉,关闭后弹窗的网页已经替换成52pojie.cn
2.已经确认没有联系方式,如有问题,删掉附件就好,不要删帖,谢谢!
3.欢迎坛友们一起来交流破解心得!

小菜鸟一枚 发表于 2020-3-31 10:07

林洛凡 发表于 2020-3-30 16:53
楼主这个排版是用typora弄的吗?

论坛的Markdown编辑器呀:lol,用着感觉挺好的,图片我是用论坛自带的上传功能!

小菜鸟一枚 发表于 2020-3-31 10:08

朱朱你堕落了 发表于 2020-3-30 23:29
发下原版玩玩。

大佬,我发的附件例子就是没破解的呢,我只是把联系方式去了!:handshake

399713194 发表于 2020-3-30 16:53

boy7928 发表于 2020-3-30 18:49

399713194 发表于 2020-3-30 16:53
1个月时间,我都学完C语言,Java都学到进阶篇了,你学这玩意有成就感?有这个时间,都可以多学一门语言了, ...

欲速则不达。而且人家 有兴趣就行了

hyoulin68 发表于 2020-3-30 16:06

{:1_921:}这排版爱了,工工整整

freeflys 发表于 2020-3-30 14:13

看起来很简单呀,有时间也学习一下~

看,六眼飞鱼 发表于 2020-3-30 14:18

讲个笑话,楼主是个半吊子。。。

Windy渊虹 发表于 2020-3-30 15:40

这排版爱了,工工整整。
请问楼主多大了,是什么专业的啊,平时自学的时间为多久

wwwcoda 发表于 2020-3-30 15:55

我刚好也学这呢,爆破还好,追注册码除了特别简单的那种,追算法就不会了,也不知道具体怎么入手。
楼主这编排,没话说,也不知道啥时候我能做到这程度。

vinka 发表于 2020-3-30 16:12

楼主能留个联系方式请教下你吗

吾爱加肥猫 发表于 2020-3-30 16:21

讲个笑话,楼主是小菜鸟
哈哈,大佬厉害,学习学习

晓雨的安安呀 发表于 2020-3-30 16:26

加油呀大佬 突然看到你的帖了 hhh

wataxi 发表于 2020-3-30 16:29

排版舒服i了i了
页: [1] 2 3 4 5 6 7
查看完整版本: 学破解第100天,《仿QQ截图工具》学习