加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何从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)使用简洁模块
????????$perl -MO =简洁,-exec t.plc

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胆量有一点了解.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读