美文网首页
逆向学习之pyc分析

逆向学习之pyc分析

作者: 苏州暮雨 | 来源:发表于2017-12-09 19:25 被阅读0次

pyc是由.py文件经过编译后生成的字节码文件,其加载速度相对于之前的.py文件有所提高,而且还可以实现源码隐藏,以及一定程度上的反编译。比如,Python3.3编译生成的.pyc文件,Python3.4就别想着去运行啦!一般来说import 别的 py 文件时,那个 py 文件会被存一份 pyc 加速下次装载。

pyc反编译恢复到python代码,通过uncompyle6包就可以实现,在线的反编译工具也靠很方便,pyo文件也属于py编译的中间文件,所以也可以通过以上方式实现反编译,但是需要注意的是:有些时候需要满足后缀名是满足pyd,pyc,pyd的。但现在反编译得到的python的代码中一般不是完整的,或增加防护,或者有一些加密修改,又或者利用一些函数复杂嵌套,例如lambda函数的嵌套使用,使得python的代码变得比较难读。

lambda是一个匿名函数,表示一种运算,lambda [ arg1 [arg2, arg3, … argN] ] : expression

例如:

map(lambda x : x*x, [y for y in range(10)])

lambda后写的事函数变量x以及对x的操作,逗号之后表示x取值的方式。另外一种写法类似与如下表示,使用括号来分割各个部分:

map( (lambda (x)(x*x)) (list 2 3 4) )

还有类似与下图的式子,定义了一个参数为x的函数g,返回值是一个lambda函数,在lambda函数里,对x和y的大小进行比较并返回一个布尔值。使用((g  (2))3)就可以实现返回3与2比较的布尔结果。

嵌套lambda还可以写成(lambdaN:(lambdax:N>x))(2)(3)类似的函数,第一个2是N的表示,3是x。

lambda : [ (fout.write(sssss), (fout.close(), None)[1])[1] for None in [open('key.enc', 'wb+')] ][0]

上面的语句中使用for None in XXX,相当于fout=open('key.enc', 'wb+')。

(getattr(__old, '__ior__', (lambda other: NotImplemented))value

上面的语句则是使用getattr函数来实现或运算的函数功能。

另外在一些lambda函数中也可能使用数组来表示一个变量的名字对应使用变量的内容,如:

__l['data'][__l['i']]表示的是data[i]的值,其中__l是符号表的集合。编译过程中会将一些变量存在符号表中,通过符号表索引到对应的地址和值。__l['i'][0]就是对应的值。

但是这些还不够,尝试分析一下:((lambda x: x(x)),)((lambda y: (f,)((lambda : y(y)()))))函数是在干什么。。。。还是不会。

相关文章

  • 逆向学习之pyc分析

    pyc是由.py文件经过编译后生成的字节码文件,其加载速度相对于之前的.py文件有所提高,而且还可以实现源码隐藏,...

  • Python pyc格式解析

    这篇文章只是纯粹分析python pyc文件格式,主要是关于pyc在文件中的存储方式进行了解析。pyc是pytho...

  • iOS 语言三大特性

    封装 、 继承、多态OC学习篇之---类的三大特性(封装,继承,多态) - Android应用安全防护和逆向分析-...

  • iOS逆向:汇编初探

    前言 今天开始学习逆向(掉头发)啦! 在逆向开发中,非常重要的一个环节就是静态分析.首先我们是逆向iOS系统上面的...

  • iOS逆向之反HOOK的基本防护

    iOS逆向之Method Swizzle iOS逆向之fishHook原理探究 iOS逆向之fishHook怎么通...

  • iOS逆向学习

    参考文章:iOS逆向开发记录:iOS逆向之手机越狱iOS逆向之介绍iOS逆向之文件系统结构iOS逆向之文件权限及类...

  • Class - dump

    逆向原理 动态调试 通过界面调试Cycript\Xcode LLDB!静态分析 利用我们之前学习的汇编代码,分析三...

  • 《逆向工程》第一章 逆向工程简介

    1.3 逆向工程过程 1.3.1 系统分析: 分析文件系统 1.3.2 代码分析: 分析二进制文件 1.4 逆向工...

  • 逆向入门分析实战(四)

    9/14 文章共计1836个词 是逆向入门分析实战系列的第四篇 是逆向入门分析实战系列的第四篇 逆向入门分析实战(...

  • 逆向入门分析实战(三)

    之前两篇文章,针对恶意代码为了确保自身只有一个实例在运行进行了正向开发和逆向分析。逆向入门分析实战(一)、逆向分析...

网友评论

      本文标题:逆向学习之pyc分析

      本文链接:https://www.haomeiwen.com/subject/xgqpixtx.html