php反编译opcode,从HGAME的pyc逆向来看手撸opcode

一次pyc文件恢复

Python Pyc的文件格式[compile.h]

/* Bytecode object */

typedef struct {

PyObject_HEAD

int co_argcount; /* #arguments, except *args */

int co_nlocals; /* #local variables */

int co_stacksize; /* #entries needed for evaluation stack */

int co_flags; /* CO_..., see below */

PyObject *co_code; /* instruction opcodes */

PyObject *co_consts; /* list (constants used) */

PyObject *co_names; /* list of strings (names used) */

PyObject *co_varnames; /* tuple of strings (local variable names) */

PyObject *co_freevars; /* tuple of strings (free variable names) */

PyObject *co_cellvars; /* tuple of strings (cell variable names) */

/* The rest doesn't count for hash/cmp */

PyObject *co_filename; /* string (where it was loaded from) */

PyObject *co_name; /* string (name, for reference) */

int co_firstlineno; /* first source line number */

PyObject *co_lnotab; /* string (encoding addrlineno mapping) */

} PyCodeObject;

加载pyc co_codeIn [1]: import dis,marshal

In [2]: f=open('third.pyc')

In [3]: f.read(4)

Out[3]: '\x03\xf3\r\n'

In [4]: f.read(4)

Out[4]: '\xf1\xe1S\\'

In [5]: code = marshal.load(f)

In [6]: code.co_consts

Out[6]:

(-1,

None,

'+',

'/',

'FcjTCgD1EffEm2rPC3bTyL5Wu2bKBI9KAZrwFgrUygHN',

,

"Welcome to Processor's Python Classroom Part 3&4!\n",

'qi shi wo jiu shi lan cai ba liang dao ti fang zai yi qi.',

"Now let's start the origin of Python!\n",

'Plz Input Your Flag:\n',

2,

0,

1,

'',

"You're right! ",

"You're Wrong! ")

In [7]: code.co_varnames

Out[7]: ()

In [8]: code.co_names

Out[8]:

('string',

'list',

'letters',

'digits',

'dec',

'en

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows7及vista系统可用,但需要去掉UAC,或者用管理员权限运行主程序。 如无意外,黑刀Dezender 5.0 三套解密内核版 将会是最终版本,除非新的解密内核出现,否则今后也将不再更新,也请勿再加本人QQ咨询任何关于Zend解密的问题!感谢各位黑刀爱好者关注,敬请期待本人其他作品。谢谢! 反馈问题情况汇总: 1、有很多朋友说下载了最新版还是解不出来,是因为他们把程序放在了桌面上或者Program Files目录下。大家一定要记得,不要把黑刀Dezender的主程序以及需要解密的PHP文件放置在目录名包含空格的目录内,比如桌面、Program Files目录等,除了目录名不能包含空格以外,也不能包含英文的句号,以免程序将目录当做文件来处理,造成无法解密的情况。还有一种可能性,是因为被加密了的PHP文件采用了最新版的Zend来进行的加密,所以黑刀Dezender解不出来。 2、解密出来的文件有“乱码”:这种情况通常是因为PHP程序在加密时采用了混淆函数,而所使用的函数又是Dezender无法识别的,所以在函数的部分变成了“乱码”。目前唯一的解决办法只能是更新自己的混淆函数库来尝试解密,别无他法。 3、网友“李向阳”问:“我解开的文件能读,但是有很多很基本的语法问题。不知道是怎么回事!” 对于这个典型问题,我只能回答说,解密出来的文件不可能百分百还原为原始未加密的文件的。在遇到需要工去修复代码的情况时,就要求Dezender的使用者具备相应的PHP程序编写知识。如果不具备?自己找书找资料看。呵呵。 4、如果出现如下的错误提示:“无法判断程序输入点于动态链接库php5ts.dll上”说明dezender和原有的PHP环境冲突,可考虑卸载原有PHP环境,或安装虚拟机,在虚拟机上使用dezender。实在不行,换台电脑试试看吧。呵呵。虚拟机的下载地址:http://tmd.me/2008/read.php?5 重要声明:   黑刀Dezender本身只是个集成工具而已,主程序实际上只是用Delphi开发的GUI界面的外壳程序,核心的解密功能部分来自互联网上的收集整理,我所做的外壳编程,仅是在原有的各个解密内核版本Dezender的功能上,开发基于windows的用户界面,以便于使用者对原有类似“DOS”环境下的各种应用功能的Windows实现。   关于加密保护自己的PHP程序的问题:   类似微盾加密的、可以混淆函数和变量的加密方式,官方名字叫做“PHPlockit”,微盾的php加密专家也有类似的功能,但似乎会造成程序无法正确运行。目前在我没有开发新版的解密工具之前,据我所知除我之外能工解密“类微盾加密混淆函数及变量”的人并不多,大家可以试试。其他比较安全的加密方式比如Ioncube等也可以使用,只是国内支持该加密方式的虚拟主机不多,如果是独立服务器,可以考虑采用。   而Zend的混淆函数也是至今无法完全突破的问题,大家在开发自己的PHP程序时,可以采用较长的自定义函数名和变量名,这样Dezender就无法正确的识别出明文来了,就算解密掉程序本身,因为函数和变量都已经被混淆,自然也很难让程序正确运行了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值