做网站服务器装虚拟机,校园网站建设招标公告,浙江建设干部学校网站,建设网站英文翻译OllyDBG 入门之四--破解常用断点#xff08;转#xff09;
软件汉化2010-07-08 16:25:23 阅读76评论0 字号#xff1a;大中小 订阅 bpx hmemcpy 破解万能断点#xff0c;拦截内存拷贝动作 bpx Lockmytask 当你用其它断点都无效时可以试一下#xff0c;这个断点拦截…OllyDBG 入门之四--破解常用断点转
软件汉化2010-07-08 16:25:23 阅读76评论0 字号大中小 订阅 bpx hmemcpy 破解万能断点拦截内存拷贝动作 bpx Lockmytask 当你用其它断点都无效时可以试一下这个断点拦截按键的动作 bmsg handle wm_gettext 拦截注册码handle为对应窗口的句柄 bmsg handle wm_command 拦截OK按钮handle为对应窗口的句柄 拦截窗口 bpx CreateWindow 创建窗口 bpx CreateWindowEx(A) 创建窗口 bpx ShowWindow 显示窗口 bpx UpdateWindow 更新窗口 bpx GetWindowText(A) 获取窗口文本 拦截消息框 bpx MessageBox(A) 创建消息框 bpx MessageBoxExA 创建消息框 bpx MessageBoxIndirect(A) 创建定制消息框 拦截警告声 bpx MessageBeep 发出系统警告声(如果没有声卡就直接驱动系统喇叭发声) 拦截对话框 bpx DialogBox 创建模态对话框 bpx DialogBoxParam(A) 创建模态对话框 bpx DialogBoxIndirect 创建模态对话框 bpx DialogBoxIndirectParam(A) 创建模态对话框 bpx CreateDialog 创建非模态对话框 bpx CreateDialogParam(A) 创建非模态对话框 bpx CreateDialogIndirect 创建非模态对话框 bpx CreateDialogIndirectParam(A) 创建非模态对话框 bpx GetDlgItemText(A) 获取对话框文本 bpx GetDlgItemInt 获取对话框整数值 拦截剪贴板 bpx GetClipboardData 获取剪贴板数据 拦截注册表 bpx RegOpenKey(A) 打开子健 ( 例bpx RegOpenKey(A) if *(esp8)**** ) bpx RegOpenKeyEx 打开子健 ( 例bpx RegOpenKeyEx if *(esp8)**** ) bpx RegQueryValue(A) 查找子健 ( 例bpx RegQueryValue(A) if *(esp8)**** ) bpx RegQueryValueEx 查找子健 ( 例bpx RegQueryValueEx if *(esp8)**** ) bpx RegSetValue(A) 设置子健 ( 例bpx RegSetValue(A) if *(esp8)**** ) bpx RegSetValueEx(A) 设置子健 ( 例bpx RegSetValueEx(A) if *(esp8)**** ) “****”为指定子键名的前4个字符如子键为“Regcode”则“****” “Regc” 功能限制拦截断点 bpx EnableMenuItem 禁止或允许菜单项 bpx EnableWindow 禁止或允许窗口 bmsg hMenu wm_command 拦截菜单按键事件其中hMenu为菜单句柄 bpx K32Thk1632Prolog 配合bmsg hMenu wm_command使用可以通过这个断点进入菜单处理程序 应用示例 CALL [KERNEL32!K32Thk1632Prolog] CALL [......] -- 由此跟踪进入菜单处理程序 CALL [KERNEL32!K32Thk1632Epilog] 拦截时间 bpx GetLocalTime 获取本地时间 bpx GetSystemTime 获取系统时间 bpx GetFileTime 获取文件时间 bpx GetTickCount 获得自系统成功启动以来所经历的毫秒数 bpx GetCurrentTime 获取当前时间16位 bpx SetTimer 创建定时器 bpx TimerProc 定时器超时回调函数 拦截文件 bpx CreateFileA 创建或打开文件 (32位) bpx OpenFile 打开文件 (32位) bpx ReadFile 读文件 (32位) bpx WriteFile 写文件 (32位) bpx _lcreat 创建或打开文件 (16位) bpx _lopen 打开文件 (16位) bpx _lread 读文件 (16位) bpx _lwrite 写文件 (16位) bpx _hread 读文件 (16位) bpx _hwrite 写文件 (16位) 拦截驱动器 bpx GetDrivetype(A) 获取磁盘驱动器类型 bpx GetLogicalDrives 获取逻辑驱动器符号 bpx GetLogicalDriveStringsA 获取当前所有逻辑驱动器的根驱动器路径 拦截狗 bpio -h 378(或278、3BC) R 378、278、3BC是并行打印端口 bpio -h 3F8(或2F8、3E8、2E8) R 3F8、2F8、3E8、2E8是串行端口 VB程序专用断点 bpx msvbvm50!__vbaStrCmp 比较字符串是否相等 bpx msvbvm50!__vbaStrComp 比较字符串是否相等 bpx msvbvm50!__vbaVarTstNe 比较变量是否不相等 bpx msvbvm50!__vbaVarTstEq 比较变量是否相等 bpx msvbvm50!__vbaStrCopy 复制字符串 bpx msvbvm50!__vbaStrMove 移动字符串 bpx MultiByteToWideChar ANSI字符串转换成Unicode字符串 bpx WideCharToMultiByte Unicode字符串转换成ANSI字符串 上面的断点对应VB5程序如果是VB6程序则将msvbvm50改成msvbvm60即可 VB程序的破解 记住VB常用的一些函数 MultiByteToWideChar 将ANSI字符串转换成UNICODE字符 WideCHatToMultiByte 将UNICODE字符转换成ANSI字符 rtcT8ValFromBstr 把字符转换成浮点数 vbaStrCmp 比较字符串常用断点 vbaStrComp 字符串比较常用断点 vbaStrCopy 复制字符串 StrConv 转换字符串 vbaStrMove 移动字符串 __vbaVarCat 连接字符串 rtcMidCharVar 在字符串中取字符或者字符串! __vbaLenBstr 取字符串的长度 vbaVarTstNe 变量比较 vbaVarTstEq 变量比较 rtcMsgBox 显示对话框 VarBstrCmp 比较字符串 VarCyCmp 比较字符串 用OD载入脱壳后的程序在命令行输入bpx hmemcpy然后回车会弹出程序运行调用的所有的函数在每个函数上设置好断点 说明我破VB程序喜欢用这个断点设置方法通过一步步跟踪基本可以把握程序保护的思路所以我破VB程序基本用这个断点当然你可以用其它的断点只要能找到关键任何断点都是有意义的。 关于VB的程序注册没有提示的二个办法 第一提示错误用GetVBRes来替换里面的提示串一般是以‘111111’‘222222’之类的替换 因为VB用的字来存放提示还有加了点东东我们用的工具一般是字节分析。换成‘22222’之类的就是字节了用静态分析就有你该的串了。GetVBRes网上很多自己下吧 第二没有提示用vbde这个工具不知道有没有用过DEDE是一样思路主要是找出破解的按钮窗口的位置来进行跟踪。 先给出修改能正确反编译VB程序的W32DASM的地址 offsets 0x16B6C-0x16B6D 修改机器码为 98 F4 VB程序的跟踪断点 MultiByteToWideChar, rtcR8ValFromBstr, WideCharToMultiByte, __vbaStrCmp __vbaStrComp __vbaStrCopy __vbaStrMove __vbaVarTstNe rtcBeep rtcGetPresentDate (时间API) rtcMsgBox 时间限制断点 CompareFileTime GetLocalTime GetSystemTime GetTimeZoneInformation msvcrt.diffTime() msvcrt.Time() VB断点查找方法 1.VB6.0编写OD载入程序调出注册窗口alte调出可执行模块窗口找到X:\WINDOWS\system32\MSVBVM60.DLL双击在ctrln调出窗口找到名称XXXXXXE区段ENGINE 导出__vbaVarMove双击来到下面地址(可以直接在命令行 bp __vbaVarMove)回到程序注册窗口点注册被拦断在刚才下断的地址断后在ctrlF9F8回 2.OD载入程序命令行下断点bp rtcMsgBox 堆栈友好提示 确定注册失败按钮返回。接着向上找出点注册按钮执行的代码第一句可以吗当然行根据我们知道程序员写一个事件执行的代码是如这种各种语言都差不多。 3.OD载入程序命令行下断点bp rtcMsgBox 任意填入伪注册码 9999999999999999999确定后中断 堆栈友好提示 确定注册失败按钮返回。 W32Dasm反汇编程序ShihtF12 4.VB中的messagebox是一个消息框,汇编中用rtcMsgBox下断点.用olldbg载入程序,Alte,在可执行文件模块中找到Msvbvm60.dll,双击它,在代码窗口点右键-搜索-当前模块中的名称中的rtcMsgBox函数,双击它,在6A362F29 55 PUSH EBP这一句双击下断点,关掉多余的窗口,只留下cpu调试主窗口,F9运行程序,点?号按钮,随便输入987654321后,回车后立即中断,然后Ctrtf9执行到返回地址,因为这是msvbvm60的领空,我们要回到程序领空.秘密记事本弹出message错误提示信息,点确定,向上看,再按F8就回到 5.为Microsoft Visual Basic 6.0先用SmartCheck找到程序比较注册码点 6.用vb常用比较断点 vbastrcmp vbastrcomp vbavartsteq 在od中设断点找注册码 7.用Od载入程序运行填入上面的注册码和顺序号。在Od中下断点,AltE,双击Msvbvm60运行库右键搜索当前模块中的名称找到Vbastrcmp双击下断点。 杨航收集技术资料分享给大家