能力值:
( LV4,RANK:50 )
|
-
-
2 楼
简单:
extc int _export cdecl ODBG_Pluginmenu(int origin, char data[4096], void *item)
{
t_dump *pd;
ulong adr;
pd=(t_dump *)item;
adr=pd->sel0;//鼠标所选地址
....
}
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
最初由 heng9ml 发布 简单: [code] extc int _export cdecl ODBG_Pluginmenu(int origin, char data[4096], void *item) { t_dump *pd; ........ 大哥,好象不行啊。
addr不能得到选择的地址啊。
我调试发现addr总是等于0的
我想要光标所在地的那个地址,不一定是鼠标选的
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
可以的,不信你可以用我写的这个插件看看:
http://bbs.pediy.com/showthread.php?s=&threadid=17129
这个插件就是用的上面的代码实现“自动获取光标所在行的地址”的,也不一定要用鼠标点的。
这个问题以前我在论坛问过,一直没人回答,昨天看了下od的api,自己解决了。
要在反汇编窗口中调用啊!
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
最初由 heng9ml 发布 可以的,不信你可以用我写的这个插件看看: http://bbs.pediy.com/showthread.php?s=&threadid=17129 这个插件就是用的上面的代码实现“自动获取光标所在行的地址”的,也不一定要用鼠标点的。 这个问题以前我在论坛问过,一直没人回答,昨天看了下od的api,自己解决了。 要在反汇编窗口中调用啊!
能否提供
http://bbs.pediy.com/showthread.php?s=&threadid=17129
这个的源代码?
谢谢
extc int _export cdecl ODBG_Pluginmenu(int origin, char data[4096], void *item)
{
t_dump *pd;
switch (origin)
{
case PM_MAIN:
strcpy(data, "0 &1 Find ASCII|1 &2 Find UNICODE|2 &3 查找结果|3 &4 锁定窗口|4 &5 取消锁定");
return 1;
case PM_DISASM: // Popup menu in Disassembler
pd = (t_dump *)item;
adr=pd->sel0;//我在这里加了我的代码,但那个pd指针有时是空指针来的,所以产生非法,这行代码一定要点鼠标又键才会执行,点左键都不执行
if (NULL == pd || 0 == pd->size) // Window empty, don't add
return 0;
// Add item "Ultra String Reference"
// if some part of Disassembler is selected
if (pd->sel1 >pd->sel0)
{
sprintf(
data,
"0 &Ultra String Reference{"
"0 &1 Find ASCII|1 &2 Find UNICODE|2 &3 查找结果|3 &4 锁定窗口|4 &5 取消锁定"
"}"
);
}
return 1;
}
return 0;
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
你将“adr=pd->sel0;”移到
“if (NULL == pd || 0 == pd->size) return 0;”
后面不就行了。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
最初由 heng9ml 发布 你将“adr=pd->sel0;”移到 “if (NULL == pd || 0 == pd->size) return 0;” 后面不就行了。
这样都不行啊,因为我想在任何时候都能得到当前的光标地址值,但我就算放在后面,一样要按下鼠标右键才能执行adr=pd->sel0这行代码,请问大家应该如何处理呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
最初由 dssz 发布
这样都不行啊,因为我想在任何时候都能得到当前的光标地址值,但我就算放在后面,一样要按下鼠标右键才能执行adr=pd->sel0这行代码,请问大家应该如何处理呢?
我调试发现OLLYDBG1.1D版,总是会把当前光标所在的的地址值放到[4cda2d]中的,我就是一直找不到应该如何获得它的值
我一个很苯的做法
int *igp;
_asm {push eax
mov eax,4cda2dh
mov igp,eax
pop eax};
但这样只能在当前的OD版本中执行,不能通用,很郁闷!!
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
ODBG_Pluginshortcut(int origin,int ctrl,int alt,int shift,int key,void *item)
可以满足你的要求
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
最初由 heng9ml 发布 ODBG_Pluginshortcut(int origin,int ctrl,int alt,int shift,int key,void *item) 可以满足你的要求
问题一样不能解决,请看
http://bbs.pediy.com/showthread.php?s=&threadid=18167
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
设置快捷键为alt+shift+F12,用下面代码测试通过
将光标移到某行后,按一下快捷键“Alt+shift+F22”看看显示结果
int test(void *item)
{
t_dump *pd;
ulong adr;
char * s;
pd=(t_dump *)item;
if (NULL == pd || 0 == pd->size)
{
return 0;
}
else
{
adr= pd->sel0;
sprintf(s,"%08X",adr);
MessageBox(g_hwMainWnd,NULL,s,MB_OK);
return 1;
}
}
extc int _export cdecl ODBG_Pluginshortcut(int origin,int ctrl,int alt,int shift,int key,void *item)
{
if(alt!=0 && ctrl==0)
{
if (key==VK_F12 && origin==PM_DISASM && item!=NULL)
{
if (shift!=0)
test(item);
}
else
return 0;
}
else
return 0; // 识别不了快捷键
}
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
最初由 heng9ml 发布 设置快捷键为alt+shift+F12,用下面代码测试通过 将光标移到某行后,按一下快捷键“Alt+shift+F22”看看显示结果
int test(void *item) { ........
多谢兄弟的热情指导,现已经找到原因了。
我还想问问应该如何改变地址栏的颜色呢,我想当暂时取消断点的时候改变颜色,例如我想变成蓝色,应该如何处理呢,谢谢!!!
|
|
|