首页
社区
课程
招聘
请教写OD插件的问题
发表于: 2009-12-29 17:39 3680

请教写OD插件的问题

2009-12-29 17:39
3680
我在写OD插件时,为什么读取被调试程序的当前指令时,总是读出来的12F4CC,怎么解决
代码如下:
extc void _export cdecl ODBG_Pluginmainloop(DEBUG_EVENT *debugevent)
{
        TCHAR szText[200];
        BYTE bMachineCode[200];
//        HANDLE hProcess;
//        DWORD dwRead,dwProcessId;
//        LPVOID lpaddr;
        DWORD dwThreadId;
        t_thread * stThread;

        if (debugevent == NULL)
                return;
        if (debugevent->dwDebugEventCode == EXCEPTION_DEBUG_EVENT)
        {//本事件在调试 中断时和运行时都会发生 Exception成员指向EXCEPTION_DEBUG_INFO,其中的EXCEPTION_RECORD成员指向EXCEPTION_RECORD
                if (pLastAddr == debugevent->u.Exception.ExceptionRecord.ExceptionAddress)
                        return;
                pLastAddr = debugevent->u.Exception.ExceptionRecord.ExceptionAddress;
                wsprintf(szText,"exception addr: %X",pLastAddr);
                _Addtolist(0,0,szText);

                memset(bMachineCode,0,32);
//                dwProcessId = (DWORD)_Plugingetvalue(VAL_PROCESSID);
//                wsprintf(szText,"process id: %X",dwProcessId);
//                _Addtolist(0,0,szText);
//                hProcess = (HANDLE)_Plugingetvalue(VAL_HPROCESS);
//                dwProcessId = (DWORD)GetProcessId(hProcess);
//                ReadProcessMemory(hProcess,lpaddr,bMachineCode,32,&dwRead);

//                _Readmemory(bMachineCode,(ULONG)&pLastAddr,4,MM_SILENT);
//                wsprintf(szText,"machine code: %X",bMachineCode);
                dwThreadId = _Getcputhreadid();
                stThread = _Findthread(dwThreadId);
                _Readcommand(stThread->reg.ip,(char *)bMachineCode);
                wsprintf(szText,"machine code: %X",bMachineCode);
                _Addtolist(0,0,szText);
        }
}
是不是不能放在调试事件中读呢?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
没人能回答吗?
2009-12-29 21:25
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
没有会写od插件的出来说句话吗?
2009-12-30 09:01
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
都一天了,还没人回答吗?
2009-12-30 14:59
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
我已经解决了
2009-12-30 17:12
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
怎样解决的?跟大家分享一下吧。
2009-12-30 17:17
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
hHeap = HeapCreate(HEAP_NO_SERIALIZE,1,0);
                lpDumpData = (LPBYTE)HeapAlloc(hHeap,HEAP_NO_SERIALIZE | HEAP_ZERO_MEMORY,dwRead);
                if (lpDumpData == NULL)
                {
                        _Addtolist(0,0,"not enough memory");
                        return;
                }
这样分配的内存才可以调用_Readmemory
onlinez 在其它地方多给了我分,我也不好意思白拿
2010-1-7 14:18
0
游客
登录 | 注册 方可回帖
返回
//