idapython

细说arm反类ollvm混淆-基本思想

北城以北 提交于 2020-08-14 12:08:36
从最简单开始 先从一个简单的函数开始 1 2 3 4 5 6 7 8 9 10 11 12 int main ( int argc, const char **argv) { int a = atoi (argv[1]); if (a > 5) { a = a+1; printf ( "a %d" , a); } else { a *= 2; printf ( "a %d" , a); } return 0; } 直接正常编译,ida cfg如下 如果用ollvm加上fla(这里为了简单说明问题,只加fla,加了其他混淆并不改变反混淆的原理) 可以看到,加入了很多小块,而原来真正跟原程序相关的块,这里已经用浅蓝色标出,先来看看这样子直接F5的结果。 可以看到原来非常直接的顺序执行逻辑,现在变成非常不直观的平坦化逻辑,每一个真实逻辑执行完,无法直观地知道下一个真正要执行的地方是哪里。造成这种效果的罪魁祸首就是加上去的小块. 观察一下一个真实块的逻辑 这个块对应的是原程序a变量与5比较的逻辑,只不过做完a跟5的比较判断之后,将一个很大的数字mov到R0寄存器. 继续看看这个块的目的地loc_738所做的事情。 这个块做的事情只有一个,根据之前的真实块(loc_70E)mov到R0的结果,决定需要跳转到哪个块。中间可能经过其他白色块的中转,但是最终的结果肯定是另外一个真实块。

黑莓开源逆向工程 PE 工具——PE Tree

风流意气都作罢 提交于 2020-08-14 10:16:51
近日,在 Black Hat USA 2020 安全大会上,黑莓公司开源了其逆向工程 PE 文件的工具 PE Tree。这是一款基于 Python 的应用程序,适用于 Linux、Mac、Windows 系统,可用于逆向工程和分析 Portable Executable(PE)文件的内部结构。 所谓 PE 文件,意为可移植的可执行的文件,常被黑客用来隐藏恶意负载的常见文件类型。 目前,该源代码采用 Apache License 2.0 许可证,发布在 GitHub: https://github.com/blackberry/pe_tree 上。 对此,黑莓公司表示:“恶意软件的逆向工程是一个非常耗时且费力的过程,可能涉及数小时的反汇编甚至是解构软件程序的过程。” 时下,BlackBerry Research and Intelligence 团队正在将最初开发且仅供内部使用的开源工具 PE Tree 对外开放,而此开源软件具有诸多的优势: 以易于浏览的树状视图列出 PE 文件内容 集成 IDA Pro 反编译器 集成 VirusTotal 搜索 可以将数据发送到 CyberChef 可以作为独立应用程序或 IDAPython 插件运行 开源许可证允许社区捐款 同时,这款工具也是 PE-bear 的替代产品。另外,PE Tree 的开源还标志着最新的网络安全工具进入开源领域

逆向工程开源工具-PE Tree

本秂侑毒 提交于 2020-08-05 07:54:52
科技媒体ZDNET报道, 黑莓 在Black Hat USA 2020 安全 大会上开源了逆向工程工具PE Tree。遵守Apache开源协议。基于Python编写,可运行于Linux,Mac和Windows。PE Tree可用于逆向工程和分析Portable Executable(PE)文件的内部结构。 黑莓 表示,逆向工程是一个极端的耗费时间和劳动密集过程,需要数小时的反汇编,有时候还需要重建软件程序。黑莓技术团队开源PE Tree将有益于恶意软件逆向工程社区。 特性: 以易于浏览的树状视图列出PE文件内容; 与IDA Pro反编译器集成(轻松导航PE结构,转储内存中的PE文件,执行导入重建); VirusTotal搜索集成; 可以将数据发送到Cyber​​Chef; 可以作为独立应用程序或IDAPython插件运行。 报道原文:https://www.zdnet.com/article/blackberry-releases-new-security-tool-for-reverse-engineering-pe-files/ 相关文件下载地址 本地直接下载 来源: oschina 链接: https://my.oschina.net/u/4254929/blog/4470049

[ida]使用pycharm编写IDApython

最后都变了- 提交于 2020-04-24 02:59:00
使用pycharm来编写IDApython 一、导入IDApython的模块    IDA目录下有一个Python目录,将其添加到项目的跟目录下。      放到python项目目录下      修改文件夹属性,否则会出现引用报错    二 、配置python2.7解释器    使用IDA中自带的python解释器(免安装版都会打包python解释器,现在很少使用 2.x 版本了)    三、测试代码   可以正常编写 from idautils import * from idaapi import * from idc import * funcs = Functions() for f in funcs: name = Name(f) end = GetFunctionAttr(f,FUNCATTR_END) locals = GetFunctionAttr(f,FUNCATTR_FRSIZE) frame = GetFrame(f) if frame is None: continue ret = GetMemberOffset(frame, " r " ) if ret == -1 : continue firstArg = ret + 4 args = GetStrucSize(frame) - firstArg Message( " Function: %s

[ida]使用pycharm编写IDApython

こ雲淡風輕ζ 提交于 2020-04-21 16:38:08
使用pycharm来编写IDApython 一、导入IDApython的模块    IDA目录下有一个Python目录,将其添加到项目的跟目录下。      放到python项目目录下      修改文件夹属性,否则会出现引用报错    二 、配置python2.7解释器    使用IDA中自带的python解释器(免安装版都会打包python解释器,现在很少使用 2.x 版本了)    三、测试代码   可以正常编写 from idautils import * from idaapi import * from idc import * funcs = Functions() for f in funcs: name = Name(f) end = GetFunctionAttr(f,FUNCATTR_END) locals = GetFunctionAttr(f,FUNCATTR_FRSIZE) frame = GetFrame(f) if frame is None: continue ret = GetMemberOffset(frame, " r " ) if ret == -1 : continue firstArg = ret + 4 args = GetStrucSize(frame) - firstArg Message( " Function: %s