/************************************************************************
函数名称:_ODBG_Plugindata
函数功能:设置插件的名字
参 数:shortname 插件名字
返 回 值:ollydbg版本号
备 注:必须存在的函数之一
************************************************************************/
extc int _export cdecl _ODBG_Plugindata(char shortname[32])
{
strcpy_s(shortname, 32,
"掮客酒馆插件"
);
return
PLUGIN_VERSION;
}
/************************************************************************
函数名称:_ODBG_Plugininit
函数功能:初始化插件
参 数 1:ollydbgversion 当前OD的版本
参 数 2:hw ollydbg主窗口的句柄
参 数 3:features 拓展,暂时无用
返 回 值:正常返回null,异常返回-1
备 注:必须存在的函数之一
************************************************************************/
extc int _export cdecl _ODBG_Plugininit(int ollydbgversion, HWND hw, ulong *features)
{
//
检查插件版本与调试器版本是否兼容
if
(ollydbgversion < PLUGIN_VERSION)
{
return
-1;
}
return
0;
}
/************************************************************************
函数名称:_ODBG_Pluginmenu
函数功能:添加菜单
参 数 1:origin 用户点击的菜单下标
参 数 2:data 子菜单名称缓冲区
参 数 3:item 菜单数量
返 回 值:正常返回TRUE,异常返回FALSE
备 注:每个菜单项之间用
'|'
字符隔开
************************************************************************/
extc int _export cdecl _ODBG_Pluginmenu(int origin, char data[4096], void *item)
{
//
检查是否点击子菜单
if
(origin == PM_MAIN)
{
strcpy_s(data, 4096,
"0 &Msg |1 &http://www.jmpoep.com |2 &About"
);
}
return
TRUE;
}
/************************************************************************
函数名称:_ODBG_Pluginaction
函数功能:响应菜单事件
参 数 1:origin 用户点击的菜单下标
参 数 2:action 点击的子菜单下标
参 数 2:item 菜单数量
返 回 值:无
************************************************************************/
extc void _export cdecl _ODBG_Pluginaction(int origin, int action, void *item)
{
//
检查是否点击子菜单
if
(origin != PM_MAIN)
{
return
;
}
switch (action)
{
case
0:
MessageBox(NULL, TEXT(
"掮客酒馆"
), TEXT(
"提示"
), MB_OK);
break
;
case
1:
ShellExecute(NULL, TEXT(
"open"
), TEXT(
"http://www.jmpoep.com"
), NULL, NULL, SW_SHOW);
break
;
case
2:
MessageBox(NULL, TEXT(
"Code By B1nGzL"
), TEXT(
"提示"
), MB_OK);
break
;
default:
break
;
}
}
BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
{
return
TRUE;
}