首页
社区
课程
招聘
[旧帖] [讨论]爆破的思路与断点设置 0.00雪花
发表于: 2008-11-23 21:48 11985

[旧帖] [讨论]爆破的思路与断点设置 0.00雪花

2008-11-23 21:48
11985
破 顾名思义就是暴力修改程序的代码来达到破解的目的
当然根据共享软件的注册方式我们可以对症下药

比如说没有注册的软件有功能限制、使用次数限制、使用日期限制等
我们就可以分别对待了!我们只需要解除这些限制自然就达到了破解的目的了!

暴力破解的一般流程
1、有壳者自然得先脱壳
2、试注册看看有何提示,让我们抓抓小尾巴
3、若有提示,用OD动态调试器或者是W32静态调试器查找错误提示
4、来到错误提示处分析代码找关键CALL、关键跳!
5、修改代码
6、复制保存!

如果没有提示,我们可以使用很多断点来完成这些操作
现今软件的保护方式有
1、序列号保护方式(注册码=f(机器码/序列号))
2、警告(NAG)窗口
3、时间限制/次数限制。。
4、菜单功能限制
5、Key File保护
6、CD-Check
7、只运行一个实例

一些软件通过把注册码保存在.ini文件、注册表、.dat文件等等方式进行注册验证

常见断点设置(后面带"*" 的为常用的)

字符串
bp GetDlgItemTextA(W) ****
bp GetDlgItemInt
bp GetWindowTextA(W) ****
bp GetWindowWord
bmsg XXXX wm_gettext

对话框
bp MessageBeep
bp MessageBoxA(W) ****
bp MessageBoxExA(W)
bp DialogBoxParamA(W)
bp GreateWindowExA(W)
bp ShowWindow
bp UpdateWindow
bmsg XXXX wm_command

对于VB的程序用bp MessageBoxA是无法断下来的,bp rtcMsgBox

注册表相关
bp RegCreateKeyA(W)
bp RegDeleteKeyA(W)
bp RegQueryValueA(W)
bp RegCloseKey
bp RegOpenKeyA(W) ****

时间相关
bp GetLocalTime
bp GetFileTime
bp GetSystemtime

CD-ROM或磁盘相关
bp GetFileAttributesA(W)
bp GetFileSize
bp GetDriveType
bp GetLastError
bp ReadFile
bpio -h (CD-ROM端口地址) R

软件狗
bpio -h 278R
bpio -h 378R

INI初始化文件相关
bp GetPrivateProfileStringA  ****
bp GetPrivateProfileInt
bp WritePrivateProfileString
bp WritePrivateProfileInt

文件访问相关
bp ReadFile
bp WriteFile
bp CreateFileA  ****
bp SetFilePointer
bp GetSystemDirectory
VB程序专用断点:
bpx msvbvm60!rtcMsgBox  
bpx msvbvm60!__vbaStrCmp  
bpx msvbvm60!__vbaStrComp  
bpx msvbvm60!__vbaStrCompVar  
bpx msvbvm60!__vbaStrTextCmp  
bpx msvbvm60!__vbaFileOpen  
bpx msvbvm60!__vbaInputFile  
bpx msvbvm60!__vbaFileSeek  
bpx msvbvm60!__vbaWriteFile  
bpx msvbvm60!__vbaFileClose  
bpx msvbvm60!rtcFileAttributes  
bpx msvbvm60!rtcFileDateTime  
bpx msvbvm60!rtcFileLen  
bpx msvbvm60!rtcFileLength  
bpx msvbvm60!__vbaVarInt  
bpx msvbvm60!__vbaVarCmpGe  
bpx msvbvm60!__vbaVarCmpGt  
bpx msvbvm60!__vbaVarCmpLe  
bpx msvbvm60!__vbaVarCmpLt  
bpx msvbvm60!__vbaVarCmpNe  
bpx msvbvm60!__vbaVarTextCmpEq  
bpx msvbvm60!__vbaVarTextCmpGe  
bpx msvbvm60!__vbaVarTextCmpGt  
bpx msvbvm60!__vbaVarTextCmpLe  
bpx msvbvm60!__vbaVarTextCmpLt  
bpx msvbvm60!__vbaVarTextCmpNe  
bpx msvbvm60!__vbaVarTextTstEq  
bpx msvbvm60!__vbaVarTextTstGe  
bpx msvbvm60!__vbaVarTextTstGt  
bpx msvbvm60!__vbaVarTextTstLe  
bpx msvbvm60!__vbaVarTextTstLt  
bpx msvbvm60!__vbaVarTextTstNe  
bpx msvbvm60!__vbaVarTstEq  
bpx msvbvm60!__vbaVarTstGe  
bpx msvbvm60!__vbaVarTstGt  
bpx msvbvm60!__vbaVarTstLe  
bpx msvbvm60!__vbaVarTstLt  
bpx msvbvm60!__vbaVarTstNe  
注意:VB程序仍然可以使用普通API函数,只要函数“最终”CALL了这个函数  
上面的断点对应VB6程序,如果是VB5程序则将msvbvm60改成msvbvm50即可

另外还有一类软件通过网络验证、重启验证来判断程序是否注册
当然前者一般应用于外挂程序上较多,一般是改网络验证为本地验证达到欺骗远程网络主机的目的达到通过验证!
后者也是很常见的,他一般把用户输入的注册码直接或者是通过加密运算后得到的数值保存到文件、注册表中,然后提示用户重启验证是否注册,当然当你重新打开程序的时候他会从文件或者是注册表中读取用户输入的注册码,再通过程序注册算法来进行比照,正确者当然就成为正版,错误的自然就88了,另外以重启验证的软件一般是把注册码保存在注册表或文件中!

下面来说说解决这类软件的一般方法!

重启验证类软件大致的验证过程。
1、运行软件输入注册信息,点注册后。一般软件会提示你重新运行软件,以便验证注册信息的正确性(如FlashGet);
也有的只在你输入正确的注册信息时才有这个提示,不然会告诉你输入的注册信息有问题(此软件就属这类)

2、要破解这种软件,首先是判断一下她把注册信息存在哪里(因为她重启验证时要用)。大致有两种存放方式,第一种是放在注册表里;第二种是放在文件里。(我们可以在输入注册信息,点击确定前,利用监视类软件来查看一下,如FileMon和RegShot等)

3、知道她的注册信息的存放地点后,就可以选则相应的API断点,来调试了

访问注册表类常用API
bp RegOpenKeyA  打开一个现有的注册表项  ****
bp RegOpenKeyExA  打开一个现有的注册表项 ****
bp RegCreateKeyA 在指定的项下创建或打开一个项  
bp RegCreateKeyExA 在指定项下创建新项的更复杂的方式  
bp RegDeleteKeyA 删除现有项下方一个指定的子项  
bp RegDeleteValueA 删除指定项下方的一个值  
bp RegQueryValueA 获取一个项的设置值  
bp RegQueryValueExA 获取一个项的设置值  
bp RegSetValueA 设置指定项或子项的值   
bp RegSetValueExA 设置指定项的值  
bp RegCloseKey 关闭系统注册表中的一个项(或键)  

访问文件类常用API
bp CreateFileA 打开和创建文件、管道、邮槽、通信服务、设备以及控制台  ****
bp OpenFile 这个函数能执行大量不同的文件操作  
bp ReadFile 从文件中读出数据   
bp ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调
======================================================

  常用断点(OD中)
拦截窗口:
bp CreateWindow 创建窗口  
bp CreateWindowEx(A) 创建窗口  
bp ShowWindow 显示窗口  
bp UpdateWindow 更新窗口  
bp GetWindowText(A) 获取窗口文本  
拦截消息框:
bp MessageBox(A) 创建消息框  
bp MessageBoxExA 创建消息框  
bp MessageBoxIndirect(A) 创建定制消息框  
拦截警告声:
bp MessageBeep 发出系统警告声(如果没有声卡就直接驱动系统喇叭发声)  
拦截对话框:
bp DialogBox 创建模态对话框  
bp DialogBoxParam(A) 创建模态对话框  
bp DialogBoxIndirect 创建模态对话框  
bp DialogBoxIndirectParam(A) 创建模态对话框  
bp CreateDialog 创建非模态对话框  
bp CreateDialogParam(A) 创建非模态对话框  
bp CreateDialogIndirect 创建非模态对话框  
bp CreateDialogIndirectParam(A) 创建非模态对话框  
bp GetDlgItemText(A) 获取对话框文本  
bp GetDlgItemInt 获取对话框整数值  
拦截剪贴板:   
bp GetClipboardData 获取剪贴板数据  
拦截注册表:
bp RegOpenKey(A) 打开子健  
bp RegOpenKeyEx 打开子健
bp RegQueryValue(A) 查找子健
bp RegQueryValueEx 查找子健
bp RegSetValue(A) 设置子健  
bp RegSetValueEx(A) 设置子健
功能限制拦截断点:
bp EnableMenuItem 禁止或允许菜单项  
bp EnableWindow 禁止或允许窗口  
拦截时间:
bp GetLocalTime 获取本地时间  
bp GetSystemTime 获取系统时间  
bp GetFileTime 获取文件时间  
bp GetTickCount 获得自系统成功启动以来所经历的毫秒数  
bp GetCurrentTime 获取当前时间(16位)  
bp SetTimer 创建定时器  
bp TimerProc 定时器超时回调函数
拦截文件:  
bp CreateFileA 创建或打开文件 (32位)  
bp OpenFile 打开文件       (32位)  
bp ReadFile 读文件         (32位)  
bp WriteFile 写文件         (32位)  
拦截驱动器:   
bp GetDriveTypeA 获取磁盘驱动器类型  
bp GetLogicalDrives 获取逻辑驱动器符号  
bp GetLogicalDriveStringsA 获取当前所有逻辑驱动器的根驱动器路径  

★★VB程序专用断点★★
bp __vbaStrCmp 比较字符串是否相等  
bp __vbaStrComp 比较字符串是否相等  
bp __vbaVarTstNe 比较变量是否不相等  
bp __vbaVarTstEq 比较变量是否相等  
bp __vbaStrCopy 复制字符串  
bp __vbaStrMove 移动字符串  
bp MultiByteToWideChar ANSI字符串转换成Unicode字符串  
bp WideCharToMultiByte Unicode字符串转换成ANSI字符串

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (32)
雪    币: 254
活跃值: (91)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
做个记号~
2008-12-8 11:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mark
mark
2008-12-8 11:56
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
顶!学习了……
希望有个高人能指点我一下
很想认识一个朋友,共同进步
QQ:273124352
2008-12-8 12:44
0
雪    币: 152
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
顶一下,,,学习了
2008-12-8 13:06
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不错!!!学习下
2008-12-8 13:33
0
雪    币: 200
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哈哈,挺全,这些API是得熟练掌握
2008-12-12 09:21
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
做个记号做个记号
2008-12-13 13:34
0
雪    币: 27
活跃值: (90)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
9
楼主好人啊,先收藏起来。
2008-12-13 15:04
0
雪    币: 417
活跃值: (201)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
thanks!
2009-7-29 21:22
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
好像有部分是从天草大哥那来的。
2009-7-29 21:29
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
1、序列号保护方式(注册码=f(机器码/序列号))
2、警告(NAG)窗口
3、时间限制/次数限制。。
4、菜单功能限制
5、Key File保护
6、CD-Check
7、只运行一个实例

这一段好熟悉啊。和段刚的第二版的加密与解密中的内容雷同。呵呵。。只是随便说说而以。别无它意
2009-7-29 21:48
0
雪    币: 197
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习了.........
2009-8-3 09:59
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
非常感谢O(∩_∩)O...
2009-8-3 10:40
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
谢谢,这个得好好的学习下。
2009-8-3 11:43
0
雪    币: 266
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这是。。。。。。。。。复制的
2009-8-3 12:51
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
加密狗的还要难些吧
2009-8-3 14:04
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
好好学习天天向上!
2009-9-29 12:06
0
雪    币: 80
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
好像是天草兄在黑鹰VIP初级班中的一课吧!不过这确实是好东西,一定要努力记住。
2009-9-30 19:03
0
雪    币: 72
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
好东西,收藏~~多谢楼主
2009-10-1 17:47
0
雪    币: 240
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
收藏学习了,谢谢!
2009-10-3 11:18
0
雪    币: 264
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
好贴,就差这个指引方向了
2009-10-4 19:15
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
很详细,但还是没能解决我的问题..
2009-10-4 22:23
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
很实用的说,,,,,,,,,,
2009-11-19 21:31
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
这个 我在天草那里也看过 很不错的 写的
2009-11-19 21:35
0
游客
登录 | 注册 方可回帖
返回
//