今天看到 http://www.freebuf.com/articles/system/101447.html 里面对木马的分析中展示了木马的代码,可是反编译不是只能得到汇编代码么,作者难道是人肉翻译成 C 再自己补上注释的么?我 Google 了一下好像并没有从二进制文件反汇编出源代码的工具,想了想从编译的角度讲也不可能啊……
1
savebox 2016-04-15 19:24:36 +08:00
IDA 有 hexray 插件,F5 一下就出来了,当然,价格喜人
|
2
shippo7 2016-04-15 19:37:33 +08:00 via iPhone
玩玩 Minecraft Forge ,将不开源的 Minecraft 反编译成 Java 代码是可以实现的,变量名是编译器自动生成的
|
3
h4x3rotab 2016-04-15 19:41:02 +08:00 via iPhone 1
反编译只能做到半自动。因为编译的时候丢失了太多信息,只能在后期通过推导和人的辅助来还原这些信息。目前有 hexray 的插件和 snowman 两个民用级别的工具可以实现。
|
4
billlee 2016-04-15 21:22:16 +08:00
看 freeebuf 上那篇文章,这个反编译出来的变量名,都是通过 Windows API 补出来的吧。不是 Windows API 的,连分支语句都只能变成 goto.
|
5
kirisetsz 2016-04-15 21:54:57 +08:00
CPU 跑的机器码,直译就是汇编,好,那我们再教计算机一点技巧,让它翻译出条件语句、赋值语句、函数签名、结构体、类定义、重载…… 所以看反编译出来的代码和看机翻是差不多的感觉,翻译质量好不好的问题。(不如来个机器学习反编译……)
|
6
Mutoo 2016-04-15 22:57:20 +08:00
机翻后可以通过一些重构工具把猜测出来的变量名取得可读性高一些。
|
7
e2real 2016-04-15 23:33:40 +08:00
shit 吃多了就知道什么味道了不是,
做病毒分析的,肯定也可以写病毒不是, 同理可以写病毒,加上犀利的工具,也可以分析的出来不是, 就是一堆 Win32 API 而已, IDA pro 的 F5 插件可以帮助翻译成伪码,加上自己的经验还原作者的程序 so easy. |
8
shyling 2016-04-16 19:23:45 +08:00 via Android
根据逻辑仔细看看代码还是能写出来的吧
|
9
eliteYang 2016-04-20 13:56:40 +08:00
反编译出来的基本是正常人不能识别的,所以没啥用,当然了,市面上还是有一些工具的,但是价格很贵。
|