durongze 发表于 2020-8-31 03:38

【x64dbg 2020-08-16 04:44:56 plugin】中文搜索插件 开发交流

本帖最后由 durongze 于 2020-8-31 03:40 编辑

首先感谢‘夜风流’‘罗聪’‘肖梓航’各位我不认识的人。{:1_896:}只是在网上可能看到过你们写的资料。
第一部分 :写给正在写插件的人。
最新版本插件相关的接口和1.x 相关接口的差异介绍:
1.      初始化接口:这个接口决定了插件是否能被加载。主要作用是告知主程序本插件的名称,版本的信息。
      新版:bool PlugInit(PLUG_INITSTRUCT* initStruct);
      旧版:intODBG_Plugininit(int ollydbgversion, HWND hw, ulong *features);
2.   停止接口
      新版:bool PlugStop();
      旧版:intODBG_Pluginclose(void);

3.   设置接口 :用来在主程序的各区域子窗口创建菜单。
      新版:void PlugSetup(PLUG_SETUPSTRUCT* setupStruct);//
      旧版:int ODBG_Pluginmenu(int origin, char data, void *item)

4.   功能接口:主程序通知插件用户点击了菜单。
      新版:void CbMenuEntry(CBTYPE cbType, void* callbackInfo) ;
      旧版:intRegisterpluginclass(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.voidAddtolist(long addr, int highlight, char *format, ...);
2. voidInfoline(char *format, ...);
3. voidProgress(int promille, char *format, ...);
4. voidFlash(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);


isver2 发表于 2020-8-31 08:29

不错,很有用的。

otho 发表于 2020-8-31 08:40

感谢楼主分享

redapple2015 发表于 2020-8-31 09:09

没有打包好的工具吗?

cpj1203 发表于 2020-8-31 09:26

感謝熱心之士,受益無窮。

durongze 发表于 2020-8-31 21:02

redapple2015 发表于 2020-8-31 09:09
没有打包好的工具吗?

正准备做呢。快的话,下周一应该可以出第一个版本,如果还是没搞懂第三部分的问题的话,估计还需要延迟。最晚的话,我会在十月一日的假期,争取做出来。

durongze 发表于 2020-9-7 22:02

貌似可以显示中文,就是还存在问题。

confuses888 发表于 2020-10-8 15:59

假期结束啦。做出来了没有 老铁
我有个问题想问x64dbg的内存窗口UNICODE是不是没法正确显示中文啊。我这只能显示数字和字母

durongze 发表于 2020-10-8 19:18

confuses888 发表于 2020-10-8 15:59
假期结束啦。做出来了没有 老铁
我有个问题想问x64dbg的内存窗口UNICODE是不是没法正确显示中文啊。我这 ...

生活无法保证了,准备放弃这个计划。先谋生去了。。。。。。。:lol

lanble 发表于 2020-10-29 19:13

很期待,可惜放弃了
页: [1] 2
查看完整版本: 【x64dbg 2020-08-16 04:44:56 plugin】中文搜索插件 开发交流