好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 durongze 于 2020-8-31 03:40 编辑
首先感谢 ‘夜风流’ ‘罗聪’ ‘肖梓航’ 各位我不认识的人。 只是在网上可能看到过你们写的资料。
第一部分 :写给正在写插件的人。
最新版本插件相关的接口和1.x 相关接口的差异介绍:
1. 初始化接口:这个接口决定了插件是否能被加载。主要作用是告知主程序本插件的名称,版本的信息。
新版:bool PlugInit(PLUG_INITSTRUCT* initStruct);
旧版:int ODBG_Plugininit(int OllyDbgversion, HWND hw, ulong *features);
2. 停止接口
新版:bool PlugStop();
旧版:int ODBG_Pluginclose(void);
3. 设置接口 :用来在主程序的各区域子窗口创建菜单。
新版:void PlugSetup(PLUG_SETUPSTRUCT* setupStruct); //
旧版:int ODBG_Pluginmenu(int origin, char data[4096], void *item)
4. 功能接口:主程序通知插件用户点击了菜单。
新版:void CbMenuEntry(CBTYPE cbType, void* callbackInfo) ;
旧版:int Registerpluginclass(char *classname, char *iconname, HINSTANCE dllinst, WNDPROC classproc) // 新版的函数和老版这个函数的最后一个参数功能是一样的。
第二部分:对功能接口的实现。
1.x的插件貌似实现了以下3个主要功能:
void Find(HWND hWnd);
void FindNext(HWND hWnd);
void FindPrevious(HWND hWnd);
第三部分:目前本人遇到的问题。
这个周末在网上看了很多帖子,分析了下老版的中文搜索插件,发现老版插件依赖的老版sdk接口,在新版中已经找不到对应的痕迹(是我找不到),
有哪位热心的人能回答一下,以下24个老sdk接口和新版的哪些接口比较类似 ?我想下个周末将这个插件整出来,希望大侠们能给本人指点一二。
// 前四个是不是就是个打印?
1. void Addtolist(long addr, int highlight, char *format, ...);
2. void Infoline(char *format, ...);
3. void Progress(int promille, char *format, ...);
4. void Flash(char *format, ...);
5. t_memory* Findmemory(ulong addr); // 新版接口是否是: DbgMemFindBaseAddr(addr, &size);
6. ulong Readmemory(void *buf, ulong addr, ulong size, int mode) ; // 新版接口是否是:DbgMemRead(addr, buf, size)
7. ulong Readcommand(ulong ip, char *cmd) ; // 新版接口是否是:DbgMemRead(ip, cmd, size)
8. ulong Disasm(uchar *src, ulong srcsize, ulong srcip, uchar *srcdec, t_disasm *disasm, int disasmmode, ulong threadid); // 新版接口是否是:DbgDisasmAt(addr, &instr);
9. uchar* Finddecode(ulong addr, ulong *psize); //
10. int Gettext(char *title, char *text, char letter, int type, int fontindex) ; //
11. int Createsorteddata(t_sorted *sd, char *name, int itemsize, int nmax, SORTFUNC *sortfunc, DESTFUNC *destfunc) ; //
12. void Destroysorteddata(t_sorted *sd);
13. void *Addsorteddata(t_sorted *sd, void *item);
14. void Deletesorteddatarange(t_sorted *sd, ulong addr0, ulong addr1);
15. void* Getsortedbyselection(t_sorted *sd, int index);
16. int Tablefunction(t_table *pt, HWND hw, UINT msg, WPARAM wp, LPARAM lp);
17. void Painttable(HWND hw, t_table *pt, DRAWFUNC getline);
18. void Selectandscroll(t_table *pt, int index, int mode);
19. int Insertname(ulong addr, int type, char *name);
20. int Findname(ulong addr, int type, char *name);
21. ulong Getcputhreadid(void) ; // 新版接口是否是:DbgGetThreadId();
22. HWND Quicktablewindow(t_table *pt, int nlines, int maxcolumns, char *winclass, char *wintitle); //
23. void Setcpu(ulong threadid, ulong asmaddr, ulong dumpaddr, ulong stackaddr, int mode); //
24. void Getdisassemblerrange(ulong *pbase, ulong *psize) ; // 新版接口是否是:DbgDisasmAt(addr, &instr);
|
免费评分
-
查看全部评分
|