首页
社区
课程
招聘
API调试程序在VB下能否实现[讨论]在线等
2004-12-5 18:49 4642

API调试程序在VB下能否实现[讨论]在线等

2004-12-5 18:49
4642
现在网络上有很多关于用API调试程序的文章。实现方法都一样的。
由于我才上大一。那些语言都不太懂。只知道些VB的知识。大家不要笑我

   最近我弄了一个程序。想叫另一个程序暂停。以方便我修改增补一些代码。就像内存补丁那样。可是有些函数不知道怎么声明。结构有些复杂。不知道怎么转到VB上来。比如WaitForDebugEvent函数。有没有能提供些帮助给我。
用API调试程序的方法。或别的可以使我在另一个程序运行到指定的地方是把它中断下来。

在线等

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞1
打赏
分享
最新回复 (3)
雪    币: 1790
活跃值: (2884)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
拍拖 2 2004-12-5 19:09
2
0
我能把这个函数转换成VB的声明。可是不知道那些常数的取值

EXCEPTION_DEBUG_INFO如这个。在VB里应该怎么给它取值

WIN32API中有这么一套API,叫做调试API.

先是DebugActiveProcess,
BOOL DebugActiveProcess(
DWORD dwProcessId   // process to be debugged
);
参数就一个就是目标进程的ID,可以用我前面说的方法来得到。

当开始调试一个进程后,就可以使用WaitForDebugEvent,
BOOL WaitForDebugEvent(
LPDEBUG_EVENT lpDebugEvent,  // pointer to debug event structure
DWORD dwMilliseconds         // milliseconds to wait for event
);
来等待DEBUG事件了~
DEBUG_EVENT的结构定义是这样的:
*************************************************************
typedef struct _DEBUG_EVENT { // de
    DWORD dwDebugEventCode;
    DWORD dwProcessId;
    DWORD dwThreadId;
    union {
        EXCEPTION_DEBUG_INFO Exception;
        CREATE_THREAD_DEBUG_INFO CreateThread;
        CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
        EXIT_THREAD_DEBUG_INFO ExitThread;
        EXIT_PROCESS_DEBUG_INFO ExitProcess;
        LOAD_DLL_DEBUG_INFO LoadDll;
        UNLOAD_DLL_DEBUG_INFO UnloadDll;
        OUTPUT_DEBUG_STRING_INFO DebugString;
        RIP_INFO RipInfo;
    } u;
} DEBUG_EVENT;

typedef struct _EXCEPTION_RECORD { // exr
    DWORD ExceptionCode;
    DWORD ExceptionFlags;
    struct _EXCEPTION_RECORD *ExceptionRecord;
    PVOID ExceptionAddress;
    DWORD NumberParameters;
    DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD;

typedef struct _EXCEPTION_DEBUG_INFO { // exdi
    EXCEPTION_RECORD ExceptionRecord;
    DWORD dwFirstChance;
} EXCEPTION_DEBUG_INFO;
*************************************************************
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
binglan212 2004-12-5 21:23
3
0
难度有点高吧!
用 dephi或者c++吧
雪    币: 166
活跃值: (112)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
小楼 1 2004-12-5 22:13
4
0
1997年,牛人John Robbins用VB实现了一个debugger
http://www.microsoft.com/msj/0997/multivb.aspx
Multiple Threads in Visual Basic 5.0, Part II: Writing a Win32 Debugger

所以说MSJ是个好地方
游客
登录 | 注册 方可回帖
返回