破 顾名思义就是暴力修改代码来达到破解目
当然根据共享软件Software注册方式我们可以对症下药
比如说没有注册软件Software有功能限制、使用次数限制、使用日期限制等
我们就可以分别对待了!我们只需要解除这些限制自然就达到了破解目了!
暴力破解般流程
1、有壳者自然得先脱壳
2、试注册看看有何提示让我们抓抓小尾巴
3、若有提示用OD动态调试器或者是W32静态调试器查找提示
4、来到提示处分析代码找关键CALL、关键跳!
5、修改代码
6、复制保存!
如果没有提示我们可以使用很多断点来完成这些操作
现今软件Software保护方式有
1、序列号保护方式(注册码=f(机器码/序列号))
2、警告(NAG)窗口
3、时间限制/次数限制
4、菜单功能限制
5、Key File保护
6、CD-Check
7、只运行个例子
些软件Software通过把注册码保存在.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 Gettime
CD-ROM或磁盘相关
bp GetFileAttributesA(W)
bp GetFileSize
bp GetDriveType
bp GetLastError
bp ReadFile
bpio -h (CD-ROM端口地址) R
软件Software狗
bpio -h 278R
bpio -h 378R
INI化文件相关
bp GetPrivateProfileStringA ****
bp GetPrivateProfileInt
bp WritePrivateProfileString
bp WritePrivateProfileInt
文件访问相关
bp ReadFile
bp WriteFile
bp CreateFileA ****
bp SetFilePoer
bp GetDirectory
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即可
另外还有类软件Software通过网络验证、重启验证来判断是否注册
当然前者般应用于外挂上较多般是改网络验证为本地验证达到欺骗远程网络主机目达到通过验证!
后者也是很常见他般把用户输入注册码直接或者是通过加密运算后得到数值保存到文件、注册表中然后提示用户重启验证是否注册当然当你重新打开时候他会从文件或者是注册表中读取用户输入注册码再通过注册算法来进行比照正确者当然就成为正版自然就88了另外以重启验证软件Software般是把注册码保存在注册表或文件中!
下面来说说解决这类软件Software般思路方法!
重启验证类软件Software大致验证过程
1、运行软件Software输入注册信息点注册后般软件Software会提示你重新运行软件Software以便验证注册信息正确性(如FlashGet);
也有只在你输入正确注册信息时才有这个提示不然会告诉你输入注册信息有问题(此软件Software就属这类)
2、要破解这种软件Software首先是判断下她把注册信息存在哪里(她重启验证时要用)大致有两种存放方式第种是放在注册表里;第 2种是放在文件里(我们可以在输入注册信息点击确定前利用监视类软件Software来查看下如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 GetTime 获取系统时间
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串
最新评论