OD插件开发学习
来源:互联网 发布:淘宝助理发件人设置 编辑:程序博客网 时间:2024/05/16 08:55
关于OD 插件开发的相关api请到网上查阅,这里只给出一个简单基础的例子。
1、新建一个dll工程。
2、创建一个对话框,如图
3、资源文件头如下:
//{{NO_DEPENDENCIES}}// Microsoft Visual C++ generated include file.// Used by odplugin1.rc//#define IDD_TEST 101#define IDC_EDIT1 1001#define IDC_BUTTON1 1002#define IDC_QUIT 1002// Next default values for new objects// #ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONLY_SYMBOLS#define _APS_NEXT_RESOURCE_VALUE 102#define _APS_NEXT_COMMAND_VALUE 40001#define _APS_NEXT_CONTROL_VALUE 1003#define _APS_NEXT_SYMED_VALUE 101#endif#endif
4、程序代码如下;
// dllmain.cpp : Defines the entry point for the DLL application.#include "stdafx.h"#include <windows.h>#include "resource.h"#include "Plugin.h"#pragma comment(lib,"Ollydbg.lib")#pragma comment(lib, "user32.lib")//#pragma comment(lib, "Gdi32.lib")//global variantstatic char g_szPluginName[] = "Matrix";static HWND g_hWndMain = NULL; //保存OD主窗口句柄static HINSTANCE g_hModule = NULL; //保存dll句柄static char g_szMatrixClass[32];////////////////////////////////////////////////////////////////////////////回调函数LRESULT CALLBACK DlgOptionProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){int AutoDisable;int SleepTime;char textbuffer[8];if (uMsg == WM_INITDIALOG){SetDlgItemText(hWnd,IDC_EDIT1,L"just a test");}else if( uMsg == WM_CLOSE)EndDialog(hWnd, 0);else if( uMsg == WM_COMMAND){// just do nothingif (wParam==(UINT)IDC_QUIT)EndDialog(hWnd, 0);}else return FALSE;return TRUE;}BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:{g_hModule = hModule;break;}case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE;}extc int _export cdecl ODBG_Plugindata(char shortname[32]){strcpy(shortname, g_szPluginName);return PLUGIN_VERSION;}extc int _export cdecl ODBG_Plugininit(int ollydbgversion,HWND hw, ulong *features){int nRetCode;if(ollydbgversion < PLUGIN_VERSION)return -1;g_hWndMain = hw; //保存ollydbg主窗口句柄nRetCode = Registerpluginclass(g_szMatrixClass,NULL,g_hModule,DlgOptionProc);if (nRetCode < 0)return -1;Addtolist(0, 0, "Matrix! v1.0");Addtolist(0, -1, "Copyright(C) 2014 Matrix");return 0;}extc int _export cdecl ODBG_Pluginmenu(int origin,char data[4096],void *item){if(origin == PM_MAIN){strcpy(data, "0 MatrixMain | 1 About");return 1;}return 0;}extc void _export cdecl ODBG_Pluginaction(int origin,int action,void *item){if(origin == PM_MAIN){switch(action){case 0: //这里的索引0 对应strcpy(data, "0 Matrix | 1 About");中的0DialogBox(g_hModule, MAKEINTRESOURCE(IDD_TEST), g_hWndMain, (DLGPROC)DlgOptionProc); //创建对话框break;case 1:MessageBoxA(g_hWndMain," Write by Matrix ",g_szPluginName,MB_OK);break;}}}extc void _export cdecl ODBG_Plugindestroy(void){Unregisterpluginclass(g_szMatrixClass);}
最后将生成的dll放到 od的plugin目录下即可
1 0
- OD插件开发学习
- OD插件 by kongfoo
- OD插件详解
- OD插件相关
- OD command插件命令
- OD脚本学习
- OD学习笔记
- od的脚本学习
- OD学习笔记
- Eclipse插件开发学习
- jQuery插件开发学习
- Piwik学习 -- 插件开发
- hiwif插件开发学习
- Piwik学习 -- 插件开发
- AppCan插件开发学习
- outlook插件开发学习
- 学习jQuery插件开发
- 学习插件化开发
- 用match从两个list中挑出匹配部分
- KMP算法——POJ 3461
- java折半插入排序算法
- POJ 2135 Farm Tour 费用流
- dynamic_cast 例子
- OD插件开发学习
- hdu4679 Convex Hull 计算几何
- Java---引用类型
- 二叉树的实现类
- 使用 flex4 开发通用统计系统,发布源代码至github
- mysql 数据库
- 几个脚本语言的学习资源
- php---一周内免登录
- LeetCode OJ - Minimum Window Substring