gpt4 book ai didi

perl - 如何从 perlcc -B 反编译 perl 字节码?

转载 作者:行者123 更新时间:2023-12-01 16:22:40 25 4
gpt4 key购买 nike

我想用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

最佳答案

这不能以明显的方式工作的原因是字节码的存储方式。 Deparse 需要有一棵 OP 树,但 B::Bytecode 只是按照执行顺序存储操作,而不构建树。在 Bytecode.pm 构造操作树之后,可以通过使用 PL_main_rootPL_main_start 指针,然后对它们调用 newPROG 来线程化操作树.

简而言之,它可以完成,但不能使用标准工具。您必须编写一些东西才能做到这一点,这需要对 Perl 的内部知识有一定的了解。

关于perl - 如何从 perlcc -B 反编译 perl 字节码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15083825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com