数据加载中……


 

 登   陆

我的分类(专题)
数据加载中……

链接

Blog信息
数据加载中……

 



破解断点设置技巧[总结自黑鹰vip]
樱木花盗 发表于 2008-5-21 23:35:53
常见断点设置

字符串
bp GetDlgItemTextA(W) ****
bp GetDlgItemInt
bp GetWindowTextA(W) ****
bp GetWindowWord
bmsg XXXX wm_gettext

对话框
bp MessageBeep
bp MessageBoxA(W) ****
bp MessageBoxExA(W)
bp DialogBoxParamA(W)
bp GreateWindowExA(W)
bp ShowWindow
bp UpdateWindow
bmsg XXXX wm_command

对于VB的程序用bp MessageBoxA是无法断下来的,bp rtcMsgBox

注册表相关
bp RegCreateKeyA(W)
bp RegDeleteKeyA(W)
bp RegQueryValueA(W)
bp RegCloseKey
bp RegOpenKeyA(W) ****

时间相关
bp GetLocalTime
bp GetFileTime
bp GetSystemtime

CD-ROM或磁盘相关
bp GetFileAttributesA(W)
bp GetFileSize
bp GetDriveType
bp GetLastError
bp ReadFile
bpio -h (CD-ROM端口地址) R

软件狗
bpio -h 278R
bpio -h 378R

INI初始化文件相关
bp GetPrivateProfileStringA  ****
bp GetPrivateProfileInt
bp WritePrivateProfileString
bp WritePrivateProfileInt

文件访问相关
bp ReadFile
bp WriteFile
bp CreateFileA  ****
bp SetFilePointer
bp GetSystemDirectory

访问注册表类常用API
bp RegOpenKeyA  打开一个现有的注册表项  ****
bp RegOpenKeyExA  打开一个现有的注册表项 ****
bp RegCreateKeyA 在指定的项下创建或打开一个项
bp RegCreateKeyExA 在指定项下创建新项的更复杂的方式
bp RegDeleteKeyA 删除现有项下方一个指定的子项
bp RegDeleteValueA 删除指定项下方的一个值
bp RegQueryValueA 获取一个项的设置值
bp RegQueryValueExA 获取一个项的设置值
bp RegSetValueA 设置指定项或子项的值 
bp RegSetValueExA 设置指定项的值
bp RegCloseKey 关闭系统注册表中的一个项(或键)

访问文件类常用API
bp CreateFileA 打开和创建文件、管道、邮槽、通信服务、设备以及控制台  ****
bp OpenFile 这个函数能执行大量不同的文件操作
bp ReadFile 从文件中读出数据 
bp ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调



朋友们一般都比较害怕VB的程序,原因之一就是VB使用的函数不合我们的“惯用”规则
下面我就来给大家介绍一下VB程序的常见函数
1) 数据类型转换:
a) __vbaI2Str    将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,768 到 32,767 之间)。
b)__vbaI4Str  将一个字符串转为长整型(4个字节)的数值形式(范围从-2,147,483,6482,147,483,647)
c)__vbar4Str  将一个字符串转为单精度单精度浮点型(4个字节)的数值形式
d)__vbar8Str  将一个字符串转为双精度单精度浮点型(8个字节)的数值形式
e) VarCyFromStr    (仅VB6库. 要调试,则在WINICE.DAT里必须有 OLEAUT32.DLL)字符串到变比型数据类型
f) VarBstrFromI2  (仅VB6库. 要调试,则在WINICE.DAT里必须有 OLEAUT32.DLL)整型数据到字符串:

2) 数据移动:
a) __vbaStrCopy      将一个字符串拷贝到内存,类似于 Windows API HMEMCPY
b) __vbaVarCopy    将一个变量值串拷贝到内存
c) __vbaVarMove    变量在内存中移动,或将一个变量值串拷贝到内存

3) 数学运算:
a)  __vbavaradd      两个变量值相加
b) __vbavarsub      第一个变量减去第二个变量
c) __vbavarmul    两个变量值相乘
d) __vbavaridiv    第一个变量除以第二个变量,得到一个整数商
e) __vbavarxor      两个变量值做异或运算

4) 程序设计杂项:
a) __vbavarfornext  这是VB程序里的循环结构, For... Next...  (Loop)
b) __vbafreestr    释放出字符串所占的内存,也就是把内存某个位置的字符串给抹掉
c) __vbafreeobj  释放出VB一个对象(一个窗口,一个对话框)所占的内存,也就是把内存某个位置的一个窗口,一个对话框抹掉
d) __vbastrvarval  从字符串特点位置上获取其值
e) multibytetowidechar  将数据转换为宽字符格式,VB在处理数据之都要这样做,在TRW2000显示为7.8.7.8.7.8.7.8
f) rtcMsgBox  调用一个消息框,类似于WINDOWS里的messagebox/a/exa,此之前一定有个PUSH命令将要在消息框中显示的数据压入椎栈
g) __vbavarcat    将两个变量值相连,如果是两个字符串,就连在一起
h) __vbafreevar  释放出变量所占的内存,也就是把内存某个位置的变量给抹掉
i) __vbaobjset
j)  __vbaLenBstr  获得一个字符串的长度,注:VB中一个汉字的长度也为1
k) rtcInputBox    显示一个VB标准的输入窗口,类似window's API getwindowtext/a, GetDlgItemtext/a
l) __vbaNew      调用显示一个对话框,类似 Windows' API Dialogbox
m) __vbaNew2    调用显示一个对话框,类似 Windows' API Dialogboxparam/a
n) rtcTrimBstr  将字串左右两边的空格去掉

5) 比较函数
a)  __vbastrcomp  比较两个字符串,类似于 Window's API lstrcmp
b)  __vbastrcmp  比较两个字符串,类似于 Window's API lstrcmp
c) __vbavartsteq  比较两个变量值是否相等
d)__vbaFpCmpCy                  - Compares Floating point to currency. sp;            Compares Floating point to currency

6) 在动态跟踪,分析算法时,尤其要注意的函数:
rtcMidCharVar  从字符串中取相应字符,VB中的MID函数,用法MID("字符串","开始的位置","取几个字符")
rtcLeftCharVar 从字符串左边取相应字符,VB中的用法:left("字符串","从左边开始取几个字符")
rtcRightCharVar 从字符串右边取相应字符,VB中的用法:Right("字符串","从右边开始取几个字符")
__vbaStrCat  用字符串的操作,就是将两个字符串合起来,在VB中只有一个&或+
__vbaStrCmp  字符串比较,在VB中只有一个=或<>
ASC()函数    取一个字符的ASC值,在反汇编时,还是有的movsx 操作数

7) 在函数中的缩写:
bool 布尔型数据(TRUE 或  FALSE)
str  字符串型数据 STRING
i2  字节型数据或双字节整型数据  BYTE or Integer
ui2  无符号双字节整型数据 
i4  长整型数据(4字节)  Long
r4  单精度浮点型数据(4字节)  Single
r8  双精度浮点型数据(8字节)  Double
cy  (8 个字节)整型的数值形式 Currency
var  变量    Variant
fp  浮点数据类型  Float Point
cmp  比较  compare
comp 比较  compare

Btw:
__vbavartsteq系列的还有__vbavartstne 不等于
__vbavartstGe,__vbavartstGt,__vbavartstLe,__vbavartstLt等,比较大于或小于

VB程序以其特有的函数特点
给新手朋友们开始的感觉较陌生、难
我们在第一期课程里面对VB程序的函数有详细的介绍,这一期就不
对其函数进行累述了,这一节课就先介绍下常规的方法
1、VBExplorer查找按钮事件
2、有提示框则bp rtcMsgBox
3、通过bp __vbaStrCmp/__vbaStrComp/__vbaVarTstEq
4、万能断点法(816C24法)

深度总结Delphi&BCB程序的破解思路
1、DEDE、PE Explorer作为强有力的辅助工具找按妞事件
2、Point-H法
3、bp GetDlgItem/GetDlgItemTextA(断输入框)
4、bp MessageBoxA(W)(断对话框)---Ctrl+N
5、字符串法---插件/搜索所有参考文本
6、如果程序界面标题有[未注册/注册/VIP版/标准版/钻石版] 之类字样的
可以通过查找FormCreate/FormShow----DEDE,找到关键标志位!
来判断程序怎么样的判断是否注册或者用户类型

阅读全文 | 回复(0) | 引用通告 | 编辑
 


发表评论:

    昵称:
    密码: (游客无须输入密码)
    主页:
    标题:
    数据加载中……


Powered by Oblog.