Perl - 源代码的操作码?

标签 perl opcode reversing

如果我有操作码,有没有办法创建 perl 源代码?

例如

perl -MO=Concise -e "print 123"

将输出操作码:
6  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
5     <@> print vK ->6
3        <0> pushmark s ->4
4        <$> const[IV 123] s ->5

我想以某种方式扭转这一点。

最佳答案

如果“拥有操作码”,您的意思是“拥有操作码树”

虽然 B::Concise 试图给出操作码树的准确表示,但 B::Deparse 获取操作码树并从中生成源代码。

$ perl -MO=Deparse -e'$x && print'
print $_ if $x;
-e syntax OK

这很好,虽然有一些限制。

如果通过“拥有操作码”,您的意思是“拥有 B::Concise 的输出”

鉴于 B::Concise 试图非常完整,这可能是可能的,但我认为缺少一些信息。我很确定没有任何东西试图在 CPAN 上做到这一点,因为我从来没有听说过会破坏它(你会期望经常发生的事情)。

关于Perl - 源代码的操作码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27629176/

相关文章:

java - dup 和 dup_x2 之间的区别

c# - 编译器使用经典交换对我的字符串反向方法进行了哪些优化?

c - 试图反转给定的单词

assembly - 各种 MOV 操作码之间有什么区别?

assembly - 带有字节目标的 mov 指令立即到内存

linux - 如何在Linux上打开端口以运行应用程序

regex - perl - 如何使用 RegEx 获取所有相似的匹配子字符串

Perl:从 'system' 命令捕获正确的返回值

xml - 无法在@INC 中找到 XML/DOM.pm(您可能需要安装 XML::DOM 模块)

Perl qr//操作