能力值:
( LV9,RANK:320 )
|
-
-
2 楼
我更感兴趣的是编译与反编译相关理论,逆向是一部分的实践.如果仅仅止步于逆向,那我觉得PLT不重要.
目前研究反编译技术的方法有如下几种:
- 基于文法的反编译。该方法是针对不同语言,对其高级控制结构和类型进行枚举匹配,来进行反编译实现。
- 可逆语言编译器的反编译器。这一种研究方法比较特殊,只有少数的语言支持。比如Prolog的可回溯性,输入与输出是可逆的情况下可以较容易写出反编译器。
- 知识收集性反编译。它是与编译器的版本、语言特性相关的。针对不同编译器的编译结果特征和相应语言的特性来反编译。
- 反编译文法描述的反编译。有人在yacc、bison等词法、语法分析器生成器的思想上考虑能不能有在反编译文法描述下的反编译器生成器。这方面的研究很少,文献几乎没有。
反编译历史
|
能力值:
( LV17,RANK:1185 )
|
-
-
3 楼
红绡枫叶
我更感兴趣的是编译与反编译相关理论,逆向是一部分的实践.如果仅仅止步于逆向,那我觉得PLT不重要.
目前研究反编译技术的方法有如下几种:
...
目前来看,系统性的反编译理论并没有出现,相关研究还相对较少,真正可用于软件逆向工程的公开的反编译理论很少。
一般搞逆向可能不用,但是也许想写出hex-ray那样的反编译器就有PL的用武之地了吧。。可能我以后会从事这方面的研究,哈哈
|
能力值:
(RANK:270 )
|
-
-
4 楼
PL 比较欣赏王垠
|
能力值:
( LV17,RANK:1185 )
|
-
-
5 楼
BDomne
PL 比较欣赏王垠
现在知乎里各种高中生学点Haskell就出来装逼了
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
有用吧。逆向里面用经验解释的东西,都可以用编译器相关的东西取代经验。反编译的话,其实写过一遍编译器,就会写反编译器了。按维基百科里面的说法,编译器相关的东西算是plt的子学科,或者说有重叠的部分。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
ps最近一直在向想搞二进制这块的人安利去学编译器,不过似乎没什么人愿意入坑。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
没错,逆向到后面就是靠经验形成的一种感觉,如果能自己实现一个编译器,真是再好不过了,毕竟理论比经验更科学
|
能力值:
( LV17,RANK:1185 )
|
-
-
9 楼
ktkitty
ps最近一直在向想搞二进制这块的人安利去学编译器,不过似乎没什么人愿意入坑。
编译器和反编译器还是有区别的吧,,感觉反编译器更难写一点,写过编译器,虽然前端用的是parser generator。。。搞二进制安全不去了解编译器怎么可能。。。虽然前端倒不是很重要,后端代码生成比较重要一点。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
holing
编译器和反编译器还是有区别的吧,,感觉反编译器更难写一点,写过编译器,虽然前端用的是parser generator。。。搞二进制安全不去了解编译器怎么可能。。。虽然前端倒不是很重要,后端代码生成比较 ...
不知道你看过反编译器相关的资料吗?里面的数据流分析和控制流分析,和编译器那一套,是一样的啊。前端并不是不重要,只是前端和后端针对的东西不一样。后端相关的东西让你可以看懂、分析那堆汇编,前端相关的东西,让你理解“问题”,推荐你看下《parsing techniques》这本书,开拓下思路。ps反编译最后一步不也是parsing(
|
|
|