如何从perlcc -B反编译perl字节码?
发布时间:2020-12-15 23:32:45 所属栏目:大数据 来源:网络整理
导读:我想用deparse反编译字节码,然后我失败了. 我做了以下测试:( perl 5.8.9) 1)用单行创建一个名为t.pl的文件 print 1; 2)编译获取plc文件 $perl -MO=Bytecode,-H,-ot.plc t.pl 3)尝试反编译 $perl -MO=Deparse t.plc use ByteLoader 0.06; t.plc syntax OK 4)
我想用deparse反编译字节码,然后我失败了.
我做了以下测试:( perl 5.8.9) 1)用单行创建一个名为t.pl的文件 print 1; 2)编译获取plc文件 $perl -MO=Bytecode,-H,-ot.plc t.pl 3)尝试反编译 $perl -MO=Deparse t.plc use ByteLoader 0.06; t.plc syntax OK 4)使用简洁模块 1 <0> enter 2 <;> nextstate(main 174 y.pl:1) v 3 <0> pushmark s 4 <$> const(IV 1) s 5 <@> print vK 6 <@> leave[1 ref] vKP/REFC y.plc syntax OK with this method,we can got some valuable info,but it is hard to read. 我无法获得源代码.我在网上搜索过,seems表示Deparse模块可以解析perlcc -B生成的文件. 任何的想法?谢谢 是指: http://ask.slashdot.org/story/05/11/11/0129250/protecting-perl-code 解决方法
这种方法不起作用的原因是因为Bytecode的存储方式. Deparse需要有一个OP树,但B :: Bytecode只是以exec顺序存储ops而不构造树.在Bytecode.pm构造它之后,可以通过乱搞PL_main_root和PL_main_start指针然后在它们上调用newPROG来对op树进行线程化.
简而言之,它可以完成,但不能使用标准工具.你必须写一些东西才能做到这一点,这需要对Perl胆量有一点了解. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |