zishen 发表于 2024-5-24 22:47

OD插件编写问题

本帖最后由 zishen 于 2024-5-25 11:17 编辑

今天学习NCK的OD插件编写时遇到了问题

代码应该没问题,基本上复制粘贴的

将OD放入项目文件夹中,

将DLL文件直接生成到Plugin目录中

但是打开OD时,却根本没有这个插件!有大佬知道是什么问题,该怎么解决吗?
代码如下:但应该不是代码的问题
#include "pch.h"
#include "Plugin.h"

extern "C" __declspec(dllexport) cdecl int ODBG_Plugincata(char* shortname) {
      _Mergequicknames();

      const char* pluginName = "OD插件例子";
      strcpy_s(shortname, strlen(pluginName) + 1, pluginName);
      return PLUGIN_VERSION;
}

//OD主界面句柄
HWND g_hOllyDbg;
//************************************
// Method:插件初始化,用于判断当前OD版本号和插件所支持的版本是否一致
// Description:必须的导出函数
//************************************
extern "C" __declspec(dllexport) cdecl int ODBG_Plugininit(int ollydbgversion, HWND hw, ulong * features)
{

      if (ollydbgversion < PLUGIN_VERSION)
      {
                MessageBox(hw, "本插件不支持当前版本OD!", "MyFirstPlugin", MB_ICONERROR);
                return -1;
      }
      g_hOllyDbg = hw;
      return 0;
}
//************************************
// Method:显示菜单项
// Description:显示对应的菜单选项
//************************************
extern "C" __declspec(dllexport) cdecl intODBG_Pluginmenu(int origin, TCHAR data, VOID * item)
{

      if (origin == PM_MAIN)
      {
                strcpy(data, "0&顶部菜单子菜单一,1&顶部菜单子菜单二");
      }
      if (origin == PM_DISASM)
      {
                strcpy(data, "鼠标右键主菜单{0&鼠标右键子菜单一,1&鼠标右键子菜单二}");
      }
      return 1;
}


//************************************
// Method:菜单项被点击执行函数
// Description:所有的菜单项被点击都会执行到这个函数
//************************************
extern "C" __declspec(dllexport) cdecl void ODBG_Pluginaction(int origin, int action, VOID * item)
{
      //如果是在主窗口点击
      if (origin == PM_MAIN)
      {
                if (action == 0)
                {
                        MessageBoxA(g_hOllyDbg, "顶部菜单子菜单一", "www.bcdaren.com", MB_ICONINFORMATION);
                }
                if (action == 1)
                {
                        MessageBoxA(g_hOllyDbg, "顶部菜单子菜单二", "www.bcdaren.com", MB_ICONINFORMATION);
                }
      }
      //如果是在反汇编窗口点击
      if (origin == PM_DISASM)
      {
                if (action == 0)
                {
                        MessageBoxA(g_hOllyDbg, "鼠标右键子菜单一", "www.bcdaren.com", MB_ICONINFORMATION);
                }
                if (action == 1)
                {
                        MessageBoxA(g_hOllyDbg, "鼠标右键子菜单二", "www.bcdaren.com", MB_ICONINFORMATION);
                }
      }
}

苏紫方璇 发表于 2024-5-25 10:31

ODBG_Plugincata错了吧,确定不是data?你看ide的图里这个导出函数和下边的配色都不一样

252339439 发表于 2024-5-24 23:21

   感觉都是大神!

LXGZJ237 发表于 2024-5-25 00:40

代码太模糊看不清

xiaomumu 发表于 2024-5-25 08:13

太模糊了,看不清,这个插件的作用是干什么的?
页: [1]
查看完整版本: OD插件编写问题