加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

OD常用断点

发布时间:2020-12-17 00:24:48 所属栏目:大数据 来源:网络整理
导读:常用断点(OD中)拦截窗口:bp CreateWindow 创建窗口bp CreateWindowEx(A) 创建窗口bp ShowWindow 显示窗口bp UpdateWindow 更新窗口bp GetWindowText(A) 获取窗口文本拦截消息框:bp MessageBox(A) 创建消息框bp MessageBoxExA 创建消息框bp MessageBoxIndir

常用断点(OD中)拦截窗口:bp CreateWindow 创建窗口bp CreateWindowEx(A) 创建窗口bp ShowWindow 显示窗口bp UpdateWindow 更新窗口bp GetWindowText(A) 获取窗口文本拦截消息框:bp MessageBox(A) 创建消息框bp MessageBoxExA 创建消息框bp MessageBoxIndirect(A) 创建定制消息框bp IsDialogMessageW拦截警告声: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 定时器超时回调函数GetDlgItemInt 得指定输入框整数值GetDlgItemText 得指定输入框输入字符串GetDlgItemTextA 得指定输入框输入字符串拦截文件:bp CreateFileA 创建或打开文件 (32位)bp OpenFile 打开文件 (32位)bp ReadFile 读文件 (32位)bp WriteFile 写文件 (32位)GetModuleFileNameAGetFileSizeSetfilepointerfileopenFindFirstFileAReadFile拦截驱动器:bp GetDriveTypeA 获取磁盘驱动器类型bp GetLogicalDrives 获取逻辑驱动器符号bp GetLogicalDriveStringsA 获取当前所有逻辑驱动器的根驱动器路径★★VB程序专用断点★★文件长度:RtcFileLenbp __vbaFreeStr 对付VB程序重启验证bp __vbaStrCmp 比较字符串是否相等bp __vbaStrComp 比较字符串是否相等bp __vbaVarTstNe 比较变量是否不相等bp __vbaVarTstEq 比较变量是否相等bp __vbaStrCopy 复制字符串bp __vbaStrMove 移动字符串bp MultiByteToWideChar ANSI字符串转换成Unicode字符串bp WideCharToMultiByte Unicode字符串转换成ANSI字符串=============== ================密码常用中断Hmemcpy (win9x专用)GetDlgItemTextAGetDlgItemIntvb:getvolumeinformationa  vbastrcomp (trw)Bpx __vbaStrComp (记得是两个 &#39;_&#39;)MSVBVM60!_vbastrcomp|soficeMSVBVM50! | VBAI4STR Ctrl+Dbpx msvbvm60!__vbastrcomp do /"d *(esp+0c)/"(softice)按几次F5出册码出来了。bpx regqueryvalueexa do /"d esp->8/"(trw) vbaVarTstEq 判断是否注册的函数(0042932F 66898580FEFFFF mov word ptr [ebp+FFFFFE80],ax改为0042932F 66898580FEFFFF mov word ptr [ebp+FFFFFE80],bx)时间常用中断GetSystemTimeGetLocalTimeGetTickCountvb:rtcGetPresentDate //取得当前日期 杀窗常用中断Lockmytask (win9x专用)bp ExitProcess 退出进程DestroyWindowmouse_event (鼠标中断)postquitmessage (Cracking足彩xp,很有用^_^)vb:_rtcMsgBox ini文件内容常用中断GetPrivateProfileStringAGetPrivateProfileProfileInt key文件:getprivateprofileintReadFileCreateFileA 注册表常用中断RegQueryvalueARegQueryvalueExA 狗加密中断BPIO -h 278 RBPIO -h 378 R  其它常用函数断点CreateFileA (读狗驱动程序),DeviceIOControl,FreeEnvironmentStringsA (对付HASP非常有效).Prestochangoselector (16-bit HASP&#39;s),&#39;7242&#39; 查找字符串 (对付圣天诺).具体含义参考下面的范例。 光盘破解中断16:getvolumeinformationgetdrivetypeint 2fh (dos)32:GetDriveTypeAGetFullPathNameAGetWindowsDirectoryA 读磁盘中断GETLASTERROR 返回扩充出错代码  限制中断EnableMenuItem 允许、禁止或变灰指定的菜单条目EnableWindow 允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰)  不知道软盘中断是什么了?还有其它特殊中断,不知道其他朋友可否说一下了?如ockmytask and mouse_event,这些就不是api32函数?win9x 与 win2k进行破解,以上中断有部分已经不能用了?不知道在win2k上,以上常用中断函数是什么了?也就是问密码、时间、窗口、ini、key、注册表、加密狗、光盘、软盘、限制等!了解常用的中断,对破解分析可以做到事半功倍!请大家说一下!还有如何破解了某个软件时,一重启就打回原形?不知道下什么中断了?可以分为三种情况:1.比较可能在注册表中2.比较在特殊文件(*.key *.ini *.dat等)3.比较在程序中,没有任何错误提示或者反译也找不到明显字符(这个就是我想问的) 还有一个是最难的,就是去掉水印!也可以三种情况:A.水印是位图文件(bitblt,creatBITMAP等位图函数)B.水印是明显字符(反译分析)C.水印不是明显字符(如:This a demo!它只是显示在另一个制作文件上,可是*.htm *.exe等)C.才是最难搞,也是很多人想知道的!包括我在内。不知道高手们有何提示了? 广告条:可以分两种情况:A.从创建窗口进手,可以用到movewindow或者其它窗口函数!B.从位图进手,也可以用到bitblt或者其它位图函数!最后可以借助一些现有工具(如:api27,vwindset,freespy之类的工具) 那要看是在哪作的标记,通常是在注册表中留下信息!在softice中就要用bpx regqueryvalueexa do /"d esp->8/"来中断看看,在trw中要用bpx regqueryvalueexa do /"d*(esp+8)/"来中断看看。还有的是在本目录下留下注册信息,常见的有.dat .ini .dll等等,我是用bpx readfile来中断的,还有的是在windows目录下留下注册信息。你可以借助专用的工具帮助你查看,入filemon等!  vb: 1、__vbaVarTstNe //比较两个变量是否不相等2、rtcR8ValFromBstr //把字符串转换成浮点数3、rtcMsgBox 显示一信息对话框4、rtcBeep //让扬声器叫唤5、rtcGetPresentDate //取得当前日期  针对字串:__vbaStrComp__vbaStrCmp__vbaStrCompVar__vbaStrLike__vbaStrTextComp__vbaStrTextLike针对变量:__vbaVarCompEq__vbaVarCompLe__vbaVarCompLt__vbaVarCompGe__vbaVarCompGt__vbaVarCompNeVB的指针:THROW  VB DLL还调用了oleauto32.dll中的部分函数。oleauto32.dll是个通用的proxy/stub DLL,其每个函数的原型在<oleauto.h>中定义,并在MSDN中有详细描述。这也有助于理解VB DLL中的函数的作用。  举例:  LEA EAX,[EBP-58]PUSH EAXCALL [MSVBVM60!__vbaI4Var]  执行call之前敲dd eax+8,得到的值为3;执行完call之后,eax = 3从而可知__vbaI4Var的作用是将一个VARIANT转换为I4(即一个长整数)。 __vbaVarTstNe似乎是用来进行自校验的,正常情况下返回值为0。已知适用的软件有:网络三国智能机器人、音乐贺卡厂。当这两个软件被脱壳后都回出错,网络三国智能机器人会产生非法*作,而音乐贺卡厂会告诉你是非法拷贝,通过修改__vbaVarTstNe的返回值都可让它们正常运行。所以当您遇到一个VB软件,脱壳后无法正常运行,而又找不出其它问题时,可试试拦截这个函数,说不定会有用哦。8-) API不太知道,也许可以通过BIOS在98平台上读写扇区,不过在2000/NT下可以通过内黑ATAPI,HAL写扇区machoman[CCG]bpx WRITE_PORT_BUFFER_USHORTNT/2000下这个断点,当edx=1f0h,时,可以看见EDI地址内数据为扇区位置数据,必须先 在winice.dat 中装入hal.sys 详细内容看ATAPI手册  补充篇:关于对VB程序和时间限制程序的断点CrackerABC先给出修改能正确反编译VB程序的W32DASM的地址:======================offsets 0x16B6C-0x16B6D  修改机器码为: 98 F4======================  VB程序的跟踪断点:  ============MultiByteToWideChar,rtcR8ValFromBstr,WideCharToMultiByte,__vbaStrCmp__vbaStrComp__vbaStrCopy__vbaStrMove__vbaVarTstNertcBeeprtcGetPresentDate (时间API)rtcMsgBox=========  时间限制断点:  ================CompareFileTimeGetLocalTimeGetSystemTimeGetTimeZoneInformationmsvcrt.diffTime()msvcrt.Time()================  一般处理bpx hmemcpybpx MessageBoxbpx MessageBoxExAbpx MessageBeepbpx SendMessage bpx GetDlgItemTextbpx GetDlgItemIntbpx GetWindowTextbpx GetWindowWordbpx GetWindowIntbpx DialogBoxParamAbpx CreateWindowbpx CreateWindowExbpx ShowWindowbpx UpdateWindow bmsg xxxx wm_movebmsg xxxx wm_gettextbmsg xxxx wm_commandbmsg xxxx wm_activate  时间相关bpint 21 if ah==2A (DOS)bpx GetLocalTimebpx GetFileTimebpx GetSystemtime  CD-ROM 或 磁盘相关bpint 13 if ah==2 (DOS)bpint 13 if ah==3 (DOS)bpint 13 if ah==4 (DOS)bpx GetFileAttributesAbpx GetFileSizebpx GetDriveTypebpx GetLastErrorbpx ReadFilebpio -h (Your CD-ROM Port Address) R  软件狗相关bpio -h 278 Rbpio -h 378 R  键盘输入相关bpint 16 if ah==0 (DOS)bpint 21 if ah==0xA (DOS)  文件访问(自校验)相关bpint 21 if ah==3dh (DOS)bpint 31 if ah==3fh (DOS)bpint 21 if ah==3dh (DOS)bpx ReadFilebpx WriteFilebpx CreateFilebpx GetFileSizebpx SetFilePointerbpx GetSystemDirectory  INI 初始化文件相关bpx GetPrivateProfileStringbpx GetPrivateProfileIntbpx WritePrivateProfileStringbpx WritePrivateProfileInt  注册表相关bpx RegCreateKeybpx RegDeleteKeybpx RegQueryvaluebpx RegCloseKeybpx RegOpenKey  注册标志相关bpx cs:eip if EAX==0  内存标准相关bpmb cs:eip rw if 0x30:0x45AA==0  显示相关bpx 0x30:0x45AA do /"d 0x30:0x44BB/"bpx CS:0x66CC do /"? EAX/"查找窗口FindWindowABP SetFilePointerbpx hmemcpy ;破解万能断点,拦截内存拷贝动作(注意:Win9x专用断点)bpx Lockmytask ;当你用其它断点都无效时可以试一下,这个断点拦截按键的动作(Win9x专用)实在找不到断点可以试下面的方法:bmsg handle wm_gettext ;拦截注册码(handle为对应窗口的句柄)bmsg handle wm_command ;拦截OK按钮(handle为对应窗口的句柄)拦截窗口:bpx CreateWindow ;创建窗口bpx CreateWindowEx(A/W) ;创建窗口bpx ShowWindow ;显示窗口bpx UpdateWindow ;更新窗口bpx GetWindowText(A/W) ;获取窗口文本拦截消息框:bpx MessageBox(A/W) ;创建消息框bpx MessageBoxExA(W) ;创建消息框bpx MessageBoxIndirect(A/W) ;创建定制消息框拦截警告声:bpx MessageBeep ;发出系统警告声(如果没有声卡就直接驱动系统喇叭发声)拦截对话框:bpx DialogBox ;创建模态对话框bpx DialogBoxParam(A/W) ;创建模态对话框bpx DialogBoxIndirect ;创建模态对话框bpx DialogBoxIndirectParam(A/W) ;创建模态对话框bpx CreateDialog ;创建非模态对话框bpx CreateDialogParam(A/W) ;创建非模态对话框bpx CreateDialogIndirect ;创建非模态对话框bpx CreateDialogIndirectParam(A/W) ;创建非模态对话框bpx GetDlgItemText(A/W) ;获取对话框文本bpx GetDlgItemInt ;获取对话框整数值拦截剪贴板:bpx GetClipboardData ;获取剪贴板数据拦截注册表:bpx RegOpenKey(A/W) ;打开子健 ( 例:bpx RegOpenKey(A) if *(esp->8)==&#39;****&#39; )bpx RegOpenKeyExA(W) ;打开子健 ( 例:bpx RegOpenKeyEx if *(esp->8)==&#39;****&#39; )bpx RegQueryValue(A/W) ;查找子健 ( 例:bpx RegQueryValue(A) if *(esp->8)==&#39;****&#39; )bpx RegQueryValueEx(A/W) ;查找子健 ( 例:bpx RegQueryValueEx if *(esp->8)==&#39;****&#39; )bpx RegSetValue(A/W) ;设置子健 ( 例:bpx RegSetValue(A) if *(esp->8)==&#39;****&#39; )bpx RegSetValueEx(A/W) ;设置子健 ( 例:bpx RegSetValueEx(A) if *(esp->8)==&#39;****&#39; )注意:&#39;****&#39;为指定子键名的前4个字符,如子键为&#39;Regcode&#39;,则&#39;****&#39;= &#39;Regc&#39;功能限制拦截断点: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(W) ;创建或打开文件 (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/W) ;获取磁盘驱动器类型bpx GetLogicalDrives ;获取逻辑驱动器符号bpx GetLogicalDriveStringsA(W) ;获取当前所有逻辑驱动器的根驱动器路径拦截狗:bpio -h 378(或278、3BC) R ;378、278、3BC是并行打印端口bpio -h 3F8(或2F8、3E8、2E8) R ;3F8、2F8、3E8、2E8是串行端口VB程序专用断点:bpx msvbvm60!rtcMsgBoxbpx msvbvm60!__vbaStrCmpbpx msvbvm60!__vbaStrCompbpx msvbvm60!__vbaStrCompVarbpx msvbvm60!__vbaStrTextCmpbpx msvbvm60!__vbaFileOpenbpx msvbvm60!__vbaInputFilebpx msvbvm60!__vbaFileSeekbpx msvbvm60!__vbaWriteFilebpx msvbvm60!__vbaFileClosebpx msvbvm60!rtcFileAttributesbpx msvbvm60!rtcFileDateTimebpx msvbvm60!rtcFileLenbpx msvbvm60!rtcFileLengthbpx msvbvm60!__vbaVarIntbpx msvbvm60!__vbaVarCmpGebpx msvbvm60!__vbaVarCmpGtbpx msvbvm60!__vbaVarCmpLebpx msvbvm60!__vbaVarCmpLtbpx msvbvm60!__vbaVarCmpNebpx msvbvm60!__vbaVarTextCmpEqbpx msvbvm60!__vbaVarTextCmpGebpx msvbvm60!__vbaVarTextCmpGtbpx msvbvm60!__vbaVarTextCmpLebpx msvbvm60!__vbaVarTextCmpLtbpx msvbvm60!__vbaVarTextCmpNebpx msvbvm60!__vbaVarTextTstEqbpx msvbvm60!__vbaVarTextTstGebpx msvbvm60!__vbaVarTextTstGtbpx msvbvm60!__vbaVarTextTstLebpx msvbvm60!__vbaVarTextTstLtbpx msvbvm60!__vbaVarTextTstNebpx msvbvm60!__vbaVarTstEqbpx msvbvm60!__vbaVarTstGebpx msvbvm60!__vbaVarTstGtbpx msvbvm60!__vbaVarTstLebpx msvbvm60!__vbaVarTstLtbpx msvbvm60!__vbaVarTstNe注意:VB程序仍然可以使用普通API函数,只要函数“最终”CALL了这个函数上面的断点对应VB6程序,如果是VB5程序则将msvbvm60改成msvbvm50即可bpx hmemcpy 破解万能断点,拦截内存拷贝动作 (注意:Win9x专用断点,XP无效)bpx Lockmytask 当你用其它断点都无效时可以试一下,这个断点拦截按键的动作实在找不到断点可以试下面的方法:bmsg handle wm_gettext 拦截注册码(handle为对应窗口的句柄)bmsg handle wm_command 拦截OK按钮(handle为对应窗口的句柄)拦截窗口:bpx CreateWindow 创建窗口bpx CreateWindowEx(A/W) 创建窗口bpx ShowWindow 显示窗口bpx UpdateWindow 更新窗口bpx GetWindowText(A/W) 获取窗口文本拦截消息框:bpx MessageBox(A) 创建消息框bpx MessageBoxExA 创建消息框bpx MessageBoxIndirect(A) 创建定制消息框拦截警告声:bpx MessageBeep 发出系统警告声(如果没有声卡就直接驱动系统喇叭发声)拦截对话框:bpx DialogBox 创建模态对话框bpx DialogBoxParam(A/W) 创建模态对话框bpx DialogBoxIndirect 创建模态对话框bpx DialogBoxIndirectParam(A/W) 创建模态对话框bpx CreateDialog 创建非模态对话框bpx CreateDialogParam(A) 创建非模态对话框bpx CreateDialogIndirect 创建非模态对话框bpx CreateDialogIndirectParam(A/W) 创建非模态对话框bpx GetDlgItemText(A/W) 获取对话框文本bpx GetDlgItemInt 获取对话框整数值拦截剪贴板:bpx GetClipboardData 获取剪贴板数据拦截注册表:bpx RegOpenKey(A) 打开子健 ( 例:bpx RegOpenKey(A) if *(esp+8)==&#39;****&#39; )bpx RegOpenKeyEx 打开子健 ( 例:bpx RegOpenKeyEx if *(esp+8)==&#39;****&#39; )bpx RegQueryValue(A) 查找子健 ( 例:bpx RegQueryValue(A) if *(esp+8)==&#39;****&#39; )bpx RegQueryValueEx 查找子健 ( 例:bpx RegQueryValueEx if *(esp+8)==&#39;****&#39; )bpx RegSetValue(A) 设置子健 ( 例:bpx RegSetValue(A) if *(esp+8)==&#39;****&#39; )bpx RegSetValueEx(A) 设置子健 ( 例:bpx RegSetValueEx(A) if *(esp+8)==&#39;****&#39; )注意:“****”为指定子键名的前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/W) 获取磁盘驱动器类型bpx GetLogicalDrives 获取逻辑驱动器符号bpx GetLogicalDriveStringsA(W) 获取当前所有逻辑驱动器的根驱动器路径拦截狗:bpio -h 378(或278、3BC) R 378、278、3BC是并行打印端口bpio -h 3F8(或2F8、3E8、2E8) R 3F8、2F8、3E8、2E8是串行端口+++++++++++VB程序专用断点:++++++++++bp__vbaFreeStr 偶发现了VB杀手断点.不管是重起验证.还是有错误提示的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程序使很多朋友感到头痛,主要是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来替换里面的提示串,一般是以‘222221’,‘222222’之类的替换因为:VB,用的字来存放提示还有加了点东东,我们用的工具一般是字节分析。换成‘22222’之类的就是字节了,用静态分析,就有你该的串了。GetVBRes(网上很多,自己下吧)第二(没有提示):用vbde这个工具(不知道,有没有用过DEDE,是一样思路),主要是找出破解的按钮窗口的位置,来进行跟踪。先给出修改能正确反编译VB程序的W32DASM的地址:======================offsets 0x16B6C-0x16B6D修改机器码为: 98 F4======================VB程序的跟踪断点:============MultiByteToWideChar,__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载入程序,命令行下断点。bp rtcMsgBox堆栈友好提示确定注册失败按钮返回。接着向上找出点注册按钮执行的代码第一句,可以吗?当然行,根据我们知道程序员写一个事件执行的代码是如这种,各种语言都差不多。3,OD载入程序,命令行下断点。bp rtcMsgBox任意填入伪注册码 9999999999999999999确定后中断堆栈友好提示确定注册失败按钮返回。W32Dasm反汇编程序,Shiht+F124,VB中的messagebox是一个消息框,汇编中用rtcMsgBox下断点.用olldbg载入程序,Alt+e,在可执行文件模块中找到Msvbvm60.dll,双击它,在代码窗口点右键-搜索-当前模块中的名称中的rtcMsgBox函数,在6A362F29 55 PUSH EBP这一句双击下断点,关掉多余的窗口,只留下cpu调试主窗口,F9运行程序,点?号按钮,随便输入987654321后,回车后立即中断,然后Ctrt+f9执行到返回地址,因为这是msvbvm60的领空,我们要回到程序领空.秘密记事本弹出message错误提示信息,点确定,向上看,再按F8就回到5,为Microsoft Visual Basic 6.0。先用SmartCheck找到程序比较注册码点,6,用vb常用比较断点vbastrcmpvbastrcompvbavartsteq在od中设断点找注册码7,用Od载入程序,运行,填入上面的注册码和顺序号。在Od中下断点,Alt+E,双击Msvbvm60运行库,右键-搜索当前模块中的名称,找到Vbastrcmp,双击下断点。--------------------------注意:VB程序仍然可以使用普通API函数,只要函数“最终”CALL了这个函数上面的断点对应VB6程序,如果是VB5程序则将msvbvm60改成msvbvm50即可★注意:上面所列函数末尾有带“A”的,有带“W”的,有不带后缀的;一般说来,如果函数同时可以有后缀也可以没有后缀(形如:MessageBox(A/W)), 则不带后缀的表示16位的函数(MessageBox),带后缀的(MessageBoxA、MessageBoxW)表示32位的函数;通常优先使用带后缀(A或W)的断点,带A后缀的一般用于WIN9X系统, 而带W后缀的一般用于NT系统;如果函数没有任何后缀,则表示这是个通用的跨平台的API函数。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读