看雪安全论坛

 

 

 

 


返回   看雪安全论坛 > 信息安全 > 『资源下载』 > IDA Pro插件收集区
忘记密码?

发表新主题 回复
优秀帖  
主题工具 显示模式
本站声明:看雪论坛文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者信息及本声明!
nnhy
级别:8 | 在线时长:104小时 | 升级还需:13小时级别:8 | 在线时长:104小时 | 升级还需:13小时

nnhy 的头像

普通会员
普通会员

资 料:
注册日期: Nov 2006
帖子: 209 nnhy 品行端正
精华: 3
现金: 45 Kx
致谢数: 3
获感谢文章数:1
获会员感谢数:1
1 旧 2010-05-06 03:23:14 icon16 【原创】三年磨一剑之IDACSharp
nnhy 当前离线

标 题: 【原创】三年磨一剑之IDACSharp
作 者: nnhy
时 间: 2010-05-06,03:23:14
链 接: http://bbs.pediy.com/showthread.php?t=112418

自2007年3月开始研究IDA以来,已3年有余!自认为对idc脚本比较熟悉,最大的成果就是重写老外的vb.idc为vb.c。期间还有其它大大小小的脚本。虽如此,仍感力不从心,idc脚本难以构建中大型应用(vb.c有2100多行)。
  正如2005年我犹豫是否应该选择Java等高级语言以构建中大型应用,此时也在犹豫是否应该利用C++等高级语言编写IDA插件。
  老外的一篇关于使用VB和C#编写IDA插件的文章点醒了我,除了C++,我们还有很多的选择。那时候开始,我选择了C#来做IDA插件,直到今天。
  且不论使用C#来做IDA插件是否会成功,这研究的3年里,我得到了非常非常多的东西!
  老外的思路是VB和C#做成COM,然后用C++包装,Easy,很容易做好一个插件。但是需要暴露IDA的接口给插件使用的时候,才发现那是一个登月工程。并且C#做成的COM,部署和调试都不方便。
  后来向微软的大牛请教,得知一个新的方法,利用C++加载.Net运行时,从而启动C#插件。这下子漂亮多了,但是仍然解决不了暴露接口的问题。IDA的接口很多,大多数都是用不上的,其实只要实现了IDC中的几十个函数即可,于是我开始了登月工程,手工包装暴露接口,历时两年!
  直到上个月,例行工作的时候,一时冲动,把包装项目改成CLR来编译,IDA居然还认!!!这可是巨大的发现,这意味着:可以直接使用C++/CLI实现IDA插件!
  同时,看到网上更新了IDAPython,忍不住研究一下,看看它是如何实现的。原来它是通过SWIG做的包装,基本做到自动化。还发现,IDA接口本身就提供了对SWIG的支持。SWIG的资料不多,我想借助它来包装C#版本的时候,总是失败。想想算了,三年都过来了,也不在乎这一回,继续手工包装。因为是使用C++/CLI,工作量就大大减少了,同时有IDAPython在那里作为参考,找起接口函数来非常方便。
  期间,还有一些小插曲,C++/CLI调用C#没有问题,C#调用C++/CLI编写的插件的时候就有问题了。原来C#类库项目引用C++/CLI项目失败,因为它的输出是plw,vs直接阻止。只好改名dll后调用。在使用的时候,还得用上dll的这一份拷贝,并且要放在IDA根目录才行。
  一些额外的收获:
1,C#可以直接操作汇编(是Native Asm,不是IL)。通过委托,可以随意调用PE里面的任意函数,不管它共有私有,因为这个调用是汇编指令级的。
2,学习了.Net的核心机制,知道它是怎么工作的。
3,C#也可以给Native下钩子,结合第一点,就是爱怎么整就怎么整。
4,基本上,C++的开源项目,使用CLR编译后,都有办法供C#使用。
5,意志的磨练……
  回到正题!
  这是一个IDA插件,名为IDACSharp,同时又是C#插件管理器,它的作用就是充当IDA和C#的桥梁(双向)。
  一共四个文件:
1,IDACSharp.plw是主插件,同时也是包装器,已经把常用的接口包装为.Net接口,该文件应该放在Plugins目录;
2,IDACSharp.dll跟IDACSharp.plw就是同一个东西,只是后缀不同而已,该文件应该放在IDA根目录;
3,CSharpLoader.dll是C#编写的插件管理器,放在CSharp目录下,IDACSharp.plw会找到并加载它;
4,IDATest.dll是C#编写的插件例子,列出当前IDA数据库前30个函数,双击跳转到函数所在位置,也是放在CSharp目录下。
  IDACSharp尚未完工,CSharpLoader的插件管理还没有做,这块问题不大,重要的是,所包装的接口,绝大部分都还没有测试过,并且还有一些没有包装完成,打算在后面逐步完善!

大石头
nnhy(at)vip.qq.com
QQ群1600800
2010-05-06 03:19
 
IDACSharp.png
上传的附件
文件类型: rar 发布_20100506032141.rar (96.1 KB, 486 次下载)
回复时引用此帖 返回顶端
感谢 nnhy
此篇文章之用户:
xPLK (2010-11-12)
helpmsg
级别:12 | 在线时长:201小时 | 升级还需:20小时级别:12 | 在线时长:201小时 | 升级还需:20小时级别:12 | 在线时长:201小时 | 升级还需:20小时

初级会员
初级会员

资 料:
注册日期: Feb 2007
帖子: 70 helpmsg 品行端正
精华: 0
现金: 236 Kx
致谢数: 0
获感谢文章数:0
获会员感谢数:0
2 旧 2010-05-06, 03:29:05 默认
helpmsg 当前离线

虽然我不是很懂!
但是支持你开发出更好的东西
回复时引用此帖 返回顶端
estelle
级别:7 | 在线时长:79小时 | 升级还需:17小时级别:7 | 在线时长:79小时 | 升级还需:17小时级别:7 | 在线时长:79小时 | 升级还需:17小时级别:7 | 在线时长:79小时 | 升级还需:17小时

初级会员
初级会员

资 料:
注册日期: Apr 2009
帖子: 59 estelle 品行端正
精华: 0
现金: 70 Kx
致谢数: 0
获感谢文章数:0
获会员感谢数:0
3 旧 2010-05-06, 04:18:32 默认
estelle 当前离线

很强大 等写好了控制台再来玩
回复时引用此帖 返回顶端
yingyue
级别:59 | 在线时长:3785小时 | 升级还需:55小时级别:59 | 在线时长:3785小时 | 升级还需:55小时级别:59 | 在线时长:3785小时 | 升级还需:55小时级别:59 | 在线时长:3785小时 | 升级还需:55小时级别:59 | 在线时长:3785小时 | 升级还需:55小时级别:59 | 在线时长:3785小时 | 升级还需:55小时级别:59 | 在线时长:3785小时 | 升级还需:55小时级别:59 | 在线时长:3785小时 | 升级还需:55小时

yingyue 的头像

普通会员
普通会员

资 料:
注册日期: May 2007
帖子: 2,385 yingyue 品行端正
精华: 0
现金: 1866 Kx
致谢数: 1
获感谢文章数:11
获会员感谢数:11
4 旧 2010-05-06, 10:19:22 默认
yingyue 当前离线

用过你的  VB.C ,佩服
回复时引用此帖 返回顶端
prize
级别:10 | 在线时长:157小时 | 升级还需:8小时级别:10 | 在线时长:157小时 | 升级还需:8小时级别:10 | 在线时长:157小时 | 升级还需:8小时级别:10 | 在线时长:157小时 | 升级还需:8小时

初级会员
初级会员

资 料:
注册日期: Dec 2007
帖子: 189 prize 品行端正
精华: 0
现金: 221 Kx
致谢数: 4
获感谢文章数:3
获会员感谢数:3
5 旧 2010-05-06, 10:53:23 默认
prize 当前离线

经典实用,谢谢大大无私分享
回复时引用此帖 返回顶端
奘和
级别:90 | 在线时长:8592小时 | 升级还需:53小时级别:90 | 在线时长:8592小时 | 升级还需:53小时级别:90 | 在线时长:8592小时 | 升级还需:53小时级别:90 | 在线时长:8592小时 | 升级还需:53小时

初级会员
初级会员

资 料:
注册日期: Feb 2009
帖子: 689 奘和 品行端正
精华: 0
现金: 5085 Kx
致谢数: 0
获感谢文章数:7
获会员感谢数:8
6 旧 2010-05-06, 11:15:58 默认
奘和 当前离线

这个不得不服
LZ的技术好
耐心更足
回复时引用此帖 返回顶端
frip
级别:11 | 在线时长:180小时 | 升级还需:12小时级别:11 | 在线时长:180小时 | 升级还需:12小时级别:11 | 在线时长:180小时 | 升级还需:12小时级别:11 | 在线时长:180小时 | 升级还需:12小时级别:11 | 在线时长:180小时 | 升级还需:12小时

普通会员
初级会员

资 料:
注册日期: Jan 2005
帖子: 59 frip 品行端正
精华: 0
现金: 215 Kx
致谢数: 0
获感谢文章数:0
获会员感谢数:0
7 旧 2010-05-06, 14:23:40 默认
frip 当前离线

强帖留名
回复时引用此帖 返回顶端
basaiyv1
级别:9 | 在线时长:127小时 | 升级还需:13小时级别:9 | 在线时长:127小时 | 升级还需:13小时级别:9 | 在线时长:127小时 | 升级还需:13小时

初级会员
初级会员

资 料:
注册日期: May 2004
帖子: 310 basaiyv1 品行端正
精华: 0
现金: 214 Kx
致谢数: 0
获感谢文章数:0
获会员感谢数:0
8 旧 2010-05-20, 20:00:32 默认
basaiyv1 当前离线

山上的人物啊。牛人
回复时引用此帖 返回顶端
NWMonster
级别:10 | 在线时长:153小时 | 升级还需:12小时级别:10 | 在线时长:153小时 | 升级还需:12小时级别:10 | 在线时长:153小时 | 升级还需:12小时级别:10 | 在线时长:153小时 | 升级还需:12小时

NWMonster 的头像

普通会员
普通会员

资 料:
注册日期: Jan 2006
帖子: 449 NWMonster 品行端正
精华: 1
现金: 215 Kx
致谢数: 2
获感谢文章数:0
获会员感谢数:0
9 旧 2010-05-20, 20:51:12 默认
NWMonster 当前离线

好东西啊。膜拜
回复时引用此帖 返回顶端
terren
级别:7 | 在线时长:90小时 | 升级还需:6小时级别:7 | 在线时长:90小时 | 升级还需:6小时级别:7 | 在线时长:90小时 | 升级还需:6小时级别:7 | 在线时长:90小时 | 升级还需:6小时

terren 的头像

普通会员
普通会员

资 料:
注册日期: Jun 2004
帖子: 91 terren 品行端正
精华: 1
现金: 240 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
10 旧 2010-05-22, 08:35:19 默认
terren 当前离线

大石头,搞的不错哦,多谢你当初的提点啊,IDA插件与C#的联系。
回复时引用此帖 返回顶端
sjclch
级别:7 | 在线时长:83小时 | 升级还需:13小时级别:7 | 在线时长:83小时 | 升级还需:13小时级别:7 | 在线时长:83小时 | 升级还需:13小时级别:7 | 在线时长:83小时 | 升级还需:13小时

初级会员
初级会员

资 料:
注册日期: Jul 2005
帖子: 138 sjclch 品行端正
精华: 0
现金: 203 Kx
致谢数: 1
获感谢文章数:2
获会员感谢数:2
11 旧 2010-05-22, 08:49:31 默认
sjclch 当前离线

好工具好插件,期待更好,只能膜拜
回复时引用此帖 返回顶端
柯睡
级别:6 | 在线时长:76小时 | 升级还需:1小时级别:6 | 在线时长:76小时 | 升级还需:1小时级别:6 | 在线时长:76小时 | 升级还需:1小时

初级会员
初级会员

资 料:
注册日期: Jul 2008
帖子: 98 柯睡 品行端正
精华: 0
现金: 214 Kx
致谢数: 1
获感谢文章数:0
获会员感谢数:0
12 旧 2010-05-22, 13:50:36 默认
柯睡 当前离线

强悍的大侠   留名
回复时引用此帖 返回顶端
nnhy
级别:8 | 在线时长:104小时 | 升级还需:13小时级别:8 | 在线时长:104小时 | 升级还需:13小时

nnhy 的头像

普通会员
普通会员

资 料:
注册日期: Nov 2006
帖子: 209 nnhy 品行端正
精华: 3
现金: 45 Kx
致谢数: 3
获感谢文章数:1
获会员感谢数:1
13 旧 2010-05-22, 20:38:45 默认
nnhy 当前离线

引用:
最初由 terren发布 查看帖子
大石头,搞的不错哦,多谢你当初的提点啊,IDA插件与C#的联系。
 
呵呵,不用客气!
 
IDACSharp插件已经完成,目前正在开发基于它的VBKiller插件,纯C#实现。
现在正在做VB文件格式的解析,目前我收集的资料太少,并且残缺不全,所以进度慢了点。
 
我在这里非常欢迎各位C#开发者前来参与IDACSharp的测试
回复时引用此帖 返回顶端
cnsgp
级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时

初级会员
初级会员

资 料:
注册日期: Sep 2006
帖子: 3 cnsgp 品行端正
精华: 0
现金: 205 Kx
致谢数: 0
获感谢文章数:0
获会员感谢数:0
14 旧 2010-06-04, 22:43:27 默认
cnsgp 当前离线

向大牛请教几个问题:
 1、能不能通过改写SDK,使用Delphi来开发插件?
 2、能不能编一个可以调用脚本的插件?我编了不少IDC,结果在IDC面板上密密麻麻,而且在不用IDC时还必须一个个手动关闭,很是麻烦。如果有插件可以调用脚本,相当于每个脚本都自动转为插件了,大大方便操作!
回复时引用此帖 返回顶端
nnhy
级别:8 | 在线时长:104小时 | 升级还需:13小时级别:8 | 在线时长:104小时 | 升级还需:13小时

nnhy 的头像

普通会员
普通会员

资 料:
注册日期: Nov 2006
帖子: 209 nnhy 品行端正
精华: 3
现金: 45 Kx
致谢数: 3
获感谢文章数:1
获会员感谢数:1
15 旧 2010-06-05, 12:33:02 默认
nnhy 当前离线

引用:
最初由 cnsgp发布 查看帖子
向大牛请教几个问题:
1、能不能通过改写SDK,使用Delphi来开发插件?
2、能不能编一个可以调用脚本的插件?我编了不少IDC,结果在IDC面板上密密麻麻,而且在不用IDC时还必须一个个手动关闭,很是麻烦。如果有插件可以调用脚本,相当于每个脚本都自动转为插件了,大大方便操作!
 
1,实现Delphi插件不难,但是要把SDK的众多接口函数导出来,可就不容易了,我花了一个多月才完成部分常用函数的导出(导出为.Net函数)
2,调用IDC的插件很容易,因为本身就有这个函数。等闲点的时候,我做一个。默认把你的所有IDC放到一个指定文件夹,我的插件会自动查找这些IDC,然后列出来,双击对应项就能执行,我想你要的是这样的效果吧。
回复时引用此帖 返回顶端
发表新主题 回复

添加到书签

主题工具
显示模式

发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛论坛启用 vB 代码
论坛启用 表情图标


所有时间均为北京时间, 现在的时间是 00:03:55.


  ©2000-2014 看雪学院(PEdiy.com) |关于我们 | 京ICP备10040895号-8 | 知道创宇提供带宽资源 | 微信公众帐号:ikanxue   手机客户端: