OllyDbg常用断点.docx
- 文档编号:26175493
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:24
- 大小:24.29KB
OllyDbg常用断点.docx
《OllyDbg常用断点.docx》由会员分享,可在线阅读,更多相关《OllyDbg常用断点.docx(24页珍藏版)》请在冰豆网上搜索。
OllyDbg常用断点
OllyDbg常用断点
查找子健
bpRegSetValue(A)设置子健
bpRegSetValueEx(A)设置子健
程序专用断点:
BP__vbaObjSet(功能限制----灰色按钮中断)
bp__vbaFreeObjList
bp__vbaVarDup
bpMessageBoxA窗口断点
bp__vbaStrMove
BP__vbaFreeVarList
bpxhmemcpy
bpShellExecuteA(弹出网页窗口断点)
bprtcMsgBox(杀窗专用)
bp__vbaStrCmp
bp__vbaVarMove
bpVarBstrCmp(字符串比较真码!
!
)
bp__vbaStrCmp字符串比较
文件长度:
RtcFileLen
bp__vbaFreeStr对付VB程序重启验证
bp__vbaStrCmp比较字符串是否相等
bp__vbaStrComp比较字符串是否相等
bp__vbaVarTstNe比较变量是否不相等
bp__vbaVarTstEq比较变量是否相等
bp__vbaStrCopy复制字符串
bp__vbaStrMove移动字符串
bpMultiByteToWideCharANSI字符串转换成Unicode字符串
bpWideCharToMultiByteUnicode字符串转换成ANSI字符串
bp__vbaStrComp
bp__vbaStrCompVar
bp__vbaStrTextCmp
bp__vbaFileOpen
bp__vbaInputFile
bp__vbaFileSeek
bp__vbaWriteFile
bp__vbaFileClose
bprtcFileAttributes
bprtcFileDateTime
bprtcFileLen
bprtcFileLength
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即可
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发出系统警告声(如果没有声卡就直接驱动系统喇叭发声)
vbaStrMove 移动字符串
__vbaVarCat连接字符串
rtcMidCharVar在字符串中取字符或者字符串!
__vbaLenBstr取字符串的长度
vbaVarT
stNe 变量比较
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
__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载入程序,命令行下断点。
bprtcMsgBox
堆栈友好提示
确定注册失败按钮返回。
接着向上找出点注册按钮执行的代码第一句,可以吗?
当然行,根据我们知道程序员
写一个事件执行的代码是如这种,
各种语言都差不多。
3,OD载入程序,命令行下断点。
bprtcMsgBox
任意填入伪注册码9999999999999999999
确定后中断
堆栈友好提示
确定注册失败按钮返回。
W32Dasm反汇编程序,Shiht+F12
4,VB中的messagebox是一个消息框,汇编中用rtcMsgBox下断点.用olldbg载入程序,Alt+e,在可执行文件模块中
找到Msvbvm60.dll,双击它,
在代码窗
口点右键-搜索-当前模块中的名称中的rtcMsgBox函数,双击它,在6A362F2955PUSHEBP这一句双击下
断点,关掉多余的窗口,只留下
cpu调试主窗口,F9运行程序,点?
号按钮,随便输入987654321后,回车后立即中断,然后Ctrt+f9执行到返回地址,
因为这是msvbvm60的领空,
我们要回到程序领空.秘密记事本弹出message错误提示信息,点确定,向上看,再按F8就回到
5,为MicrosoftVisualBasic6.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函数。
功能限制拦截断点:
bpEnableMenuItem禁止或允许菜单项
bpEnableWindow禁止或允许窗口
拦截时间:
bpGetLocalTime获取本地时间
bpGetSystemTime获取系统时间
bpGetFileTime获取文件时间
bpGetTickCount获得自系统成功启动以来所经历的毫秒数
bpGetCurrentTime获取当前时间(16位)
bpSetTimer创建定时器
bpTimerProc定时器超时回调函数
GetDlgItemInt得指定输入框整数值
GetDlgItemText得指定输入框输入字符串
GetDlgItemTextA得指定输入框输入字符串
拦截文件:
bpCreateFileA创建或打开文件(32位)
bpOpenFile打开文件(32位)
bpReadFile读文件(32位)
bpWriteFile写文件(32位)
GetModuleFileNameA
GetFileSize
Setfilepointer
fileopen
FindFirstFileA
ReadFile
拦截驱动器:
bpGetDriveTypeA获取磁盘驱动器类型
bpGetLogicalDrives获取逻辑驱动器符号
bpGetLogicalDriveStringsA获取当前所有逻辑驱动器的根驱动器路径
★★VB程序专用断点★★
===============================
密码常用中断
Hmemcpy(win9x专用)
GetDlgItemTextA
GetDlgItemInt
vb:
getvolumeinformationa
vbastrcomp(trw)
Bpx__vbaStrComp(记得是两个’_’)
MSVBVM60!
_vbastrcomp|sofice
MSVBVM50!
|
VBAI4STR
Ctrl
+D
bpxmsvbvm60!
__vbastrcompdo"d*(esp+0c)"(softice)
按几次F5出册码出来了。
bpxregqueryvalueexado"desp->8"(trw)
vbaVarTstEq判断是否注册的函数
(0042932F66898580FEFFFFmovwordptr[ebp+FFFFFE80],ax
改为0042932F66898580FEFFFFmovwordptr[ebp+FFFFFE80],bx)
时间常用中断
GetSystemTime
GetLocalTime
GetTickCount
vb:
rtcGetPresentDate//取得当前日期
杀窗常用中断(VB程序NAG窗口专用)
Lockmytask(win9x专用)
bpExitProcess退出进程
DestroyWindow
mouse_event(鼠标中断)
postquitmessage(Cracking足彩xp,很有用^_^)
vb:
BPrtcMsgBox ('NAG'窗口专用!
!
!
)
ini文件内容常用中断
GetPrivateProfileStringA
GetPrivateProfileProfileInt
key文件:
getprivateprofileint
ReadFile
CreateFileA
注册表常用中断
RegQueryvalueA
RegQueryvalueExA
狗加密中断
BPIO-h278R
BPIO-h378R
其它常用函数断点
CreateFileA(读狗驱动程序),
DeviceIOControl,
FreeEnvironmentStringsA(对付HASP非常有效).
Prestochangoselector(16-bitHASP’s),’7242’查找字符串(对付圣天诺).具体含义参考下面的范例。
光盘破解中断
16:
getvolumeinformation
getdrivetype
int2fh(dos)
32:
GetDriveTypeA
GetFullPathNameA
GetWindowsDirectoryA
读磁盘中断
GETLASTERROR返回扩充出错代码
限制中断
EnableMenuItem允许、禁止或变灰指定的菜单条目
EnableWindow允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰)
不知道软盘中断是什么了?
还有其它特殊中断,不知道其他朋友可否说一下了?
如ockmytaskandmouse_event,这些就不是api32函数?
win9x与win2k进行破解,以上中断有部分已经不能用了?
不知道在win2k上,以上常用中断函数是什么了?
也就是问密码、时间、窗口、ini、key、注册表、加密狗、光盘、软盘、限制等!
了解常用的中断,对破解分析可以做到事半功倍!
请大家说一下!
还有如何破解了某个软件时,一重启就打回原形?
不知道下什么中断了?
可以分为三种情况:
1.比较可能在注册表中
2.比较在特殊文件(*.key*.ini*.dat等)
3.比较在程序中,没有任何错误提示或者反译也找不到明显字符(这个就是我想问的)
还有一个是最难的,就是去掉水印!
也可以三种情况:
A.水印是位图文件(bitblt,creatBITMAP等位图函数)
B.水印是明显字符(反译分析)
C.水印不是明显字符(如:
Thisademo!
它只是显示在另一个制作文件上,可是*.htm*.exe等)
C.才是最难搞,也是很多人想知道的!
包括我在内。
不知道高手们有何提示了?
广告条:
可以分两种情况:
A.从创建窗口进手,可以用到movewindow或者其它窗口函数!
B.从位图进手
也可以用到bitblt或者其它位图函数!
最后可以借助一些现有工具(如:
api27,vwindset,freespy之类的工具)
那要看是在哪作的标记,通常是在注册表中留下信息!
在softice中就要用bpxregqueryvalueexado"desp->8"来中断看看,
在trw中要用bpxregqueryvalueexado"d*(esp+8)"来中断看看。
还有的是在本目录下留下注册信息,常见的有.dat.ini.dll等等,
我是用bpxreadfile来中断的,还有的是在windows目录下留下注册信息。
你可以借助专用的工具帮助你查看,入filemon等!
vb:
1、__vbaVarTstNe//比较两个变量是否不相等
2、rtcR8ValFromBstr//把字符串转换成浮点数
3、rtcMsgBox显示一信息对话框(NAG窗口)
4、rtcBeep//让扬声器叫唤
5、rtcGetPresentDate//取得当前日期
针对字串:
__vbaStrComp
__vbaStrCmp
__vbaStrCompVar
__vbaStrLike
__vbaStrTextComp
__vbaStrTextLike
针对变量:
__vbaVarCompEq
__vbaVarCompLe
__vbaVarCompLt
__vbaVarCompGe
__vbaVarCompGt
__vbaVarCompNe
VB的指针:
THROW
VBDLL还调用了oleauto32.dll中的部分函数。
oleauto32.dll是个通用的proxy/stubDLL,其每个函数的原型在<oleauto.h>中定义,并在MSDN中有详细描述。
这也有助于理解VBDLL中的函数的作用。
举例:
LEAEAX,[EBP-58]
PUSHEAX
CALL[MSVBVM60!
__vbaI4Var]
执行call之前敲ddeax+8,得到的值为3;
执行完call之后,eax=3
从而可知__vbaI4Var的作用是将一个VARIANT转换为I4(即一个长整数)。
__vbaVarTstNe似乎是用来进行自校验的,正常情况下返回值为0。
已知适用的软件有:
网络三国智能机器人、音乐贺卡厂。
当这两个软件被脱壳后都回出错,网络三国智能机器人会产生非法*作,而音乐贺卡厂会告诉你是非法拷贝,通过修改__vbaVarTstNe的返回值都可让它们正常运行。
所以当您遇到一个VB软件,脱壳后无法正常运行,而又找不出其它问题时,可试试拦截这个函数,说不定会有用哦。
8-)
API不太知道,也许可以通过BIOS在98平台上读写扇区,不过在2000/NT下可以通过内黑ATAPI,HAL写扇区
machoman[CCG]
bpxWRITE_PORT_BUFFER_USHORT
NT/2000下这个断点,当edx=1f0h,时,可以看见EDI地址内数据为扇区位置数据,必须先在winice.dat中装入hal.sys详细内容看ATAPI手册
补充篇:
关于对VB程序和时间限制程序的断点
CrackerABC
先给出修改能正确反编译VB程序的W32DASM的地址:
======================
offsets0x16B6C-0x16B6D
修改机器码为:
98F4
======================
VB程序的跟踪断点:
============
MultiByteToWideChar,
rtcR8ValFromBstr,
WideCharToMultiByte,
__vbaStrCmp
__vbaStrComp
__vbaStrCopy
__vbaStrMove
__vbaVarTstNe
rtcBeep
rtcGetPresentDate(时
间API)
BPrtcMsgBox(杀窗专用)
=========
时间限制断点:
================
CompareFileTime
GetLocalTime
GetSystemTime
GetTimeZoneInformation
msvcrt.diffTime()
msvcrt.Time()
================
一般处理
bpxhmemcpy
bpxMessageBox
bpxMessageBoxExA
bpxMessageBeep
bpxSendMessage
bpxGetDlgItemText
bpxGetDlgItemInt
bpxGetWindowText
bpxGetWindowWord
bpxGetWindowInt
bpxDialogBoxParamA
bpxCreateWindow
bpxCreateWindowEx
bpxShowWindow
bpxUpdateWindow
bmsgxxxxwm_move
bmsgxxxxwm_gettext
bmsgxxxxwm_command
bmsgxxxxwm_activate
时间相关
bpint21ifah==2A(DOS)
bpxGetLocalTime
bpxGetFileTime
bpxGetSystemtime
CD-ROM或磁盘相关
bpint13ifah==2(DOS)
bpint13ifah==3(DOS)
bpint13ifah==4(DOS)
bpxGetFileAttributesA
bpxGetFileSize
bpxGetDriveType
bpxGetLastError
bpxReadFile
bpio-h(YourCD-ROMPortA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OllyDbg 常用 断点
![提示](https://static.bdocx.com/images/bang_tan.gif)