转载:

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

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

暴力破解的一般流程 
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字符串

爆破的思路和断点的设置相关推荐

  1. OD消息断点的设置方法

    一.条件断点: 使用方法(如): 在当前行按[Shift+F2]键->条件断点(这个不太好用,因为程序BUG偶尔失效). 在当前行按[Shift+F4]键->条件记录断点(只要设置上条件语 ...

  2. SAP--DEBUG--外部断点的设置

    在ABAP开发中不仅可以在SAP系统中对已知的程序进行设置断点(内部断点)来调试,还可以通过设置使SAP与外部调用系统(如:PLM.SRM.OA等)进行调试测试,前提是系统之间有相互的数据交互.实例如 ...

  3. Fiddler对数据包的拦截(打断点、设置断点)、改包、伪造(构造)、自动响应

    一.应用 定位bug:界定bug是由前端产生的,还是后端产生的.可以是两种策略: 1,抓包--抓取请求或者响应的数据包 2,改包--修改请求或者响应的数据包 使用Fiddler抓包,查看前端发送的请求 ...

  4. C#制作QQ截图的自动框选功能的个人思路(二)设置Hook

    上一篇介绍了一下我的一个个人思路而已..这一篇来分析分析代码... 主要分为两大部分 第一部分 就是 那个自动框选的那部分了啊 第二部分 就是设置Hook(不然窗体一直禁用啊) 先来说说Hook 也就 ...

  5. Fiddler基础教程 - 3. 抓包 | 设置断点 | 捕获设置 | 重定向AutoResponder | 过滤Filters

    本来想自己写的,结果翻到一系列的博客,发现有前辈总结的太好了,转载过来,当知识点查询一下.外加自己总结的一些经验,我总结的放在了最后面. 原地址:https://www.cnblogs.com/sjl ...

  6. kdevelop怎么调试_Kdevelop的C++断点调试设置

    1. CMakeLists.txt 需要设置为 Debug 模式 示例 cmake_minimum_required(VERSION 2.8) Project (Eigen_test) include ...

  7. gdb 笔记(03)— 某一行设置断点、为函数(单个唯一函数、多个同名函数、使用正则)设置断点、设置条件断点、设置临时断点

    断点 breakpoint,即为了调试的需要,在程序中设置一些特殊标志,代码执行到这些具有特殊标志的位置时会暂停.一旦程序暂停,我们就可以查看或者修改程序运行的一些信息,比如内存信息.堆栈信息等,并且 ...

  8. java设置断点_Eclipse设置断点调试的方法

    作为开发人员,掌握开发环境下的调试技巧十分有必要.去年就想把关于Eclipse断点调试总结下了,由于对时间的掌控程度仍需极大提高,结果拖到今年才写了此篇博文难过.关于java调试技术还有很多,如Jav ...

  9. 编程制作动态壁纸的思路,以编程方式设置动态壁纸

    Is it possible to set a live wallpaper using some lines of code. For example, i want to tell my user ...

最新文章

  1. phpmyadmin 忘记密码重设password
  2. android 挂载 nfs工具,Android 挂载 NFS
  3. 阿里巴巴消息系统架构与变迁--转载
  4. 鼠标移动时,光标相对于对象的位置
  5. shell之计算文本中单词出现频率
  6. C#/.Net Core/WPF框架初建(国际化、主题色)
  7. [html] 如何让img自动适应div容器大小?
  8. c++ file* 句柄泄漏_C++核心指南:P.8 勿泄漏任务资源
  9. 字节跳动的敌人只有时间
  10. MySQL入门 (三) : 运算式与函式
  11. 【clickhouse】clickhouse配置多块磁盘
  12. 使用php进行财务统计,基于php的基金财务数据接口调用代码实例
  13. php pdo insertid,php-在PDO准备好的语句内使用LAST_INSERT_ID插入...
  14. 常用的 Cron 时间表达式 定时器 正则表达式
  15. 如何在Word中打印奖状?按下这个键,就可以批量制作、打印奖状
  16. 解决:卸载anaconda后 cmd闪退或打不开
  17. Linux评分脚本,linux必看脚本大全
  18. 织梦dedecms蓝色商务学院职业技术学校网站模板
  19. 改wifi密码显示服务器拒绝访问权限,wifi密码对但是拒绝接入? | 192路由网
  20. 世界5G大会 大兴机场 随记

热门文章

  1. python爬网站数据实例-如何用Python爬数据?(一)网页抓取
  2. 数据结构C语言描述——用单链表实现多项式的相加
  3. 大数据在金融领域主要面临哪些风险,应该怎么解决?
  4. HTMLParser 使用详解
  5. 离群点(孤立点、异常值)检测方法
  6. 领域驱动设计(DDD)部分核心概念的个人理解
  7. linux安装sqlserver
  8. 如何在IDEA中连接mysql数据库
  9. Linux软件安装-RPM的安装技巧
  10. 读书笔记--高效能人士的七个习惯+执行4原则