zoukankan      html  css  js  c++  java
  • 常用断点设置

    常用断点设置

    bpx hmemcpy
    bpx Lockmytask

    实在找不到断点可以试下面的方法:

    bmsg handle wm_gettext
    bmsg handle wm_command

    拦截窗口:

    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 RegOpenKeyExA(W)                打开子健
    bpx RegQueryValue(A/W)              查找子健
    bpx RegQueryValueEx(A/W)            查找子健
    bpx RegSetValue(A/W)                设置子健
    bpx RegSetValueEx(A/W)              设置子健

    功能限制拦截断点:
                        
    bpx EnableMenuItem                  禁止或允许菜单项
    bpx EnableWindow                    禁止或允许窗口
    bmsg hMenu wm_command          拦截菜单按键事件,其中hMenu为菜单句柄
    bpx K32Thk1632Prolog                    

    拦截时间:

    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
    VB常用的一些函数:
       MultiByteToWideChar   将ANSI字符串转换成UNICODE字符
            WideCHatToMultiByte  将UNICODE字符转换成ANSI字符
            rtcT8ValFromBstr   把字符转换成浮点数  
            vbaStrCmp       比较字符串(常用断点)
            vbaStrComp      字符串比较(常用断点)
            vbaStrCopy      复制字符串
            StrConv        转换字符串
            vbaStrMove      移动字符串
            __vbaVarCat           连接字符串
            rtcMidCharVar         在字符串中取字符或者字符串!
            __vbaLenBstr          取字符串的长度
            vbaVarTstNe      变量比较
            vbaVarTstEq      变量比较
            rtcMsgBox       显示对话框
            VarBstrCmp      比较字符串
            VarCyCmp       比较字符串





    常用断点设置API函数原型


    --------------------------------------------------------------------------------

    HWND CreateWindow(

    LPCTSTR lpClassName, // 指向注册窗口类名的指针
    LPCTSTR lpWindowName, // 指向窗口名的指针
    DWORD dwStyle, // 窗口样式
    int x, // 窗口水平位置
    int y, // 窗口垂直位置
    int nWidth, // 窗口宽度
    int nHeight, // 窗口高度
    HWND hWndParent, // 父窗口句柄
    HMENU hMenu, // 菜单句柄
    HANDLE hInstance, // 应用程序实例句柄
    LPVOID lpParam // 指向创建窗口所需的数据
    );

    返回值:如果成功就返回新窗口的句柄;失败则返回NULL值


    --------------------------------------------------------------------------------

    HWND CreateWindowEx(

    DWORD dwExStyle, // 扩展窗口样式
    LPCTSTR lpClassName, // 指向注册窗口类名的指针
    LPCTSTR lpWindowName, // 指向窗口名的指针
    DWORD dwStyle, // 窗口样式
    int x, // 窗口水平位置
    int y, // 窗口垂直位置
    int nWidth, // 窗口宽度
    int nHeight, // 窗口高度
    HWND hWndParent, // 父窗口句柄
    HMENU hMenu, // 菜单句柄
    HINSTANCE hInstance, // 应用程序实例句柄
    LPVOID lpParam // 指向创建窗口所需的数据
    );

    返回值:如果成功就返回新窗口的句柄;失败则返回NULL值


    --------------------------------------------------------------------------------

    BOOL ShowWindow(

    HWND hWnd, // 窗口句柄
    int nCmdShow // 窗口显示状态
    );

    返回值:如果先前的窗口可见就返回非零值;如果先前的窗口隐藏则返回零值


    --------------------------------------------------------------------------------

    BOOL UpdateWindow(

    HWND hWnd // 窗口句柄
    );

    返回值:如果成功就返回非零值;失败则返回零值


    --------------------------------------------------------------------------------

    int GetWindowText(

    HWND hWnd, // 窗口或文本控件句柄
    LPTSTR lpString, // 缓冲区地址
    int nMaxCount // 最大字符数
    );

    返回值:如果成功就返回文本长度;失败则返回零值


    --------------------------------------------------------------------------------

    int MessageBox(

    HWND hWnd, // 父窗口句柄
    LPCTSTR lpText, // 消息框文本地址
    LPCTSTR lpCaption, // 消息框标题地址
    UINT uType // 消息框样式
    );

    返回值:如果失败则返回零值;如果成功,返回值为如下之一:
    IDABORT Abort 按钮被选择
    IDCANCEL Cancel 按钮被选择
    IDIGNORE Ignore 按钮被选择
    IDNO No 按钮被选择
    IDOK OK 按钮被选择
    IDRETRY Retry 按钮被选择
    IDYES Yes 按钮被选择


    --------------------------------------------------------------------------------

    int MessageBoxEx(

    HWND hWnd, // 父窗口句柄
    LPCTSTR lpText, // 消息框文本地址
    LPCTSTR lpCaption, // 消息框标题地址
    UINT uType, // 消息框样式
    WORD wLanguageId // 语言标识
    );

    返回值:如果失败则返回零值;如果成功,返回值为如下之一:
    IDABORT Abort 按钮被选择
    IDCANCEL Cancel 按钮被选择
    IDIGNORE Ignore 按钮被选择
    IDNO No 按钮被选择
    IDOK OK 按钮被选择
    IDRETRY Retry 按钮被选择
    IDYES Yes 按钮被选择


    --------------------------------------------------------------------------------

    int MessageBoxIndirect(

    LPMSGBOXPARAMS lpMsgBoxParams // 消息框参数结构地址
    );

    返回值:如果失败则返回零值;如果成功,返回值为如下之一:
    IDABORT Abort 按钮被选择
    IDCANCEL Cancel 按钮被选择
    IDIGNORE Ignore 按钮被选择
    IDNO No 按钮被选择
    IDOK OK 按钮被选择
    IDRETRY Retry 按钮被选择
    IDYES Yes 按钮被选择


    --------------------------------------------------------------------------------

    BOOL MessageBeep(

    UINT uType // 声音类型
    );

    声音类型:
    0xFFFFFFFF Standard beep using the computer speaker
    MB_ICONASTERISK SystemAsterisk
    MB_ICONEXCLAMATION SystemExclamation
    MB_ICONHAND SystemHand
    MB_ICONQUESTION SystemQuestion
    MB_OK SystemDefault

    返回值:如果成功就返回文本长度;失败则返回零值


    --------------------------------------------------------------------------------

    int DialogBox(

    HINSTANCE hInstance, // 应用程序实例句柄
    LPCTSTR lpTemplate, // 对话框模板指针
    HWND hWndParent, // 父窗口句柄
    DLGPROC lpDialogFunc // 对话框处理函数指针
    );

    返回值:如果成功就返回nResult参数,用于EndDialog结束对话框;失败则返回-1


    --------------------------------------------------------------------------------

    int DialogBoxParam(

    HINSTANCE hInstance, // 应用程序实例句柄
    LPCTSTR lpTemplateName, // 对话框模板指针
    HWND hWndParent, // 父窗口句柄
    DLGPROC lpDialogFunc, // 对话框处理函数指针
    LPARAM dwInitParam // 初始化值
    );

    返回值:如果成功就返回nResult参数,用于EndDialog结束对话框;失败则返回-1


    --------------------------------------------------------------------------------

    int DialogBoxIndirect(

    HINSTANCE hInstance, // 应用程序实例句柄
    LPDLGTEMPLATE lpTemplate, // 对话框模板指针
    HWND hWndParent, // 父窗口句柄
    DLGPROC lpDialogFunc // 对话框处理函数指针
    );

    返回值:如果成功就返回nResult参数,用于EndDialog结束对话框;失败则返回-1


    --------------------------------------------------------------------------------

    int DialogBoxIndirectParam(

    HINSTANCE hInstance, // 应用程序实例句柄
    LPCDLGTEMPLATE lpTemplateName, // 对话框模板指针
    HWND hWndParent, // 父窗口句柄
    DLGPROC lpDialogFunc, // 对话框处理函数指针
    LPARAM dwInitParam // 初始化值
    );

    返回值:如果成功就返回nResult参数,用于EndDialog结束对话框;失败则返回-1


    --------------------------------------------------------------------------------

    int CreateDialog(

    HINSTANCE hInstance, // 应用程序实例句柄
    LPCTSTR lpTemplate, // 对话框模板指针
    HWND hWndParent, // 父窗口句柄
    DLGPROC lpDialogFunc // 对话框处理函数指针
    );

    返回值:如果成功就返回对话框句柄;失败则返回NULL


    --------------------------------------------------------------------------------

    int CreateDialogParam(

    HINSTANCE hInstance, // 应用程序实例句柄
    LPCTSTR lpTemplateName, // 对话框模板指针
    HWND hWndParent, // 父窗口句柄
    DLGPROC lpDialogFunc, // 对话框处理函数指针
    LPARAM dwInitParam // 初始化值
    );

    返回值:如果成功就返回对话框句柄;失败则返回NULL


    --------------------------------------------------------------------------------

    int CreateDialogIndirect(

    HINSTANCE hInstance, // 应用程序实例句柄
    LPDLGTEMPLATE lpTemplate, // 对话框模板指针
    HWND hWndParent, // 父窗口句柄
    DLGPROC lpDialogFunc // 对话框处理函数指针
    );

    返回值:如果成功就返回对话框句柄;失败则返回NULL


    --------------------------------------------------------------------------------

    int CreateDialogIndirectParam(

    HINSTANCE hInstance, // 应用程序实例句柄
    LPCDLGTEMPLATE lpTemplateName, // 对话框模板指针
    HWND hWndParent, // 父窗口句柄
    DLGPROC lpDialogFunc, // 对话框处理函数指针
    LPARAM dwInitParam // 初始化值
    );

    返回值:如果成功就返回对话框句柄;失败则返回NULL


    --------------------------------------------------------------------------------

    UINT GetDlgItemText(

    HWND hDlg, // 对话框句柄
    int nIDDlgItem, // 控件标识
    LPTSTR lpString, // 文本缓冲区指针
    int nMaxCount // 最大字符数
    );

    返回值:如果成功就返回文本长度;失败则返回零值


    --------------------------------------------------------------------------------

    UINT GetDlgItemInt(

    HWND hDlg, // 对话框句柄
    int nIDDlgItem, // 控件标识
    BOOL *lpTranslated, // 接收成功/失败指示的指针
    BOOL bSigned // 指定是有符号数还是无符号数
    );

    返回值:如果成功,lpTranslated被设置为TRUE,返回文本对应的整数值;如果失败,lpTranslated被设置为FALSE,返回值为零


    --------------------------------------------------------------------------------

    HANDLE GetClipboardData(

    UINT uFormat // 剪贴板格式
    );

    返回值:如果成功就返回剪贴板对象的句柄;失败则返回NULL


    --------------------------------------------------------------------------------

    LONG RegOpenKey(

    HKEY hKey, // 要打开的主键句柄
    LPCTSTR lpSubKey, // 要打开的子键名地址
    PHKEY phkResult // 存放打开子键句柄的地址
    );

    返回值:如果成功就返回ERROR_SUCCESS;失败则返回非零错误代码


    --------------------------------------------------------------------------------

    LONG RegOpenKeyEx(

    HKEY hKey, // 要打开的主键句柄
    LPCTSTR lpSubKey, // 要打开的子键名地址
    DWORD ulOptions, // 保留,必须为0
    REGSAM samDesired, // 存取掩码
    PHKEY phkResult // 存放打开子键句柄的地址
    );

    返回值:如果成功就返回ERROR_SUCCESS;失败则返回非零错误代码


    --------------------------------------------------------------------------------

    LONG RegQueryValue(

    HKEY hKey, // 需要查找的主键的句柄
    LPCTSTR lpSubKey, // 需要查找的子键名地址
    LPTSTR lpValue, // 存放结果的缓冲区地址
    PLONG lpcbValue // 存放返回结果字节长度的缓冲区地址
    );

    返回值:如果成功就返回ERROR_SUCCESS;失败则返回非零错误代码


    --------------------------------------------------------------------------------

    LONG RegQueryValueEx(

    HKEY hKey, // 需要查找的主键的句柄
    LPTSTR lpValueName, // 需要查找的子键名地址
    LPDWORD lpReserved, // 保留,必须为NULL.
    LPDWORD lpType, // 存放子键类型的缓冲区地址
    LPBYTE lpData, // 存放返回结果的缓冲区地址
    LPDWORD lpcbData // 存放返回结果字节长度的缓冲区地址
    );

    返回值:如果成功就返回ERROR_SUCCESS;失败则返回非零错误代码


    --------------------------------------------------------------------------------

    LONG RegSetValue(

    HKEY hKey, // 需要设置键值的主键句柄
    LPCTSTR lpSubKey, // 需要设置的子键名地址
    DWORD dwType, // 键值类型
    LPCTSTR lpData, // 所设置的数据地址
    DWORD cbData // 所设置的数据字节长度
    );

    返回值:如果成功就返回ERROR_SUCCESS;失败则返回非零错误代码


    --------------------------------------------------------------------------------

    LONG RegSetValueEx(

    HKEY hKey, // 需要设置键值的主键句柄
    LPCTSTR lpValueName, // 需要设置的子键名地址
    DWORD Reserved, // 保留,必须为0
    DWORD dwType, // 键值类型
    CONST BYTE *lpData, // 所设置的数据地址
    DWORD cbData // 所设置的数据字节长度
    );

    返回值:如果成功就返回ERROR_SUCCESS;失败则返回非零错误代码


    --------------------------------------------------------------------------------

    BOOL EnableMenuItem(

    HMENU hMenu, // 菜单句柄
    UINT uIDEnableItem, // 菜单项标识
    UINT uEnable // 控制标志
    );
    uEnable的三种有用情况:
    MF_DISABLED 禁止
    MF_ENABLED 允许
    MF_GRAYED 变灰

    返回值:返回菜单项以前的状态,如果菜单项不存在就返回0xFFFFFFFF


    --------------------------------------------------------------------------------

    BOOL EnableWindow(

    HWND hWnd, // 窗口句柄
    BOOL bEnable // 禁止或允许标志
    );
    bEnable的两种状态:
    TRUE 允许
    FALSE 禁止

    返回值:如果先前的窗口是禁止状态,则返回非零值;如果先前的窗口是允许状态,则返回零


    --------------------------------------------------------------------------------

    VOID GetLocalTime(

    LPSYSTEMTIME lpSystemTime // 存放系统时间结构的地址
    );

    返回值:无


    --------------------------------------------------------------------------------

    VOID GetSystemTime(

    LPSYSTEMTIME lpSystemTime // 存放系统时间结构的地址
    );

    返回值:无


    --------------------------------------------------------------------------------

    BOOL GetFileTime(

    HANDLE hFile, // 文件句柄
    LPFILETIME lpCreationTime, // 存放文件创建时间的地址
    LPFILETIME lpLastAccessTime, // 存放文件最后一次存取时间的地址
    LPFILETIME lpLastWriteTime // 存放文件最后一次写的地址
    );

    返回值:如果成功就返回非零值;失败则返回零


    --------------------------------------------------------------------------------

    DWORD GetTickCount(VOID)

    返回值:如果成功就返回自WINDOWS启动以来所经历的毫秒数


    --------------------------------------------------------------------------------

    UINT SetTimer(

    HWND hWnd, // 与定时器相关的窗口句柄
    UINT nIDEvent, // 定时器标识
    UINT uElapse, // 定时间隔,以毫秒为单位
    TIMERPROC lpTimerFunc // 定时器超时函数地址
    );

    返回值:如果成功就返回新定时器的句柄,用于KillTimer结束定时器;失败则返回零


    --------------------------------------------------------------------------------

    VOID CALLBACK TimerProc(

    HWND hwnd, // 与定时器相关的窗口句柄
    UINT uMsg, // WM_TIMER 消息
    UINT idEvent, // 定时器标识
    DWORD dwTime // 由GetTickCount获得的当前系统时间
    );

    返回值:无


    --------------------------------------------------------------------------------

    HANDLE CreateFile(

    LPCTSTR lpFileName, // 要打开的文件名指针
    DWORD dwDesiredAccess, // 存取(读-写)模式
    DWORD dwShareMode, // 共享模式
    LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SECURITY_ATTRIBUTES 结构指针
    DWORD dwCreationDistribution, // 打开方式
    DWORD dwFlagsAndAttributes, // 文件属性
    HANDLE hTemplateFile // GENERIC_READ方式存取的临时文件句柄
    );

    返回值:如果成功就返回文件句柄;失败则返回INVALID_HANDLE_VALUE


    --------------------------------------------------------------------------------

    HFILE OpenFile(

    LPCSTR lpFileName, // 要打开的文件名指针
    LPOFSTRUCT lpReOpenBuff, // 存放文件信息的缓冲区地址
    UINT uStyle // 打开方式
    );

    返回值:如果成功就返回文件句柄;失败则返回HFILE_ERROR


    --------------------------------------------------------------------------------

    BOOL ReadFile(

    HANDLE hFile, // 要读取的文件句柄
    LPVOID lpBuffer, // 存放读出数据的缓冲区地址
    DWORD nNumberOfBytesToRead, // 要读的字节数
    LPDWORD lpNumberOfBytesRead, // 指向读取字节数的地址
    LPOVERLAPPED lpOverlapped // OVERLAPPED 结构的地址
    );

    返回值:如果成功就返回非零值;失败则返回零


    --------------------------------------------------------------------------------

    BOOL WriteFile(

    HANDLE hFile, // 要写入的文件句柄
    LPCVOID lpBuffer, // 存放写入数据的缓冲区地址
    DWORD nNumberOfBytesToWrite, // 写入的字节数
    LPDWORD lpNumberOfBytesWritten, // 指向写入字节数的地址
    LPOVERLAPPED lpOverlapped // OVERLAPPED 结构的地址
    );

    返回值:如果成功就返回非零值;失败则返回零


    --------------------------------------------------------------------------------

    HFILE _lcreat(

    LPCSTR lpPathName, // 要打开的文件名指针
    int iAttribute // 文件属性
    );

    返回值:如果成功就返回文件句柄;失败则返回HFILE_ERROR


    --------------------------------------------------------------------------------

    HFILE _lopen(

    LPCSTR lpPathName, // 要打开的文件名指针
    int iReadWrite // 文件存取模式
    );

    返回值:如果成功就返回文件句柄;失败则返回HFILE_ERROR


    --------------------------------------------------------------------------------

    UINT _lread(

    HFILE hFile, // 文件句柄
    LPVOID lpBuffer, // 存放读出数据的缓冲区地址
    UINT uBytes // 读取的字节数
    );

    返回值:如果成功就返回实际读取的字节数;失败则返回HFILE_ERROR


    --------------------------------------------------------------------------------

    UINT _lwrite(

    HFILE hFile, // 文件句柄
    LPCSTR lpBuffer, // 存放写入数据的缓冲区地址
    UINT uBytes // 写入的字节数
    );

    返回值:如果成功就返回实际写入的字节数;失败则返回HFILE_ERROR


    --------------------------------------------------------------------------------

    UINT _hread(

    HFILE hFile, // 文件句柄
    LPVOID lpBuffer, // 存放读出数据的缓冲区地址
    UINT uBytes // 读取的字节数
    );

    返回值:如果成功就返回实际读取的字节数;失败则返回HFILE_ERROR


    --------------------------------------------------------------------------------

    UINT _hwrite(

    HFILE hFile, // 文件句柄
    LPCSTR lpBuffer, // 存放写入数据的缓冲区地址
    UINT uBytes // 写入的字节数
    );

    返回值:如果成功就返回实际写入的字节数;失败则返回HFILE_ERROR


    --------------------------------------------------------------------------------

    UINT GetDriveType(

    LPCTSTR lpRootPathName // 根路径地址
    );

    返回值如下所示之一:
    0 无法决定
    1 根目录不存在
    DRIVE_REMOVABLE 可移动驱动器
    DRIVE_FIXED 固定驱动器
    DRIVE_REMOTE 远程(网络)驱动器
    DRIVE_CDROM CD-ROM 驱动器
    DRIVE_RAMDISK RAM disk


    --------------------------------------------------------------------------------

    DWORD GetLogicalDrives(VOID)


    返回值:如果失败就返回零值,成功则返回由位掩码表示的当前可用驱动器:
    bit 0 drive A
    bit 1 drive B
    bit 2 drive C
    bit 3 drive D
    。。。以此类推


    --------------------------------------------------------------------------------

    DWORD GetLogicalDriveStrings(

    DWORD nBufferLength, // 缓冲区大小
    LPTSTR lpBuffer // 缓冲区地址,如成功则返回结果为如下形式: c:\d:\
    );

    返回值:如果成功就返回实际的字符数;失败则返回零

  • 相关阅读:
    ggplot2 上篇
    R笔记1
    读书笔记 第2章 数据挖掘概述
    读书笔记 数据化营销
    [LeetCode] 172. 阶乘后的零
    [LeetCode] 171. Excel表列序号
    [LeetCode] 169. 求众数
    知乎使用selenium反爬虫的解决方案
    [LeetCode] 168. Excel表列名称
    [LeetCode] 167. 两数之和 II
  • 原文地址:https://www.cnblogs.com/zheh/p/4131717.html
Copyright © 2011-2022 走看看