这个插件已经有很多年的历史了,话说也好几百年没更新了。不知道还有冇淫用这个东西,前一段时间曾经编译了支持6.x的插件,http://www.h4ck.org.cn/2012/06/ida-sync-for-ida-6-x/。但是在使用的过程中发现还是有很多问题的,比如函数名称push的问题。
插件在同步的过程中虽然去掉了诸如sub_之类的函数,但是对于一些其他的脏名称则没有过滤,比如__ 开头的函数。为了更好地使用这个东东,修改了一下过滤规则,现在已经可以去掉大部分的脏名称了。
在修改的过程中尝试使用了ida sdk提供的api,但是基本没什么效果,并没有完全的过滤掉自动生成的名称和脏名称,相关api如下:
// Does the current byte have non-trivial (non-dummy) name?
inline bool idaapi has_name(flags_t F) { return (F & FF_NAME) != 0; }
inline bool idaapi f_has_name(flags_t f, void *) { return has_name(f); }
// Does the current byte have dummy (auto-generated, with special prefix) name?
#define FF_ANYNAME (FF_LABL|FF_NAME)
inline bool idaapi has_dummy_name(flags_t F){ return (F & FF_ANYNAME) == FF_LABL; }
inline bool idaapi f_has_dummy_name(flags_t f, void *) { return has_dummy_name(f); }
// Does the current byte have auto-generated (no special prefix) name?
inline bool idaapi has_auto_name(flags_t F){ return (F & FF_ANYNAME) == FF_ANYNAME; }
// Does the current byte have any name?
inline bool idaapi has_any_name(flags_t F){ return (F & FF_ANYNAME) != 0; }
// Does the current byte have user-specified name?
inline bool idaapi has_user_name(flags_t F){ return (F & FF_ANYNAME) == FF_NAME; }
inline bool idaapi f_has_user_name(flags_t F, void *){ return has_user_name(F); }
如果谁知道怎么使用这些api进行过滤还望不吝赐教。
另外给插件增加了一个断点同步的功能,会自动的将所有的断点和状态,以及当前地址的注释同步到服务器上。
同步的效果就是看到的这样,为了使用该功能需要修改ida插件的配置文件plugins.cfg文件。在最后添加一行:
IDA_Sync_-_Push_All_Breakpoints IDA_SYNC_PLUGIN Alt-Shift-B 5
当然,这个快捷键可以自己定义只要不与其他的插件快捷键和系统的快捷键冲突即可。
以下是完整的配置文件信息:
; IDA Sync Hotkeys
IDA_Sync_-_Indented_Comment IDA_SYNC_PLUGIN Alt-Shift-M 1
IDA_Sync_-_Repeatable_Comment IDA_SYNC_PLUGIN Alt-Shift-R 2
IDA_Sync_-_Name IDA_SYNC_PLUGIN Alt-Shift-N 3
IDA_Sync_-_Push_All_Function_Names IDA_SYNC_PLUGIN Alt-Shift-P 4
IDA_Sync_-_Push_All_Breakpoints IDA_SYNC_PLUGIN Alt-Shift-B 5
该插件的服务器端请从这个文章中的地址下载: http://www.h4ck.org.cn/2012/06/ida-sync-for-ida-6-x/
猛击此处下载升级版插件!
另外服务端的进程也是异常的蛋疼啊,速度太快了会直接导致数据接收失败,这个看来也要找个时间重构下。