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字符串

=============== ================

password经常使用中断

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‘ 查找字符串 (对付圣天诺).详细含义參考以下的范例。

 

光盘破解中断

16:

getvolumeinformation

getdrivetype

int 2fh (dos)

32:

GetDriveTypeA

GetFullPathNameA

GetWindowsDirectoryA 

读磁盘中断

GETLASTERROR 返回扩充出错代码  

限制中断

EnableMenuItem 同意、禁止或变灰指定的菜单栏目

EnableWindow 同意或禁止鼠标和键盘控制指定窗体和条目(禁止时菜单变灰)  

不知道软盘中断是什么了?还有其他特殊中断。不知道其他朋友可否说一下了?

如ockmytask and mouse_event。这些就不是api32函数?

win9x 与 win2k进行破解,以上中断有部分已经不能用了?

不知道在win2k上,以上经常使用中断函数是什么了?

也就是问password、时间、窗体、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

__vbaVarCompNe  

经常使用断点(2)

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 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()

================  

一般处理

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 0x30:0x45AA==0  

显示相关

bpx 0x30:0x45AA do "d 0x30:0x44BB"

bpx CS:0x66CC do "?

EAX"

查找窗体

FindWindowA

BP SetFilePointer

bpx hmemcpy ;破解万能断点,拦截内存拷贝动作(注意:Win9x专用断点)

bpx Lockmytask ;当你用其他断点都无效时能够试一下,这个断点拦截按键的动作(Win9x专用)

实在找不到断点能够试以下的方法:

bmsg handle wm_gettext ;拦截注冊码(handle为相应窗体的句柄)

bmsg handle wm_command ;拦截OKbutton(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是并行打印port

bpio -h 3F8(或2F8、3E8、2E8) R ;3F8、2F8、3E8、2E8是串行port

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就可以

文章来源于互联网,版权有原作者全部。假设侵权,请联系博主。

时间: 2024-10-09 22:11:49

OD调试程序经常使用断点大全的相关文章

VB断点大全

MultiByteToWideChar, ANSI字符串转换成Unicode字符串WideCharToMultiByte, Unicode字符串转换成ANSI字符串 //--------------------------------------------------rtcR8ValFromBstr //把字符串转换成浮点数 rtcMsgBox 显示一信息对话框 rtcBeep //让扬声器叫唤 rtcGetPresentDate //取得当前日期 //--------------------

API断点大全

1.限制程序功能函数 EnableMenuItem 允许.禁止或变灰指定的菜单条目EnableWindow 允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰) 2.对话框函数 CreateDialog 从资源模板建立一非模态对话窗 CreateDialogParam 从资源模板建立一非模态对话窗 CreateDialogIndirect 从内存模板建立一非模态对话窗 CreateDialogIndirectParam 从内存模板建立一非模态对话窗 DialogBox 从资源模板建立一模态对

OD调试程序常用断点大全

常用断点 拦截窗口: bp CreateWindow 创建窗口 bp CreateWindowEx(A) 创建窗口 bp ShowWindow 显示窗口 bp UpdateWindow 更新窗口 bp GetWindowText(A) 获取窗口文本 拦截消息框: bp MessageBox(A) 创建消息框 bp MessageBoxExA 创建消息框 bp MessageBoxIndirect(A) 创建定制消息框 bp IsDialogMessageW 拦截警告声: bp MessageBe

认识OD的两种断点

OllyDBG从原理上来区分,有两种不同的断点:软件断点和硬件断点. 也许会有朋友说那不是还有内存断点吗? 内存断点严格来说是属于一种特殊的软件断点. 内存断点: 内存断点每次只能设置一个,假如你设置了另一个内存断点,则上一个会被自动删除. 设置一个内存断点,会改变整块(4KB)内存的属性,哪怕你只设置一个字节的内存断点. 另外还需要提一下的是,内存断点会明显降低OD的性能,因为OD经常会校对内存. 软件断点: 当我们按下F2设置的断点就是软件断点. 设置该断点的原理是在断点处重写代码,插入一个

Linux高级编程--04.GDB调试程序(设置断点)

调试已运行的程序 在UNIX下用ps查看正在运行的程序的PID(进程ID),然后用gdb PID格式挂接正在运行的程序. 先用gdb 关联上源代码,并进行gdb,在gdb中用attach命令来挂接进程的PID.并用detach来取消挂接的进程. 暂停 / 恢复程序运行 调试程序中,暂停程序运行是必须的,GDB可以方便地暂停程序的运行.你可以设置程序的在哪行停住,在什么条件下停住,在收到什么信号时停往等等.以便于你查看运行时的变量,以及运行时的流程. 当进程被gdb停住时,你可以使用info pr

汇编命令及OD常用命令及断点设置

汇编32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX)对低16位数据的存取,不会影响高16位的数据.这些低16位寄存器分别命名为:AX.BX.CX和DX,它和先前的CPU中的寄存器相一致.4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL.BX:BH-BL.CX:CH-CL.DX:DH-DL),每个寄存器都有自己的名称,可独立存取. 寄存器EAX通常称为累加器(Accumulator)     用累加器进行的操作可能需要更少时间.可用于乘. 除.输入/

(转)调试程序时设置断点的原理

简单总结:有软件断点和硬件断点 软件断点:软件断点在X86系统中为中断指令INT 3,其二进制代码opcode是0xCC.当程序执行到INT 3指令时,会引发软件中断.操作系统的INT 3中断处理器会寻找注册在该进程上的调试处理程序.从而像Windbg和VS等等调试器就有了上下其手的机会.程序出错时常看到的”烫烫烫“.”锟斤拷“.”屯屯屯“等与这个终端指令有关 硬件断点:X86系统提供8个调试寄存器(DR0~DR7)和2个MSR用于硬件调试. 转自:https://zhuanlan.zhihu.

OD调试程序3

条件跳转指令的图片,作为以后的参考. 载入了reverses.eve程序,F8下去,发现一个跳转,调用了一个函数,致使程序结束.于是我们绕过它,参考上面的 跳转指令图片. 然后继续F8 又会发现一个跳转,我们需要它跳,不然下面有个无条件跳转,又会进入一个陷阱 继续F8,又会发现一个跳转,我们不要它跳,于是我们根据置顶的图,实现了不跳转. 继续F8, 发现一个跳转,会发现连接了下一个陷阱,我们绕过它,于是就成功了. 然后保存爆破过后的程序 全选修改过的痕迹,生成新的reverses1.exe文件.

OD使用经验【转载】

文章整理发布:黑客风云  1.我的os是winXP,无法使用trw2000,而softice装了多次均未成功,还蓝屏死机多次.郁闷. 2.友好的gui界面,不像softice.可以边干活边听歌,不像softice,把整个os都挂起了.多用两次,连时间都不知道了. 3.强大的内存查看功能,再不用什么-d了,而且跳转方便,爽!一目了然. 4.强大的右键菜单功能 菜单: 文件: 1.其中包括该菜单的下部有上次打开的纪录,该纪录保存有上次未清除的断点. 2.附加.对付那些Anti-Debug程序.先运行