通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 爱心红客 电信网通铁通移动 在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 > 文章类 > 红客教程 > 网络攻防 > 文章正文
爆破的思路与断点设置
责任编辑:酷酷の鱼   更新日期:2008-8-8
 

来源:安全中国

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

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

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

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 黑鹰的奥运激情
    普通文章 客发虚拟奥运信息诱使用户点击中毒
    普通文章 企业安全堪忧 07年89%安全事件未报告
    普通文章 美国运输安全管理局丢3万旅客信息
    普通文章 美规模最大信用卡盗窃案公诉
    普通文章 齐向东:瑞星心态不对唯利是图
    普通文章 McAfee:音乐、科技有关检索更多染毒网页
    普通文章 卡巴斯基:Twitter--网络犯罪新温床
    普通文章 近两年网络安全消费85亿美元
    普通文章 检测你的Web系统有多少安全漏洞
    热门文章
    普通文章“爆破作文网”全部网页被删
    推荐文章瑞星公司07月30日发布 每日计算机病毒及木马播报
    普通文章检测注册表中的ProgID信息
    普通文章安全精彩:走出误区 真正黑客是门艺术
    普通文章服务器隐藏自己的方法
    普通文章阿根廷黑客又发布集合攻击工具
    普通文章英黑客入侵美军系统找外星人 面临60年监禁
    普通文章"新木马"专门盗窃企业用户的商业数据
    普通文章解百纳英文域名水涨船高 网上兜售喊价1万
    普通文章人肉搜索的新时代 绝不仅仅是网络暴力
    精彩专题