常用断点(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位)
GetModuleFileNameA
GetFileSize
Setfilepointer
fileopen
FindFirstFileA
ReadFile
拦截驱动器:
bp?GetDriveTypeA?获取磁盘驱动器类型
bp?GetLogicalDrives?获取逻辑驱动器符号
bp?GetLogicalDriveStringsA?获取当前所有逻辑驱动器的根驱动器路径
★★VB程序专用断点★★
文件长度:RtcFileLen
bp?__vbaFreeStr?对付VB程序重启验证
bp?__vbaStrCmp?比较字符串是否相等
bp?__vbaStrComp?比较字符串是否相等
bp?__vbaVarTstNe?比较变量是否不相等
bp?__vbaVarTstEq?比较变量是否相等
bp?__vbaStrCopy?复制字符串
bp?__vbaStrMove?移动字符串
bp?MultiByteToWideChar?ANSI字符串转换成Unicode字符串
bp?WideCharToMultiByte?Unicode字符串转换成ANSI字符串
===============?================
密码常用中断
Hmemcpy?(win9x专用)
GetDlgItemTextA
GetDlgItemInt
vb:
getvolumeinformationa
vbastrcomp?(trw)
Bpx?__vbaStrComp?(记得是两个?’_')
MSVBVM60!_vbastrcomp|sofice
MSVBVM50!?|
VBAI4STR
Ctrl+D
bpx?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)
时间常用中断
GetSystemTime
GetLocalTime
GetTickCount
vb:
rtcGetPresentDate?//取得当前日期
杀窗常用中断
Lockmytask?(win9x专用)
bp?ExitProcess?退出进程
DestroyWindow
mouse_event?(鼠标中断)
postquitmessage?(Cracking足彩xp,很有用^_^)
vb:
_rtcMsgBox
ini文件内容常用中断
GetPrivateProfileStringA
GetPrivateProfileProfileInt
key文件:
getprivateprofileint
ReadFile
CreateFileA
注册表常用中断
RegQueryvalueA
RegQueryvalueExA
狗加密中断
BPIO?-h?278?R
BPIO?-h?378?R
其它常用函数断点
CreateFileA?(读狗驱动程序),
DeviceIOControl,
FreeEnvironmentStringsA?(对付HASP非常有效).
Prestochangoselector?(16-bit?HASP’s),?’7242′?查找字符串?(对付圣天诺).具体含义参考下面的范例。
光盘xx中断
16:
getvolumeinformation
getdrivetype
int?2fh?(dos)
32:
GetDriveTypeA
GetFullPathNameA
GetWindowsDirectoryA
读磁盘中断
GETLASTERROR?返回扩充出错代码
限制中断
EnableMenuItem?允许、禁止或变灰指定的菜单条目
EnableWindow?允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰)
不知道软盘中断是什么了?还有其它特殊中断,不知道其他朋友可否说一下了?
如ockmytask?and?mouse_event,这些就不是api32函数?
win9x?与?win2k进行xx,以上中断有部分已经不能用了?
不知道在win2k上,以上常用中断函数是什么了?
也就是问密码、时间、窗口、ini、key、注册表、加密狗、光盘、软盘、限制等!
了解常用的中断,对xx分析可以做到事半功倍!
请大家说一下!还有如何xx了某个软件时,一重启就打回原形?
不知道下什么中断了?可以分为三种情况:
1.比较可能在注册表中
2.比较在特殊文件(*.key?*.ini?*.dat等)
3.比较在程序中,没有任何错误提示或者反译也找不到明显字符(这个就是我想问的)
还有一个是最难的,就是去掉水印!
也可以三种情况:
A.水印是位图文件(bitblt,creatBITMAP等位图函数)
B.水印是明显字符(反译分析)
C.水印不是明显字符(如:This?a?demo!它只是显示在另一个制作文件上,可是*.htm?*.exe等)
C.才是最难搞,也是很多人想知道的!包括我在内。不知道高手们有何提示了?
广告条:
可以分两种情况:
A.从创建窗口进手,可以用到movewindow或者其它窗口函数!
B.从位图进手,也可以用到bitblt或者其它位图函数!
{zh1}可以借助一些现有工具(如:api27,vwindset,freespy之类的工具)
葡萄虽无树,藤生棚中秧。
人处凡尘中,岂不惹尘埃?
小球[CCG]
那要看是在哪作的标记,通常是在注册表中留下信息!
在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
__vbaVarCompNe
VB的指针:
THROW
VB?DLL还调用了oleauto32.dll中的部分函数。oleauto32.dll是个通用的proxy/stub?DLL,其每个函数的原型 在<oleauto.h>中定义,并在MSDN中有详细描述。这也有助于理解VB?DLL中的函数的作用。
举例:
LEA?EAX,?[EBP-58]
PUSH?EAX
CALL?[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_USHORT
NT/2000下这个断点,当edx=1f0h,时,可以看见EDI地址内数据为扇区位置数据,必须先?在winice.dat?中装入 hal.sys?详细内容看ATAPI手册
补充篇:
关于对VB程序和时间限制程序的断点
CrackerABC
先给出修改能正确反编译VB程序的W32DASM的地址:
======================
offsets?0×16B6C-0×16B6D
修改机器码为:?98?F4
======================
VB程序的跟踪断点:
============
MultiByteToWideChar,
rtcR8ValFromBstr,
WideCharToMultiByte,
__vbaStrCmp
__vbaStrComp
__vbaStrCopy
__vbaStrMove
__vbaVarTstNe
rtcBeep
rtcGetPresentDate?(时间API)
rtcMsgBox
=========
时间限制断点:
================
CompareFileTime
GetLocalTime
GetSystemTime
GetTimeZoneInformation
msvcrt.diffTime()
msvcrt.Time()
================
一般处理
bpx?hmemcpy
bpx?MessageBox
bpx?MessageBoxExA
bpx?MessageBeep
bpx?SendMessage
bpx?GetDlgItemText
bpx?GetDlgItemInt
bpx?GetWindowText
bpx?GetWindowWord
bpx?GetWindowInt
bpx?DialogBoxParamA
bpx?CreateWindow
bpx?CreateWindowEx
bpx?ShowWindow
bpx?UpdateWindow
bmsg?xxxx?wm_move
bmsg?xxxx?wm_gettext
bmsg?xxxx?wm_command
bmsg?xxxx?wm_activate
时间相关
bpint?21?if?ah==2A?(DOS)
bpx?GetLocalTime
bpx?GetFileTime
bpx?GetSystemtime
CD-ROM?或?磁盘相关
bpint?13?if?ah==2?(DOS)
bpint?13?if?ah==3?(DOS)
bpint?13?if?ah==4?(DOS)
bpx?GetFileAttributesA
bpx?GetFileSize
bpx?GetDriveType
bpx?GetLastError
bpx?ReadFile
bpio?-h?(Your?CD-ROM?Port?Address)?R
软件狗相关
bpio?-h?278?R
bpio?-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?ReadFile
bpx?WriteFile
bpx?CreateFile
bpx?SetFilePointer
bpx?GetSystemDirectory
INI?初始化文件相关
bpx?GetPrivateProfileString
bpx?GetPrivateProfileInt
bpx?WritePrivateProfileString
bpx?WritePrivateProfileInt
注册表相关
bpx?RegCreateKey
bpx?RegDeleteKey
bpx?RegQueryvalue
bpx?RegCloseKey
bpx?RegOpenKey
注册标志相关
bpx?cs:eip?if?EAX==0
内存标准相关
bpmb?cs:eip?rw?if?0×30:0×45AA==0
显示相关
bpx?0×30:0×45AA?do?”d?0×30:0×44BB”
bpx?CS:0×66CC?do?”??EAX”
查找窗口
FindWindowA
BP?SetFilePointer
bpx?hmemcpy?;xx{wn}断点,拦截内存拷贝动作(注意: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)==’****’?)
bpx?RegOpenKeyExA(W)?;打开子健?(?例:bpx?RegOpenKeyEx?if?* (esp->8)==’****’?)
bpx?RegQueryValue(A/W)?;查找子健?(?例:bpx?RegQueryValue(A)?if?* (esp->8)==’****’?)
bpx?RegQueryValueEx(A/W)?;查找子健?(?例:bpx?RegQueryValueEx?if?* (esp->8)==’****’?)
bpx?RegSetValue(A/W)?;设置子健?(?例:bpx?RegSetValue(A)?if?* (esp->8)==’****’?)
bpx?RegSetValueEx(A/W)?;设置子健?(?例:bpx?RegSetValueEx(A)?if?* (esp->8)==’****’?)
注意:’****’为指定子键名的前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(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!rtcMsgBox
bpx?msvbvm60!__vbaStrCmp
bpx?msvbvm60!__vbaStrComp
bpx?msvbvm60!__vbaStrCompVar
bpx?msvbvm60!__vbaStrTextCmp
bpx?msvbvm60!__vbaFileOpen
bpx?msvbvm60!__vbaInputFile
bpx?msvbvm60!__vbaFileSeek
bpx?msvbvm60!__vbaWriteFile
bpx?msvbvm60!__vbaFileClose
bpx?msvbvm60!rtcFileAttributes
bpx?msvbvm60!rtcFileDateTime
bpx?msvbvm60!rtcFileLen
bpx?msvbvm60!rtcFileLength
bpx?msvbvm60!__vbaVarInt
bpx?msvbvm60!__vbaVarCmpGe
bpx?msvbvm60!__vbaVarCmpGt
bpx?msvbvm60!__vbaVarCmpLe
bpx?msvbvm60!__vbaVarCmpLt
bpx?msvbvm60!__vbaVarCmpNe
bpx?msvbvm60!__vbaVarTextCmpEq
bpx?msvbvm60!__vbaVarTextCmpGe
bpx?msvbvm60!__vbaVarTextCmpGt
bpx?msvbvm60!__vbaVarTextCmpLe
bpx?msvbvm60!__vbaVarTextCmpLt
bpx?msvbvm60!__vbaVarTextCmpNe
bpx?msvbvm60!__vbaVarTextTstEq
bpx?msvbvm60!__vbaVarTextTstGe
bpx?msvbvm60!__vbaVarTextTstGt
bpx?msvbvm60!__vbaVarTextTstLe
bpx?msvbvm60!__vbaVarTextTstLt
bpx?msvbvm60!__vbaVarTextTstNe
bpx?msvbvm60!__vbaVarTstEq
bpx?msvbvm60!__vbaVarTstGe
bpx?msvbvm60!__vbaVarTstGt
bpx?msvbvm60!__vbaVarTstLe
bpx?msvbvm60!__vbaVarTstLt
bpx?msvbvm60!__vbaVarTstNe
注意:VB程序仍然可以使用普通API函数,只要函数“最终”CALL了这个函数
上面的断点对应VB6程序,如果是VB5程序则将msvbvm60改成msvbvm50即可
——————–转自看雪学院
文章标题:
链接地址: