当前位置:首页 > 谈天说地 > 正文内容

反编译工具_安卓so文件反编译工具

34资源网2022年05月31日 15:07371

python是一种解释型语言,但是与jascript这种纯脚本语言不同,python提供了一种编译成字节码运行的方法,编译之后就得到pyc文件,这点和ja编译成class文件再用jvm解释运行很类似,但是与ja不同的是,python编译字节码不是一个强制的操作,事实上,编译是一个自动的过程,一般不会在意它的存在。

编译成字节码可以节省加载模块的时间,提高效率。除了效率之外,字节码的形式也增加了反向工程的难度,可以保护源代码。这个只是一定程度上的保护,反编译还是可以的。

py pyc pyo pyd分别是什么文件

py: python脚本源文件。pyc: python源文件经过编译得到的字节码, 二进制文件。pyo: python脚本文件开启优化编译(-O)得到的字节码,二进制文件(python -O test.py)。pyd: python的动态链接库,Windows DLL文件。

编译py文件生成pyc

我们编写两个py脚本

mylib.py:包含一个函数,打印一行文字.

def keyFun():    print("keyFun is running")

main.py:程序运行入口,调用mylib种的keyFun函数

from mylib import keyFunif __name__ == "__main__":    keyFun()

编译所有文件,在脚本目录执行以下命令:

python -m compileall .

可以看到生成了相对应的两个pyc文件

此时执行main.cpython-38.pyc会提示找不到mylib模块,需要将文件名中的.cpython-38删掉.

反编译pyc

反编译pyc的工具很多,我用的是python3.8,这里介绍几种可以反编译python3.8的工具.

反编译网站: https://tool.lu/pyc/python-decompile3工具: https://github.com/rocky/python-decompile3Easy Python Decompiler: https://sourceforge.net/projects/easypythondecompiler/

本文作为演示,使用网站反编译mylib.py,可以看到下图反编译代码与实际代码一模一样.

反编译pyinstaller打包的exe文件

我们使用pyinstaller将main.py打包成exe文件

pyinstaller -F main.py

反编译pyinstaller打包的exe需要用到pyinstxtractor(https://github.com/extremecoders-re/pyinstxtractor).

将main.exe复制到pyinstxtractor文件夹,执行python pyinstxtractor.py main.exe

python pyinstxtractor.py main.exe

可以看到pyinstxtractor已经提示入口文件为main.pyc.我们反编译main.pyc就可以看到pyc引入可哪些模块,这个例子可以从反编译代码中看到引入了mylib模块,再接着反编译mylib.pyc就可以了.

Cython编译pyd文件

从上面的反编译pyc文件结果可以看出,pyc很容易就被反编译,无法保护我们的代码.这里我们介绍使用Cython将python文件编译成pyd文件的方法.

首先安装Cython(Anaconda自带Cython的话不需要安装)

pip install Cython

在mylib.py所在目录新建build_pyd.py文件

from distutils.core import setupfrom Cython.Build import cythonizesetup(    ext_modules = cythonize([        "mylib.py"    ]),)#1.执行 python build_pyd.py build_ext --inplace#2.再把.cp38-win_amd64删掉 python renamepyd_file.py

执行python build_pyd.py build_ext –inplace.将会为mylib.py生成对应的.c文件和.pyd文件

与上文提到的pyc文件无法直接执行一样,pyd文件也需要删除文件名中的.cp38-win_amd64.这样main.py才能找到对应的mylib.pyd.

import oslists = os.listdir("./")for item in lists:    try:        if ".cp38-win_amd64.pyd" in item:            # 重命名文件            fileName = item.replace("cp38-win_amd64.", "")            files = os.rename(item, fileName)    except Exception as e:        print(e)

执行main.py,此时main.py引用的是编译后的mylib.pyd.如果修改了mylib.py中的代码,需要删除pyd文件后调试,不然不会看到改动后的效果.

编译成pyd后再用pyinstaller打包

使用上文中的方法将python文件编译为pyd文件后,再用pynstaller打包,这时候我们反编译就只能看到pyd文件了,要想破解pyd文件就需要使用汇编级别的破解技术,如果你的代码需要别人这样去破解的话,那恭喜你了,哈哈.

需要注意的是,编译为pyd再用pyinstaller打包,可能会出现模块无法被打包进去的情况,这时候需要编辑spec文件,将mylib模块添加到hiddenimports中.

a = Analysis(['main.py'],             pathex=['E:\\\\playground\\\\decompiletest'],             binaries=[],             datas=[],             //这里引入mylib模块             hiddenimports=['mylib'],             hookspath=[],             runtime_hooks=[],             excludes=[],             win_no_prefer_redirects=False,             win_private_assemblies=False,             cipher=block_cipher,             noarchive=False)

更多pyinstaller的高级技巧可以看我之前的一篇文章pyinstaller打包python程序高级技巧

看完文章,还可以用支付宝扫描下面的二维码领取一个支付宝红包,目前可领1-88元不等

支付宝红包二维码

除了扫码可以领取之外,大家还可以(复制 720087999 打开✔支付宝✔去搜索, h`o`n.g.包哪里来,动动手指就能领)。

看下图所示是好多参与这次活动领取红包的朋友:

支付宝红包

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/16583.html

分享给朋友:

相关文章

李开复的经典语录32句
李开复的经典语录32句

李开复的经典语录32句分享:1、 一个人品不完善的人是不可能成为一个真正有所作为的人的。2、动表达自己对各种事物的看法和意见。3、一个一流的人与一个一般的人在一般问题上的表现可能一样,但是在一流问题上的表现则会有天壤之别。4、只有积极主动的...

微信公众号阅读量暴跌,是凉了吗?还是另有乾坤
微信公众号阅读量暴跌,是凉了吗?还是另有乾坤

这两年,不少媒体同行/KOL都陆续唱衰公众号,说公众号凉凉了,没人看了。用「已死」「危机」「没有未来」形容,而短视频才是最火爆的。这种情况在订阅号改版成信息流推荐后,情况更盛。在过去,经常会出现1000W+阅读的爆款文章,而现在一两个月才可...

联合国秘书长:新冠疫苗必须要成为全球公共产品
联合国秘书长:新冠疫苗必须要成为全球公共产品

当地时间3月11日,联合国启动“必须团结一致”(Only Together)公共宣传活动,呼吁新冠疫苗能够在联合国疫苗计划主导下,成为全球公共产品,向全球各地有需要的人提供。联合国秘书长古特雷斯在致辞中表示,新冠肺炎疫情引发了全球巨大的苦难...

疫情还是很严峻,最近去超市都要检测了
疫情还是很严峻,最近去超市都要检测了

疫情还是很严峻,最近去超市也要各种检测了,记得前不久我去超市还是比较宽松的,基本上没有专门的检测员,口罩也不用戴。最近可能是外省一些地区疫情比较严重了,所以温州这边现在检测也更加严格了,我最近去超市买东西都要各种检测,买个菜呀,买些零食吃的...

逍遥手机模拟器怎么用(逍遥安卓模拟器详细使用教程)
逍遥手机模拟器怎么用(逍遥安卓模拟器详细使用教程)

真正的5V5公平竞技对战,传承端游纯正体验。人气英雄,经典还原;公平竞技,实力至上;峡谷传说,掌心再现。策略、战术、意识、配合,在移动端重现峡谷战场乐趣。 为了庆祝大家期待已久的中国区开服,官方也带来了五大福利活动,用户可免费参与,并获...

闪客快跑2背景音乐(闪客快打andylaw的微博)
闪客快跑2背景音乐(闪客快打andylaw的微博)

《疯狂跑酷》是一款LowPoly(低多边形)画风的跑酷游戏,一场突如其来的大水淹没了城市,而你在游戏中扮演一名刚下班的男子,需要从被水淹没的城市中逃出生天。和常见的跑酷游戏不同,在本作中,跑酷的场景完全立体化,不再是固定一条直达终点的路线。...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。