-
-
[已解决]OD 右键菜单项,如何下断
-
发表于:
2012-7-23 14:59
9270
-
// 获取当前命令行的注释
// 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);
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!