OllyDbg常用断点
OD常用断点

附个断点表:常用断点(OD中)拦截窗口:bp CreateWindow 创建窗口bp CreateWindowEx(A) 创建窗口bp ShowWindow 显示窗口bp UpdateWindow 更新窗口bp GetWindowT ext(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 __vbaVarT stNe 比较变量是否不相等bp __vbaVarT stEq 比较变量是否相等bp __vbaStrCopy 复制字符串bp __vbaStrMove 移动字符串bp MultiByteToWideChar ANSI字符串转换成Unicode字符串bp WideCharToMultiByte Unicode字符串转换成ANSI字符串=============== ================密码常用中断Hmemcpy (win9x专用)GetDlgItemTextAGetDlgItemIntvb:getvolumeinformationavbastrcomp (trw)Bpx __vbaStrComp (记得是两个'_')MSVBVM60!_vbastrcomp|soficeMSVBVM50! |VBAI4STRCtrl+Dbpx msvbvm60!__vbastrcomp do "d *(esp+0c)"(softice)按几次F5出册码出来了。
OllyDBG新手使用说明书

OllyDBG 新手使用说明书OLLYDBG完全教程(一)一、什么是 OllyDbg ?OllyDbg 是一种具有可视化界面的 32 位汇编 - 分析调试器。
它的特别之处在于可以在没有源代码时解决问题,并且可以处理其它编译器无法解决的难题。
Version 1.10 是最终的发布版本。
这个工程已经停止,我不再继续支持这个软件了。
但不用担心:全新打造的OllyDbg 2.00 不久就会面世!运行环境: OllyDbg 可以以在任何采用奔腾处理器的Windows 95、98、ME、NT或是 XP(未经完全测试)操作系统中工作,但我们强烈建议您采用 300-MHz以上的奔腾处理器以达到最佳效果。
还有, OllyDbg 是极占内存的,因此如果您需要使用诸如追踪调试[ Trace ]之类的扩展功能话,建议您最好使用 128MB以上的内存。
支持的处理器:OllyD 的数据格式,但是不支持SSE2 指令集。
bg 支持所有80x86、奔腾、 MMX、3DNOW!、 Athlon 扩展指令集、 SSE指令集以及相关配置:有多达百余个(天呀!)选项用来设置OllyDbg 的外观和运行。
数据格式: OllyDbg 的数据窗口能够显示的所有数据格式: HEX、ASCII 、UNICODE、 16/32 位有 / 无符号 /HEX 整数、32/64/80 位浮点数、地址、反汇编( MASM、IDEAL或是 HLA)、PE文件头或线程数据块。
帮助:此文件中包含了关于理解和使用 OllyDbg 的必要的信息。
如果您还有 Windows API帮助文件的话(由于版权的问题 win32.hlp 没有包括在内),您可以将它挂在 OllyDbg 中,这样就可以快速获得系统函数的相关帮助。
启动:您可以采用命令行的形式指定可执行文件、也可以从菜单中选择,或直接拖放到 OllyDbg 中,或者重新启动上一个被调试程序,或是挂接[ Attach ]一个正在运行的程序。
ollydb

标题:【原创】OllyDBG分析报告系列(1)---Int3断点作者:driverox时间: 2008-05-19,16:45:43链接: /showthread.php?t=65094最近学习逆向,对OD本身做了个逆向,也算是一个小小的锻炼吧。
呵呵,在这里以分析报告的形式贴出来,请大家批评指正。
谢谢。
Ollydbg(以下均简称为OD)中的Int3断点的主要功能是:在需要下断点的执行代码处将原来的代码改成0xCC,程序执行到此处后会报一个Int3异常,由OD捕获并处理。
当要执行该行代码时,将原来的代码改回来并执行,然后再恢复断点,这样就不会影响程序的正常运行了。
这里仅描述最常见的功能,其它的有兴趣的话可以分析一把。
先说明一下OD中的两个结构体,在IDA中,声明为如下格式:t_bpoint用来保存Int断点的相关信息00000000 t_bpoint struc ; (sizeof=0x11)00000000 addr dd ? ; // Address of breakpoint00000004 dummy dd ? ; // Always 100000008 type dd ? ; // Type of breakpoint, TY_xxx0000000C cmd db ? ; // Old value of command0000000D passcount dd ? ; // Actual pass count00000011 t_bpoint ends其中:addr为断点的地址,dummy始终为1,type为断点的类型,cmd为要用0xCC替换的指令码,passcount为需要断下的次数,0表示每次都断下。
t_sorted结构体保存了一种有序的数据:00000000 ; Descriptor of sorted table00000000 t_sorted struc ; (sizeof=0x138)00000000 name[MAXPATH] db 260 dup(?) ; char Name of table, as appears in error messages00000104 n dd ? ; int Actual number of entries00000108 nmax dd ? ; int Maximal number of entries0000010C selected dd ? ; int Index of selected entry or -100000110 seladdr dd ? ; ulong Base address of selected entry00000114 itemsize dd ? ; int Size of single entry00000118 version dd ? ; ulong Unique version of table0000011C data dd ? ; void* Elements, sorted by address00000120 sortfunc dd ? ; SORTFUNC Function which sorts data or NULL00000124 destfunc dd ? ; DESTFUNC Destructor function or NULL00000128 sort dd ? ; int Sorting criterium (column)0000012C sorted dd ? ; int Whether indexes are sorted00000130 index dd ? ; int Indexes, sorted by criterium00000134 suppresserr dd ? ; int Suppress multiple overflow errors00000138 t_sorted endsname是结构体的名称,用来区别不同类型的结构体n是数组元素的个数itemsize是数组元素的大小data 是指向各种数据结构数组的指针,这里使用的是int3断点,所以现在保存的是int3断点数据结构体数组的指针---------------------------------------------------------------------------------------------------------------------------------1)Int3断点的设置int3断点的设置是通过消息来处理的,对应右键点击菜单中的切换,其对应的消息为1E;此外还有热键F2、双击反汇编窗口等也能切换int3断点,转入的函数虽然不同,但是调用设置int3断点的函数都是同一个,就不再举例了。
第13天OllyDbg的常见问题

第13天OllyDbg的常见问题学的今天,OllyDbg的⼀些基础知识也学的差不多。
下⾯是常见问题的处理⽅法。
1.乱码问题004010CC 55 db 55004010CD 8B db 8B004010CE EC db EC004010CF 83 db 83004010D0 56 db 56OD将这段代码当成了数据,使⽤分析→分析代码功能强制OD去重新分析,还是不⾏可以分析→从模块中删除分析或在UDD⽬录删除相对于的UDD⽂件。
2.快速回到当前程序领空双击寄存器⾯板的EIP或者单击C按钮3.OllyDbg修改EIP光标移到到修改的地址上,在此处新建EIP4.UDD此⽬录中保存着⽂件的信息,⽅便下次调试,包括表情、注释、断点、监视、分析数据、条件等5.已经删除了断点,OD重新加载时⼜出现了配置⽂件中 Backup UDD file=1 修改下即可。
6.输⼊ push E000 提⽰未知表⽰符反汇编引擎不能识别E是字母还是数字,解决⽅法:push 0E000 前⾯加07.OllyDbg出现假死现象调试⼀些加壳程序,运⾏到断点(包括硬件断点),会出现假死。
解决⽅法:配置⽂件中如果“Restore windows” 是⼀个很⼤的值就设置 “Restore windows 0”8.微调窗⼝显⽰Ctrl+↑或者 Ctrl+↓9.执⾏复制到可执⾏⽂件时,提⽰错误“Unable to locate data in excutable file”修改的地⽅不在RawSize范围内。
修改PE⽂件。
10.把call调⽤改成函数名的形式shift + ; 输⼊函数名,其实就是设置⼀个标签11.设置OllyDbg为即时调试器管理员⾝份运⾏OD,选项→实时调试设置→设置为是实时调试器12.右键快捷菜单增加 “⽤OllyDbg打开”管理员⾝份运⾏OD,选项→添加到资源菜单右键打开。
外挂编写必备工具2OllyDBG (OD)入门系列

00440F70 |. EB 32 JMP SHORT CrackMe3.00440FA4
00440F72 |> 6A 00 PUSH 0
OllyDBG中各个窗口的功能如上图。简单解释一下各个窗口的功能,的反汇编代码,标题栏上的地址、HEX数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。用鼠标左键点击注释标签可以切换注释显示的方式。
ALT+F9:执行到用户代码。可用于从系统领空快速返回到我们调试的程序领空。(相当于SoftICE中的F11)
外挂编写必备工具2——OllyDBG(OD)入门系列2
OllyDBG入门系列(二)-字串参考
上一篇是使用入门,现在我们开始正式进入破解。今天的目标程序是看雪兄《加密与解密》第一版附带光盘中的镜像打包中的CFF Crackme #3,采用用户名/序列号保护方式。原版加了个UPX的壳。刚开始学破解先不涉及壳的问题,我们主要是熟悉用OllyDBG来破解的一般方法。我这里把壳脱掉来分析,附件是脱壳后的文件,直接就可以拿来用。先说一下一般软件破解的流程:拿到一个软件先别接着马上用OllyDBG调试,先运行一下,有帮助文档的最好先看一下帮助,熟悉一下软件的使用方法,再看看注册的方式。如果是序列号方式可以先输个假的来试一下,看看有什么反应,也给我们破解留下一些有用的线索。如果没有输入注册码的地方,要考虑一下是不是读取注册表或Key文件(一般称keyfile,就是程序读取一个文件中的内容来判断是否注册),这些可以用其它工具来辅助分析。如果这些都不是,原程序只是一个功能不全的试用版,那要注册为正式版本就要自己来写代码完善了。有点跑题了,呵呵。获得程序的一些基本信息后,还要用查壳的工具来查一下程序是否加了壳,若没壳的话看看程序是什么编译器编的,如VC、Delphi、VB等。这样的查壳工具有PEiD和FI。有壳的话我们要尽量脱了壳后再来用OllyDBG调试,特殊情况下也可带壳调试。下面进入正题:
第18课 内存断点法

第18课内存断点法特点:脱壳常用方法之一,常被用于加密性质的壳〔例1〕UnPackMe_Armadillo4.10.b(Armadillo4.10加壳,标准方式加壳)史上最为恐怖的armadillo大鳄鱼壳,曾吓倒无数人,其实几秒即可找到它的oep。
Ollydbg调试设置如下:选项全部打上勾,即全部忽略,如下图:Ollydbg载入程序后来到这里点菜单“查看”中的“内存”,如下图:对目标文件的.Text段“设置访问中断F2”,如下图:也可以“设置内存访问断点(A)”,结果是一样的。
如下图:设好后变红,如下图所示:点按钮或按F9后,程序即停在oep处:其修复较复杂,此处不讲述。
〔例2〕EXE Stealth2.72加壳的98记事本。
Ollydbg调试设置如下:Ollydbg选项除了“忽略在kernel32中发生的内存访问异常”打勾外,其余全部不打勾,即全部不忽略,如下图:Ollydbg载入程序后来到这里用IsDebuggerPresent插件隐藏OllyDbg,点按钮或按F9后,程序即停在这里:其下方显示,即发生int3中断,也就是CC指令,如上图。
点按钮或按F9后,程序即停在这里:下方显示出现int68中断触发的异常,需要shift+F9跳过;否则,点F9无反应。
一次shift+F9后,来到这里:需要接着按shift+F9以跳过异常,可是再按一次shift+F9后程序运行,就是传说中所谓的“跑飞”。
没办法,重新来过吧!重复上面的步骤,再来到上面的画面。
不能再按shift+F9了。
点菜单“查看”中的“内存”,如下图:对目标文件的.Text段“设置访问中断F2”,如下图:设好后变红,如下图所示:这时,可以按shift+F9了,来到这里下方显示Ok!oep到站了。
Ollydump插件脱壳后,输入表修复选方式1即能运行。
如下图:。
第三章:OllyDbg的使用(上)

教程三:OllyDbg的使用(上)本章中我将会介绍OllyDbg的使用。
Olly有许多的功能,唯一学好它们的方式是实践和练习。
也就是说,本教程也只是给你一个简单的概述。
此教程不会涉及额外的内容,后面会进行重点讨论。
到最后,你应该会比较好的掌握Olly。
本章包含了一些文件。
你能够下载那些文件,以及可以在这里下载到次教程的PDF版本。
它们包括一个我们将在Olly中用到的二进制文件、一个Olly备忘单、我使用的外观上有些不同的Olly以及一个新的ini文件。
你可以用这个ini文件替换掉Olly默认的ini,可以给新人提供一些帮助(感谢伟大的Lena151做的这些)。
你可以从这里直接下载或者从教程页面下载。
如果你更愿意用原版的Olly,你可以从这里下载。
一、载入应用第一步是将目的二进制文件载入Olly。
你可以将二进制文件拖放到Olly的反汇编窗口,或者点击顶部工具栏中的载入图标选择目的文件。
我们这里载入“FirstProgram.exe”,可以从本网站下载。
Olly会进行分析(Olly的底部状态栏会显示分析进程)然后停在程序的入口点(EP):需要注意的第一件事是EP的地址是401000,就是图片中的第一列。
这是可执行文件的一个相当标准的起点(该可执行文件至少没有加过壳或混淆过)。
如果你的看起来不太一样,并且Olly没有停在401000,你可以尝试点击Appearance菜单,然后选择debugging options,点击“Events”标签,并且确保“WinMain(if location is known)”被勾选上。
然后重启应用。
让我们给“FirstProgram.exe”的内存空间占用情况来张快照。
点击“Me”图标(如果你使用的是不同版本的Olly的话应该是“M”):如果你看地址那一列,你会看到401000那行包含有大小1000、名称“FirstPro”(FirstProgram的简写形式)、区块名“.text”、包含里是“SFX,code”。
ollydbg使用方法

ollydbg使用方法ollydbg是一款用于逆向工程和调试程序的强大工具。
它可以帮助我们分析和修改二进制文件,以理解程序的内部工作原理。
在本文中,我们将介绍ollydbg的使用方法,以帮助读者快速上手使用该工具。
一、ollydbg的安装和配置我们需要下载ollydbg的安装文件,并按照向导完成安装过程。
安装完成后,我们可以在程序菜单中找到ollydbg的快捷方式。
二、打开目标程序在ollydbg中打开目标程序的方法有两种:直接拖拽到ollydbg窗口中或通过菜单中的“文件”选项来打开程序。
无论使用哪种方法,我们都需要找到目标程序所在的路径,并选择打开。
三、调试程序1. 设置断点:在ollydbg中,断点是一种被设置在程序中的暂停执行的标记点。
我们可以通过双击程序中的某一行代码或者在该行代码上点击右键,然后选择“Toggle Breakpoint”来设置断点。
设置断点后,当程序执行到该行代码时,会自动停止执行,方便我们进行调试。
2. 单步执行:在调试过程中,我们可以使用单步执行功能来逐行执行程序。
我们可以通过菜单中的“调试”选项,或者使用快捷键F7来进行单步执行。
单步执行可以帮助我们逐行分析程序的执行流程,以及观察变量的值的变化。
3. 查看寄存器和内存:在调试过程中,我们经常需要查看程序中的寄存器和内存的值。
ollydbg提供了寄存器窗口和内存窗口,可以方便地查看这些信息。
我们可以通过菜单中的“窗口”选项,选择“寄存器”或者“内存”来打开相应的窗口。
4. 分析代码:在调试过程中,我们可以使用ollydbg的反汇编窗口来查看程序的汇编代码。
我们可以通过菜单中的“窗口”选项,选择“反汇编”来打开反汇编窗口。
反汇编窗口可以帮助我们分析程序的执行流程,以及理解代码的逻辑。
5. 修改变量值:在调试过程中,我们可以通过ollydbg来修改程序中的变量的值。
我们可以在变量所在的内存地址上点击右键,然后选择“修改”,来修改变量的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OllyDbg常用断点 查找子健 bp RegSetValue(A) 设置子健 bp RegSetValueEx(A) 设置子健
程序专用断点: BP __vbaObjSet (功能限制----灰色按钮 中断) bp __vbaFreeObjList
bp __vbaVarDup bp MessageBoxA 窗口断点 bp __vbaStrMove BP __vbaFreeVarList
bpx hmemcpy bp ShellExecuteA (弹出网页窗口 断点)
bp rtcMsgBox (杀窗专用) bp __vbaStrCmp bp __vbaVarMove bp VarBstrCmp(字符串比较 真码!!) bp __vbaStrCmp 字符串比较 文件长度:RtcFileLen bp __vbaFreeStr 对付VB程序重启验证 bp __vbaStrCmp 比较字符串是否相等 bp __vbaStrComp 比较字符串是否相等 bp __vbaVarTstNe 比较变量是否不相等 bp __vbaVarTstEq 比较变量是否相等 bp __vbaStrCopy 复制字符串 bp __vbaStrMove 移动字符串 bp MultiByteToWideChar ANSI字符串转换成Unicode字符串 bp WideCharToMultiByte Unicode字符串转换成ANSI字符串 bp __vbaStrComp bp __vbaStrCompVar bp __vbaStrTextCmp bp __vbaFileOpen bp __vbaInputFile bp __vbaFileSeek bp __vbaWriteFile bp __vbaFileClose bp rtcFileAttributes bp rtcFileDateTime bp rtcFileLen bp rtcFileLength bp __vbaVarInt bp __vbaVarCmpGe bp __vbaVarCmpGt bp __vbaVarCmpLe bp __vbaVarCmpLt bp __vbaVarCmpNe bp __vbaVarTextCmpEq bp __vbaVarTextCmpGe bp __vbaVarTextCmpGt bp __vbaVarTextCmpLe bp __vbaVarTextCmpLt bp __vbaVarTextCmpNe bp __vbaVarTextTstEq bp __vbaVarTextTstGe bp __vbaVarTextTstGt bp __vbaVarTextTstLe bp __vbaVarTextTstLt bp __vbaVarTextTstNe bp __vbaVarTstEq (字符串比较) bp __vbaVarTstGe bp __vbaVarTstGt bp __vbaVarTstLe bp __vbaVarTstLt bp __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 发出系统警告声(如果没有声卡就直接驱动系统喇叭发声)
vbaStrMove 移动字符串 __vbaVarCat 连接字符串 rtcMidCharVar 在字符串中取字符或者字符串! __vbaLenBstr 取字符串的长度 vbaVarT
stNe 变量比较 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载入程序调出注册窗口,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+F12 4,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常用比较断点 vbastrcmp vbastrcomp vbavartsteq 在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函数。
功能限制拦截断点: bp EnableMenuItem 禁止或允许菜单项 bp EnableWindow 禁止或允许窗口
拦截时间: bp GetLocalTime 获取本地时间 bp GetSystemTime 获取系统时间 bp GetFileTime 获取文件时间 bp GetTickCount 获得自系统成功启动以来所经历的毫秒数 bp GetCurrentTime 获取当前时间(16位) bp SetTimer 创建定时器 bp TimerProc 定时器超时回调函数 GetDlgItemInt 得指定输入框整数值 GetDlgItemText 得指定输入框输入字符串 GetDlgItemTextA 得指定输入框输入字符串