-
pyc文件头部:
前4个字节:03f3 0d0a,表示python版本
5-8个字节:0e6b 905d,表示pyc文件修改时间
-
PyCodeObject对象二进制编译结果:
第9字节:63,TYPE_CODE字段,也就是字符c,值为99,即0x63,表示接下为是一个 PyCodeObject对象
-
PyCodeObject对象----全局参数:
然后4个字节是0x00 0000 00,code block的位置参数个数co_argument,这里是0;
再接着4个字节是0x00 0000 00, code block中的局部变量个数co_nlocals,这里是0;
再接着4个字节是0x01 0000 00, code block需要的栈空间co_stacksize,这里是1;
再接着4个字节是0x40 0000 00, co_flags,这里是64;
-
PyCodeObject对象----code block:
1个字节0x73为TYPE_CODE字段, 表示该字段为string格式;
4个字节0x1a00 0000表示code block段的数据部分占用0x1a个字节,即长度为26;
接下来26个字节6400 … 6402 0053为该TYPE_CODE字段(数据类型string)部分,也就是pyc文件中包含的字节码指令
-
再往下的逐个TYPE_CODE字段都是重复结构的,用来表示PyCodeObject对象中的一些其他参数
python逆向
python打包的.exe转为.pyc
pyc文件头部:前4个字节:03f3 0d0a,表示python版本5-8个字节:0e6b 905d,表示pyc文件修改时间PyCodeObject对象二进制编译结果:第9字节:63,TYPE_CODE字段,也就是字符c,值为99,即0x63,表示接下为是一个 PyCodeObject对象PyCodeObject对象----全局参数:然后4个字节是0x00 0000 00,code block的位置参数个数co_argument,这里是0;再接着4个字节是0x00 0000 00...
1.编译过程简介
python
是一种解释性的语言,其原理是将代码块按照需求边运行边翻译给机器执行。
python
运行原理就是首先把
python
源文件解释成pyc二进制文件,然后再将pyc文件交由
python
虚拟机直接运行。但是有时候我们在运行的过程中并没有pyc文件。通常在默认编译的情况下,只有被调用库文件会生成pyc文件保证代码重用,主文件不会生成pyc文件。我们可以通过使用-m参数生成pyc文件
2.
python
逆向
在这里我们不详述pyc文件格式。由于在pyc文件中对字节码做了处理。我们使用库对p
当解决复杂的
逆向
问题时,我们常使用radare2或IDA等成熟工具进行反汇编和调试。但有时也需要深入挖掘并了解它们是如何运作的。
编写一些反汇编脚本对于自动化某些流程非常有用,并且可以形成自己的
逆向
工具链。至少,这是我现在正在尝试的事情。
如标题所说的那样,你需要先安装
Python
3。如果你无法确定是否安装了
Python
3,可以运行如下命令:
其中capstone是...
上一篇文章《
Python
的运行机制--pyc文件浅析》中已经对
Python
的运行单元PyC
ode
Object结构体作了初步的了解,但是要真正理解
Python
的运行机制,
还要通过分析
Python
的
opc
ode
才行。
操作码(Operation C
ode
,
OPC
ode
):描述机器语言指令中,指定要执行某种操作的机器码。
OPC
ode
与指令的对应关系:
同类型的指令,
OPC
ode
不一定相同;
B8 01000000 mov eax,1
B8C7 mov eax,edi
OPC
ode
相同,
CSDN-Ada助手:
[GW-CTF2019] babyvm
remon535:
2020-12-16
0 2°:
2020-12-16
DengZidecsdn: