反编译研究资料以及各种反编译器

硕期间研究反编译,下面从反编译工具库,JAVA反编译和反编译主要研究机构进行介绍。

反编译的历史,从传统的基于编译理论的研究,正逐步转换成一种基于搜索的代码块匹配研究。

Decompilation as search》就是基于搜索的思路去研究反编译,效果还不错。

随着移动设备的逐步普及,移动设备的安全越来越重要,可以参考《Android Hacker's Handbook》,在CSDN上有下载。


主要的反编译器和逆向分析技术

[1] DDC

https://github.com/nemerle/dcc

[2] libbeauty

Given an input .o file, it can create a .c file that compiles and has the same function as the original .o file

https://github.com/jcdutton/libbeauty/wiki

https://github.com/jcdutton/libbeauty [有部分源码]

[3] Dagger

Dagger enables easy retargetability of several planned tools, like rewriters, static or dynamic binary translators , and even simple instruction set emulators.

http://dagger.repzret.org/

[4] SecondWrite

商业化的软件

http://www.isr.umd.edu/research/posters/secondwrite

[5] IDC

交互式反编译器,某博士论文方向。

http://idc.sourceforge.net/

http://idc.sourceforge.net/wiki/

[6] Fracture

Fracture can speed up a variety of applications and also enable generic implementations of a number of static and dynamic analysis tools.

https://github.com/draperlaboratory/fracture

[7] RevGen

Automatically converting existing binary programs to the standard LLVM IR, making an increasingly large number of static and dynamic analysis frameworks, as well as run-time instrumentation tools, applicable to legacy software.

http://dslab.epfl.ch/

[8] Emscripten

A compiler from LLVM assembly to JavaScript.  However there is also a lot of  room for additional optimizations in Emscripten itself, in  particular in how it nativizes variables and s tructures, which  can potentially lead to very significant speedups.

http://www.emscripten.org  

[9] Retargetable Decompiler

Create a retargetable decompiler that can be utilized for source code recovery, static malware analysis, etc.

http://decompiler.fit.vutbr.cz/home/

[10] BAP

Make it easy to develop binary analysis techniques and tools.

http://bap.ece.cmu.edu

[11] Jakstab

Jakstab is an Abstract Interpretation-based, integrated disassembly and static analysis framework for designing analyses on executables and recovering reliable control flow graphs.It is designed to be adaptable to multiple hardware platforms using customized instruction decoding and processor specifications similar to the Boomerang decompiler.

http://www.jakstab.org/home

[12] Boomerang

Develop a real decompiler for machine code programs through the open source community

http://boomerang.sourceforge.net/

[13] Hex-Rays

A plugin to IDA Disassembler

https://www.hex-rays.com/products/decompiler/

[14] Phoenix

参考《Native x86 Decompilation using Semantics-Preserving Structural Analysis and Iterative Control-Flow Structuring》

[15] C-Decompiler

上交的陈耿标 《反编译器C-Decompiler关键技术的研究与实现》

[16] Capstone

提供API的反汇编器,支持多种体系结构

http://www.capstone-engine.org/index.html

[17] SmartDec

基于数学推理的反编译器;经过实际测试,此工具的鲁棒性较差。

http://decompilation.info/

[18] Obfuscator-LLVM

安全分析使用

https://github.com/obfuscator-llvm/obfuscator/wiki

[19] mcsema

It is a library to translate the semantics of native code to LLVM IR.

https://github.com/trailofbits/mcsema

[20] PIN

Pin is a dynamic binary instrumentation framework for the IA-32 and x86-64 instruction-set architectures that enables the creation of dynamic program analysis tools.

https://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool

[21] valgrind

Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools.

http://valgrind.org/

[22] BitBlaze

The BitBlaze project aims to design and develop a powerful binary analysis platform and employ the platform in order to (1) analyze and develop novel COTS protection and diagnostic mechanisms and (2) analyze, understand, and develop defenses against malicious code. The BitBlaze project also strives to open new application areas of binary analysis, which provides sound and effective solutions to applications beyond software security and malicious code defense, such as protocol reverse engineering and fingerprint generation.

http://bitblaze.cs.berkeley.edu/

[23] CodeSurfer

CodeSurfer is a code-understanding tool for C and C++ source code and for Intel x86 machine code. CodeSurfer performs a deep semantic analysis of a program and provides sophisticated queries for understanding your code. It enables you to effortlessly identify and navigate the deep structure of your program: the semantic threads that reveal exactly how your program works. CodeSurfer can be used either interactively or programmatically.

http://www.grammatech.com/research/technologies/codesurfer

[24] Decompilation as search

将反编译看成了搜索问题

http://www.rendezvousalpha.com

[25] snowman

With a new decompiler for C/C++, developers can gain insight into the workings of a program without looking at source code. That's the plan for Snowman, which the project's lead developer hopes to make akin to an LLVM for decompilation.

http://derevenets.com/index.html

[26] libcpu

"libcpu" is an open source library that emulates several CPU architectures, allowing itself to be used as the CPU core for different kinds of emulator projects. It uses its own frontends for the different CPU types, and uses LLVM for the backend.

https://github.com/libcpu/libcpu

[27] BARF Project

BARF is an open source binary analysis framework that aims to support a wide range of binary code analysis tasks that are common in the information security discipline. It is a scriptable platform that supports instruction lifting from multiple architectures, binary translation to an intermediate representation, an extensible framework for code analysis plugins and interoperation with external tools such as debuggers, SMT solvers and instrumentation tools. The framework is designed primarily for human-assisted analysis but it can be fully automated.

https://github.com/programa-stic/barf-project

[28] miasm

Miasm is a free and open source (GPLv2) reverse engineering framework. Miasm aims to analyze / modify / generate binary programs. Here is a non exhaustive list of features:

Opening / modifying / generating PE / ELF 32 / 64 LE / BE using Elfesteem

Assembling / Disassembling X86 / ARM / MIPS / SH4 / MSP430

Representing assembly semantic using intermediate language

Emulating using JIT (dynamic code analysis, unpacking, ...)

Expression simplification for automatic de-obfuscation

https://github.com/cea-sec/miasm

[29] obfuscator-llvm

The aim of this project is to provide an open-source fork of theLLVMcompilation suite able to provide increased software security throughcode obfuscationand tamper-proofing. As we currently mostly work at theIntermediate Representation(IR) level, our tool is compatible with all programming languages (C, C++, Objective-C, Ada and Fortran) and target platforms (x86, x86-64, PowerPC, PowerPC-64, ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, SystemZ, and XCore) currently supported by LLVM.

https://github.com/obfuscator-llvm/obfuscator/wiki

[30] DAVA

Dava is a decompiler for arbitrary Java bytecode. It can be used to decompile bytecode produced by Java compilers, compilers for other languages (AspectJ, SML, C) that generate Java bytecode and tools like Java bytecode obfuscators, instrumentors and optimizers.

http://www.sable.mcgill.ca/dava/

[31] ded

ded is a project which aims at decompiling Android applications. The ded tool retargets Android applications in .dex format to traditional .class files. These .class files can then be processed by existing Java tools, including decompilers. Thus, Android applications can be analyzed using a vast range of techniques developed for traditional Java applications.

http://siis.cse.psu.edu/ded/

[32] Dare

http://siis.cse.psu.edu/dare/index.html

[33] Procyon

Procyon is a suite of Java metaprogramming tools focused on code generation and analysis

https://bitbucket.org/mstrobel/procyon


主要的反编译中间表达式

[1] BIL  http://bap.ece.cmu.edu/

[2] REIL http://www.zynamics.com/binnavi/manual/html/reil_language.htm

[3] LLVM IR


主要的研究机构

[1] CMU University

http://bap.ece.cmu.edu|http://security.ece.cmu.edu/

[2] Berkeley University

http://bitblaze.cs.berkeley.edu/

[3] Maryland University

https://www.isr.umd.edu/research/posters/secondwrite

[4] Saarland university  Compiler Group

http://compilers.cs.uni-saarland.de/

[5] IDA

https://www.hex-rays.com/index.shtml

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,639评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,093评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,079评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,329评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,343评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,047评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,645评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,565评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,095评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,201评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,338评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,014评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,701评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,194评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,320评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,685评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,345评论 2 358

推荐阅读更多精彩内容