-
-
[已解决]OD 右键菜单项,如何下断
-
发表于:
2012-7-23 14:59
9274
-
// 获取当前命令行的注释
// uCurEip 需获取行的EIP地址
// uNextEip 下条指令的EIP,通过上条指令的EIP+指令长度获得
// szCmt 输出缓冲
// 返回注释的长度
int GetCmdComment(ULONG uCurEip, ULONG uNextEip, char * szCmt)
{
char buf[1024]={0};
ULONG uDataAddr = uBaseAddr + 0x000CD6A8; // uBaseAddr OD基址,我用的是全局变量,
ULONG uGetCmtProc1 = uBaseAddr + 0x00046618; // 其它位置获取的,结果类似0x400000
ULONG uGetCmtProc2 = uBaseAddr + 0x00054068;
char *pAsm = NULL, *pCmt = NULL;
_asm
{
pushad
pushfd
push uNextEip
push uCurEip
push uDataAddr
call uGetCmtProc1
mov ebx, eax
add esp, 0xC
test ebx, ebx
je end
push ebx
call uGetCmtProc2
add esp, 0x4
mov pAsm, ecx
end:
popfd
popad
}
strcpy(szCmt, "\0");
if (pAsm != NULL)
{
strcpy(buf, pAsm);
pCmt = strchr(buf, '\r');
if (pCmt != NULL)
*pCmt = '\0';
pCmt = strchr(buf, '\n');
if (pCmt != NULL)
*pCmt = '\0';
pCmt = strrchr(buf, ';');
if (pCmt != NULL)
{
while (*pCmt==';' || *pCmt==' ')
*pCmt ++;
strcpy(szCmt, pCmt);
}
}
return strlen(szCmt);
}
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)