首页
社区
课程
招聘
[分享]C语言脚本插件(OD1.1,OD2.01)
2014-10-23 22:20 9260

[分享]C语言脚本插件(OD1.1,OD2.01)

2014-10-23 22:20
9260
C语言脚本,支持OllyDbg1.1和支持OllyDbg2.01的,都更新一下,算是个交代吧。
-------------------------------------------------------------------------------------------------------------------------
发现一个陷阱: undefined symbol '__chkstk'
这个陷阱产生原因可以参见 LuckyG 的分析贴: http://bbs.pediy.com/showthread.php?p=1053231
解决办法1: 适当的动态分配、释放一部分局部变量,确保局部变量占用空间小于4096byte
解决办法2: 模拟编译器自定义一个 __chkstk,或者直接定义一个空函数

在OD主页上,针对2.01版本的Disasm函数给出了一个例子,tcc script在加载这个例子的时候,就发现了如上所述的错误.问题具体出在t_disasm上,这个结构即便按照1字节对其,也还是超过了4096byte,于是直接在函数内部定义它脚本将无法编译通过,可以用上面提到的两个办法解决问题

void __chkstk()
{

}

ulong Disassemble(ulong addr,ulong threadid,wchar_t *command,wchar_t *comment) {
//  ulong length,&declength;//TCC SCRIPT 不支持引用
  ulong length,declength;
  uchar cmd[MAXCMDSIZE],*decode;
  t_disasm da;
  t_reg *reg;
  length=Readmemory(cmd,addr,MAXCMDSIZE,MM_SILENT|MM_PARTIAL);
  if (length==0) return 0;
  decode=Finddecode(addr,&declength);
  if (decode!=NULL && declength<length)
    decode=NULL;
  reg=Threadregisters(threadid);
  length=Disasm(cmd,length,addr,decode,&da,DA_TEXT|DA_OPCOMM|DA_MEMORY,reg,NULL);
  if (length==0) return 0;
  StrcopyW(command,TEXTLEN,da.result);
  StrcopyW(comment,TEXTLEN,da.comment);
  return length;
}

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (13)
雪    币: 4928
活跃值: (967)
能力值: ( LV9,RANK:175 )
在线值:
发帖
回帖
粉丝
蚯蚓降龙 2014-10-23 22:48
2
0
菜鸟表示不知道干什么的。。。
雪    币: 80
活跃值: (922)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
暴强 2014-10-23 23:20
3
0
这个东西,要是把工程文件共享下,我会非常非常感激的
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
寂寞寒烟 2014-11-15 19:06
4
0
用了你这个插件  od关不了啊,求改正,很不错的插件,比lua做脚本好,lua实在太蛋疼了,交互起来,而且细化能强类型的语言,这样在写的时候,编译器会自动提示结构体成员
雪    币: 60
活跃值: (881)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
wonderzdh 1 2014-11-15 19:42
5
0
楼主,OD2插件资料该去哪里找?
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
寂寞寒烟 2014-11-16 00:28
6
0
对楼主的这个插件表示由衷的赞叹和感谢,同时希望楼主能有更好的作品出来,用c++做脚本,目前cint可以用来做,但是听说这个东西递归极限就是十几层,bug多,所以别用它,用这个方法吧:http://www.cnblogs.com/index-html/archive/2012/07/28/cppscript.html
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
寂寞寒烟 2014-11-16 06:54
7
0
楼主,你这个时间虽然是 10-23,但是我下来之后 添加到od后,点击加载,居然提示编译错误,仔细一看,你这个原来才是1.1版本的,是不是放错了啊?而且od不能关闭。
雪    币: 3178
活跃值: (1481)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
lynnux 2014-11-21 09:03
8
0
很对,我在写一个插件用的就是CINT,bug多,还不支持64位,我都要考虑要不要继续了
雪    币: 3
活跃值: (209)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
青椒土豆 2014-11-21 21:23
9
0
tcc 做脚本不错,不过有一些局限,比如它的汇编语法和MASM的语法不一样,非常不习惯
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
寂寞寒烟 2014-11-26 04:55
10
0
使用一个库之前,先搜索一下被人对他的评论,这是我的习惯
雪    币: 3178
活跃值: (1481)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
lynnux 2014-11-26 08:48
11
0
现在用libclang了,之前也使用过楼主所用的TCC,不过达不到要求,因为我只需要parser功能,而不需要执行功能
雪    币: 14
活跃值: (28)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
xiaoming 2014-12-4 21:33
12
0
这一点让人非常苦恼和费解,我完全看不出AT&T汇编格式的吸引力在哪里,为什么那么多编译器选择只支持这种格式。

而且,我甚至找不到一种将AT&T和INTEL两种汇编格式相互转化的工具。

不知道是真的没有,还是我不够仔细没有搜索到。
雪    币: 14
活跃值: (28)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
xiaoming 2014-12-4 21:36
13
0
目前,我认为原因出在插件冲突上。我检查了代码,感觉还挺合理的,莫非是某个插件在被OD调用时,没能正确返回吗?
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
寂寞寒烟 2014-12-5 08:35
14
0
我现在用的是菜单里面的退出 这样是可以的
游客
登录 | 注册 方可回帖
返回