永发信息网

求组 c++程序改错

答案:1  悬赏:80  手机版
解决时间 2021-05-07 16:37

#include <windows.h>
#include <stdio.h>
#include <tlhelp32.h>
#include <conio.h>
#define W2I_WINDOW_TITLE TEXT("Element Client")
#define W2I_WINDOW_CLASS TEXT("ElementClient Window") 
//#define W2I_WINDOW_TITLE NULL 
//#define W2I_WINDOW_CLASS TEXT("Notepad")  
#define W2I_SENDCALL      0x00588EF0
#define W2I_SENDCALL_ADDR1      (W2I_SENDCALL+0x8E)
#define W2I_SENDCALL_ADDR2      (W2I_SENDCALL+0x8F)
#define BREAK_DR7_FLAG          0x401
int main(int argc, char* argv[])

    HANDLE hW2iProcess;
    DWORD dwW2iProcessId;  
    HWND hW2iWnd; 
    DWORD Count = 0; 
 
    //查找窗口,并且获取窗口进程线程ID 
    hW2iWnd =::FindWindow(W2I_WINDOW_CLASS, W2I_WINDOW_TITLE); 
    if( hW2iWnd>0 && ::GetWindowThreadProcessId(hW2iWnd, &dwW2iProcessId)
        && dwW2iProcessId && ( hW2iProcess = ::OpenProcess (PROCESS_ALL_ACCESS, FALSE, dwW2iProcessId) ) 
        && DebugActiveProcess(dwW2iProcessId) )
    {
        DEBUG_EVENT DebugEv;
        DWORD dwContinueStatus; 
        while(TRUE)
        {
            if(WaitForDebugEvent(&DebugEv, 10))
            {
                dwContinueStatus = DBG_EXCEPTION_NOT_HANDLED;
                switch(DebugEv.dwDebugEventCode) 
                {
                case EXCEPTION_DEBUG_EVENT:
                    {
                        if((DWORD) 
DebugEv.u.Exception.ExceptionRecord.ExceptionAddress==W2I_SENDCALL_ADDR1) 
                        { 
                            HANDLE hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, DebugEv.dwThreadId);
                            SuspendThread(hThread);  
                            CONTEXT Regs = {0};
                            Regs.ContextFlags =CONTEXT_DEBUG_REGISTERS|CONTEXT_INTEGER;
                            ::GetThreadContext(hThread, &Regs);". 
                            Regs.Dr0 = W2I_SENDCALL_ADDR2;
                            Regs.Dr7 = BREAK_DR7_FLAG;
                            printf("%d\n", Count++); 
                            //Regs.Esi - len Ymw.XA  
                            //Regs.Ecx - buf 4.8.9.xoP 
                            BYTE buf[1024];  
                            SIZE_T len = (Regs.Esi<512 ? Regs.Esi : 512); 
                            if( ReadProcessMemory(hW2iProcess, (void*) Regs.Ecx, buf, len, &len) )
                            {
                                FILE * fp = fopen("Cap.txt", "a+"); 
                                for(SIZE_T i=0; i<len; i++) 
                                {  
                                    printf("%02X ", buf); 
                                    if(fp) 
                                        fprintf(fp, "%02X ", buf);
                                }  
                                printf("\n\n");
                                if(fp) 
                                {
                                    fprintf(fp, "\n\n");
                                    fclose(fp);
                                }
                            }
                            ::SetThreadContext(hThread, &Regs);
                            ResumeThread(hThread);
                            CloseHandle(hThread);
                        }

最佳答案
编译时有错误?还是运行时有错误?太长了,光看也没用....我现在这台电脑没c++,把问题说清楚点额,我现在没法实验
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
韩国有那些双胞胎组合?女的
河南焦作多层建筑中水电预埋及后期安装价格
想给几个关系比较要好的女朋友下厨做桌菜
永昌路/育才路(路口)怎么去啊,有知道地址的
请问188的号怎么查话费啊?
我是11月30的生日,今年好像不一样~!!!那
DNF狂战嗜魂之手点满是几点,满了以后能吸多
方元华诚农业地址在哪,我要去那里办事
估计眼贴膜冒牌或是过期,眼睛周围长了好多小
甘肃省庆阳市和兰州市特产各有哪些?
有没有狮子座达人啊?
做舞团任务得到的奖励是自己的还是舞团的?
深圳哪有张杰的《穿越三部曲》???多少钱?
模仿示例写句子:panda—bamboo(meat) the pan
我是小教专业,2010年毕业.请问可以参加江苏20
推荐资讯
CF幽灵模式中如何发现幽灵?
用QQ农牧偷匪,会被查封,和降级吗
为什么手机挂Q时有的QQ手机挂的却显示电脑挂
为什么一次能做好的事情,需要再次给机会才能
诺基亚e66这款机好不
现在地下城练什么职业有发展
两张图片哪张好看?
定义一种新运算
手机QQ什么时间升级完
Michele和Michelle读音有区别吗
伤心会做什么呢?
网页中最大化最小化关闭按钮消失了怎么还原?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?