OD工具破解VB程序的常用断点

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

OD工具破解VB程序的常用断点(转)-现在也流行破解常用断点设置--收集的精华(编缉分类好装入PYG记事本)bpxhmemcpy破解万能断点,拦截内存拷贝动作(注意:Win9x专用断点,XP无效)bpxLockmytask当你用其它断点都无效时可以试一下,这个断点拦截按键的动作实在找不到断点可以试下面的方法:bmsghandlewm_gettext拦截注册码(handle为对应窗口的句柄)bmsghandlewm_command拦截OK按钮(handle为对应窗口的句柄)拦截窗口:bpxCreateWindow创建窗口bpxCreateWindowEx(A/W)创建窗口bpxShowWindow显示窗口bpxUpdateWindow更新窗口bpxGetWindowText(A/W)获取窗口文本拦截消息框:bpxMessageBox(A)创建消息框bpxMessageBoxExA创建消息框bpxMessageBoxIndirect(A)创建定制消息框拦截警告声:bpxMessageBeep发出系统警告声(如果没有声卡就直接驱动系统喇叭发声)拦截对话框:bpxDialogBox创建模态对话框bpxDialogBoxParam(A/W)创建模态对话框bpxDialogBoxIndirect创建模态对话框bpxDialogBoxIndirectParam(A/W)创建模态对话框bpxCreateDialog创建非模态对话框bpxCreateDialogParam(A)创建非模态对话框bpxCreateDialogIndirect创建非模态对话框bpxCreateDialogIndirectParam(A/W)创建非模态对话框bpxGetDlgItemText(A/W)获取对话框文本bpxGetDlgItemInt获取对话框整数值拦截剪贴板:bpxGetClipboardData获取剪贴板数据拦截注册表:bpxRegOpenKey(A)打开子健(例:bpxRegOpenKey(A)if*(esp+8)=='****')bpxRegOpenKeyEx打开子健(例:bpxRegOpenKeyExif*(esp+8)=='****')bpxRegQueryValue(A)查找子健(例:bpxRegQueryValue(A)if*(esp+8)=='****')bpxRegQueryValueEx查找子健(例:bpxRegQueryValueExif*(esp+8)=='****')bpxRegSetValue(A)设置子健(例:bpxRegSetValue(A)if*(esp+8)=='****')bpxRegSetValueEx(A)设置子健(例:bpxRegSetValueEx(A)if*(esp+8)=='****')注意:“****”为指定子键名的前4个字符,如子键为“Regcode”,则“****”=“Regc”==================功能限制拦截断点:bpxEnableMenuItem禁止或允许菜单项bpxEnableWindow禁止或允许窗口bmsghMenuwm_command拦截菜单按键事件,其中hMenu为菜单句柄bpxK32Thk1632Prolog配合bmsghMenuwm_command使用,可以通过这个断点进入菜单处理程序应用示例:CALL[KERNEL32!K32Thk1632Prolog]CALL[......]--由此跟踪进入菜单处理程序CALL[KERNEL32!K32Thk1632Epilog]======================拦截时间:bpxGetLocalTime获取本地时间bpxGetSystemTime获取系统时间bpxGetFileTime获取文件时间bpxGetTickCount获得自系统成功启动以来所经历的毫秒数bpxGetCurrentTime获取当前时间(16位)bpxSetTimer创建定时器bpxTimerProc定时器超时回调函数拦截文件:bpxCreateFileA创建或打开文件(32位)bpxOpenFile打开文件(32位)bpxReadFile读文件(32位)bpxWriteFile写文件(32位)bpx_lcreat创建或打开文件(16位)bpx_lopen打开文件(16位)bpx_lread读文件(16位)bpx_lwrite写文件(16位)bpx_hread读文件(16位)bpx_hwrite写文件(16位)拦截驱动器:bpxGetDrivetype(A/W)获取磁盘驱动器类型bpxGetLogicalDrives获取逻辑驱动器符号bpxGetLogicalDriveStringsA(W)获取当前所有逻辑驱动器的根驱动器路径拦截狗:bpio-h378(或278、3BC)R378、278、3BC是并行打印端口bpio-h3F8(或2F8、3E8、2E8)R3F8、2F8、3E8、2E8是串行端口+++++++++++VB程序专用断点:++++++++++bp__vbaFreeStr偶发现了VB杀手断点.不管是重起验证.还是有错误提示的VB..下这个断点通杀bpxmsvbvm50!__vbaStrCmp比较字符串是否相等bpxmsvbvm50!__vbaStrComp比较字符串是否相等bpxmsvbvm50!__vbaVarTstNe比较变量是否不相等bpxmsvbvm50!__vbaVarTstEq比较变量是否相等bpxmsvbvm50!__vbaStrCopy复制字符串bpxmsvbvm50!__vbaStrMove移动字符串bpxMultiByteToWideCharANSI字符串转换成Unicode字符串bpxWideCharToMultiByteUnicode字符串转换成ANSI字符串上面的断点对应VB5程序,如果是VB6程序则将msvbvm50改成msvbvm60即可VB程序的破解VB程序使很多朋友感到头痛,主要是VB程序反编译时产生大量的顶!代码,而且也找不到有用的信息,在动态调试过程中,顶!代码太多,往往迷失于冗余的代码中,找不到方向。记住VB常用的一些函数:MultiByteToWideChar将ANSI字符串转换成UNICODE字符WideCHatToMultiByte将UNICODE字符转换成ANSI字符rtcT8ValFromBstr把字符转换成浮点数vbaStrCmp比较字符串(常用断点)vbaStrComp字符串比较(常用断点)vbaStrCopy复制字符串StrConv转换字符串vbaStrMove移动字符串__vbaVarCat连接字符串rtcMidCharVar在字符串中取字符或者字符串!__vbaLenBstr取字符串的长度vbaVarTstNe变量比较vbaVarTstEq变量比较rtcMsgBox显示对话框VarBstrCmp比较字符串VarCyCmp比较字符串用OD载入脱壳后的程序,在命令行输入:bpxhmemcpy,然后回车,会弹出程序运行调用的所有的函数,在每个函数上设置好断点!说明:我破VB程序喜欢用这个断点设置方法,通过一步步跟踪,基本可以把握程序保护的思路,所以我破VB程序基本用这个断点,当然你可以用其它的断点,只要能找到关键,任何断点都是用意义的。关于VB的程序,注册没有提示的二个办法:第一(提示错误):用GetVBRes来替换里面的提示串,一般是以‘111111’,‘222222’之类的替换因为:VB,用的字来存放提示还有加了点东东,我们用的工具一般是字节分析。换成‘22222’之类的就是字节了,用静态分析,就有你该的串了。GetVBRes(网上很多,自己下吧)第二(没有提示):用vbde这个工具(不知道,有没有用过DEDE,是一样思路),主要是找出破解的按钮窗口的位置,来进行跟踪。先给出修改能正确反编译VB程序的W32DASM的地址:======================offsets0x16B6C-0x16B6D修改机器码为:98F4======================VB程序的跟踪断点:============MultiByteToWideChar,rtcR8ValFromBstr,WideCharToMultiByte,__vbaStrCmp__vbaStrComp__vbaStrCopy__vbaStrMove__vbaVarTstNertcBeeprtcGetPresentDate(时间API)rtcMsgBox=========时间限制断点:================CompareFileTimeGetLocalTimeGetSystemTimeGetTimeZoneInformationmsvcrt.diffTime()msvcrt.Time()================VB断点查找方法1,VB6.0编写,OD载入程序调出注册窗口,alt+e调出可执行模块窗口找到X:\WINDOWS\system32\MSVBVM60.DLL双击,在ctrl+n调出窗口找到,名称XXXXXXE区段=ENGINE导出__vbaVarMove双击来到下面地址(可以直接在命令行bp__vbaVarMove)回到程序注册窗口点注册被拦断在刚才下断的地址,断后在ctrl+F9,F8回2,OD载入程序,命令行下断点。bprtcMsgBox堆栈友好提示确定注册失败按钮返回。接着向上找出点注册按钮执行的代码第一句,可以吗?当然行,根据我们知道程序员写一个事件执行的代码是如这种,各种语言都差不多。3,OD载入程序,命令行下断点。bprtcMsgBox任意填入伪注册码9999999999999999999确定后中断堆栈友好提示确定注册失败按钮返回。W32Dasm反汇编程序,Shiht+F124,VB中的messagebox是一个消息框,汇编中用rtcMsgBox下断点.用olldbg载入程序,Alt+e,在可执行文件模块中找到Msvbvm60.dll,双击它,在代码窗口点右键-搜索-当前模块中的名称中的rtcMsgBox函数,双击它,在6A362F2955PUSHEBP这一句双击下断点,关掉多余的窗口,只留下cpu调试主窗口,F9运行程序,点?号按钮,随便输入987654321后,回车后立即中断,然后Ctrt+f9执行到返回地址,因为这是msvbvm60的领空,我们要回到程序领空.秘密记事本弹出message错误提示信息,点确定,向上看,再按F8就回到5,为MicrosoftVisualBasic6.0。先用SmartCheck找到程序比较注册码点,6,用vb常用比较断点vbastrcmpvbastrcompvbavartsteq在od中设断点找注册码7,用Od载入程序,运行,填入上面的注册码和顺序号。在Od中下断点,Alt+E,双击Msvbvm60运行库,右键-搜索当前模块中的名称,找到Vbastrcmp,双击下断点。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功