首页
社区
课程
招聘
[原创][开源]OllyDbg 2.x插件编写教程
发表于: 2015-11-30 18:46 13599

[原创][开源]OllyDbg 2.x插件编写教程

2015-11-30 18:46
13599

AntiDebug三篇已完结,以下是链接
窗口相关AntiDebug及Od反AntiDebughttp://bbs.pediy.com/showthread.php?t=206168

NTQ相关AntiDebug及Od反AntiDebughttp://bbs.pediy.com/showthread.php?t=206118

PEB相关AntiDebug及Od反AntiDebug
http://bbs.pediy.com/showthread.php?t=206117

记得前面好像有篇关于1.x的教程,而OllyDbg2.x插件编写教程整个网络几乎没有(PS:可能我搜索方式不对),所以,我来试试看

#define PLUGINNAME L"Tennn"
#define MY_PLUGIN L"1.0"
t_table g_Tennn={0};
extc INT __cdecl ODBG2_Pluginquery(int ollydbgversion,ulong *features,
           wchar_t pluginname[SHORTNAME],
           wchar_t pluginversion[SHORTNAME])
{
  //检查Olldbg版本
  if (ollydbgversion<201)
  {
    return 0;
  }
  //设置Olldbg插件名称与版本
  StringCchCopy(pluginname,SHORTNAME,PLUGINNAME);//设置插件名称
  StringCchCopy(pluginversion,SHORTNAME,MY_PLUGIN);//设置插件版本
  //返回需要的API版本
  return PLUGIN_VERSION;
}
extc int __cdecl ODBG2_Plugininit(void)
{
  MessageBox(0,L"Hello Pediy",0,0);
  HWND hParent=GetActiveWindow();
  LPCWSTR lpDlgID=MAKEINTRESOURCE(IDD_DIALOG1);
  g_hwnd=CreateDialog(g_hModule,lpDlgID,hParent,(DLGPROC)RightClickMenu1);
  return 0;
}
extc void __cdecl ODBG2_Pluginreset(void)
{
  Deletesorteddatarange(&(g_Tennn.sorted),0,0xFFFFFFFF);
}
extc int __cdecl ODBG2_Pluginclose(void)
{
  Writetoini(NULL,PLUGINNAME,L"Restore",L"%i",g_Tennn.hw!=NULL);
  return 0;
}
extc void __cdecl ODBG2_Plugindestroy(void)
{
  Destroysorteddata(&(g_Tennn.sorted));
}
static t_menu g_stcMainMenu[]={
  {
    L"主菜单1",
      L"主菜单11111111111111111",
      K_NONE,MenuFun1,NULL,0
  },
  {
    L"主菜单2",
      L"主菜单22222222222222222",
      K_NONE,MenuFun2,NULL,1
    },
    {
      NULL,NULL,K_NONE,NULL,NULL,0
    }
}
static t_menu g_stcRightClickMenu[]={
  {
    L"右键菜单1111",
      L"右键11111111111111111",
      KK_DIRECT | KK_CTRL | 'A',RightClickMenu1,NULL,0},
  {
    L"右键菜单2222",
      L"右键222222222222222222",
      KK_DIRECT | KK_CTRL | 'C',RightClickMenu2,NULL,1},
  {
    NULL,NULL,K_NONE,NULL,NULL,0
  }
};
static int MenuFun1(t_table *pt,wchar_t *name,ulong index,int mode)
{
  if (mode==MENU_VERIFY)
  {
  //  MessageBox(0,L"MENU_NORMAL11111",0,0);
    return MENU_NORMAL;
  }
  if (mode==MENU_EXECUTE)
  {
    MessageBox(0,L"MENU_NOREDRAW11111",0,0);
    return MENU_NOREDRAW;
  }
  return MENU_ABSENT;
}
static int RightClickMenu1(t_table *pt,wchar_t *name,ulong index,int mode)
{
  //第一次调用 执行初始化操作
  if (mode==MENU_VERIFY)
  {
  //  MessageBox(0,L"MENU_NORMAL11111",0,0);
    return MENU_NORMAL;
  }
  //第二次调用 执行菜单逻辑操作
  if (mode==MENU_EXECUTE)
  {
    MessageBox(0,L"MENU_NOREDRAW11111",0,0);
    ShowWindow(g_hwnd,SW_SHOW);
    return MENU_NOREDRAW;
  }
  return MENU_ABSENT;
}
INT_PTR CALLBACK RightClickMenu1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
  UNREFERENCED_PARAMETER(lParam);
  switch (message)
  {
  case WM_INITDIALOG:
    return (INT_PTR)TRUE;

  case WM_COMMAND:
    {
        //点击按钮
  case IDC_BUTTON1:
    MessageBox(0,0,0,0);
    EndDialog(hDlg, LOWORD(wParam));
    }
    break;

  }
  return (INT_PTR)FALSE;
}

  • VS建立一个DLL工程

  • 取得OllyDbg指定版本的SDK

  • 在C/C++编译选项-命令行添加“/J”  说明工程中的char均为 UNSIGNED类型

  • 定义如下全局变量与宏定义
  • VS建立一个DLL工程

  • [注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

    上传的附件:
    收藏
    免费 3
    支持
    分享
    最新回复 (15)
    雪    币: 1844
    活跃值: (35)
    能力值: ( LV3,RANK:30 )
    在线值:
    发帖
    回帖
    粉丝
    2
    2出来M久了,就是插件没跟上

    我看到满世界人都还是用 1.1
    2015-11-30 19:17
    0
    雪    币: 54
    活跃值: (75)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    3
    od2.01确实不错,不过刚需插件跟不上,目前还是只能用1.1
    2015-11-30 20:18
    0
    雪    币: 10
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    4
    听说od作者源码卖出去了?
    2015-11-30 20:53
    0
    雪    币: 1176
    活跃值: (1264)
    能力值: ( LV12,RANK:380 )
    在线值:
    发帖
    回帖
    粉丝
    5
    这个不清楚。。
    2015-11-30 21:10
    0
    雪    币: 10665
    活跃值: (3574)
    能力值: ( LV3,RANK:20 )
    在线值:
    发帖
    回帖
    粉丝
    6
    谢谢楼主分享,改天研究一下。
    2015-11-30 21:16
    0
    雪    币: 12348
    活跃值: (5113)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    7
    速度来学习啦
    2015-11-30 23:11
    0
    雪    币: 171
    活跃值: (519)
    能力值: ( LV4,RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    8
    老早的事情了,Immunity Debuger都出来这么久了。
    2015-12-1 10:31
    0
    雪    币: 108
    活跃值: (125)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    9
    支持撸主
    2015-12-1 22:29
    0
    雪    币: 11
    活跃值: (11)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    10
    右键菜单这个好,一直也没找到相关资料
    2015-12-2 15:11
    0
    雪    币: 4560
    活跃值: (1002)
    能力值: ( LV4,RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    11
    都x64时代了od2有点跟不上了
    2015-12-3 09:25
    0
    雪    币: 269
    活跃值: (906)
    能力值: ( LV12,RANK:345 )
    在线值:
    发帖
    回帖
    粉丝
    12
    围观一下吧,哪位程序员开发一个类似IDA 的图形模块插件,或许用的就更多了
    2015-12-10 10:04
    0
    雪    币: 6
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    13
    资源共享,MARK了
    2015-12-10 20:25
    0
    雪    币: 43
    活跃值: (40)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    14
    很不错,赞一个
    2016-1-27 16:33
    0
    雪    币: 178
    活跃值: (1306)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    15
    感谢分享与指教
    2017-12-1 11:09
    0
    雪    币: 965
    活跃值: (89)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    16
    感谢分享与指教
    2017-12-9 11:51
    0
    游客
    登录 | 注册 方可回帖
    返回
    //