Replies: 6 comments 10 replies
|
本次教程仅为技术测试,对相关网站无恶意行为。 |
0 replies
|
python环境建议miniconda保平安... |
3 replies
|
看完以后感觉打包有点复杂...... |
2 replies
|
这个版本的src能出800或者860吗,打包太复杂了,还是unidbg+springboot开个接口方便一点 |
4 replies
|
可以考虑用venv,选对应的nuitka就行了.\venv\Scripts\nuitka,说实话没必要打包成单文件,反正运行的时候还要先解压再运行,这样缺啥复制什么也方便 |
1 reply
|
大佬libysp.so怎么调用有没思路指点一下? |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment


Uh oh!
There was an error while loading. Please reload this page.
调用 so
目的:调用从
GetVideo中提取的libCube.so和libiqiyi.so来计算vf参数抓包
由于请求是 http 的,很容易就能抓到如下请求:
注意
vf值,后续对比使用分析 apk
把 apk 拖入 jadx-gui-1.2.0-no-jre-win ,搜索关键字
/dash直接点进去看代码:
逻辑很清晰,就是用
IQiYiUtils.getVf计算vf值,继续进入:可以看到用到了
libCube.so和libiqiyi.so,使用 7Zip 等工具从 apk 中提取这两个文件备用。使用 ExAndroidNativeEmu 调用
跑官方 demo
直接下载整个项目
安装依赖,并尝试运行
example_jni.py,报错:根据官网的描述,keystone 需要 VC++ 运行库,那就安装一下:
https://www.microsoft.com/en-gb/download/details.aspx?id=40784
安装成功后再次运行,不报错了:
尝试调用
根据
example_jni.py容易写出以下脚本:运行后报错:
意思是没有找到调用地址,应该是这个 so 里没有
JNI_OnLoad的缘故。遂尝试其他调用方式。从
tests/test_native.py中找到另一种方式,尝试直接调用 JNI 函数Java_com_wuxianlin_so_IQiYiUtils_getVf,修改后的脚本如下:这次没报错,而且可以看到拿到了正确的结果:
Nuitka 打包 exe
为什么选择 Nuitka
ChatGPT 说:
安装 nuitka
打包之旅
在查看 nuitka 的帮助信息后,第一次尝试打包
第一次使用会下载编译器等等会比较慢,整体经过大概 5 分钟后,提示打包成功。可以在参数中指定的
dist目录看到输出文件:尝试运行,报错:
根据提示的文件猜想应该是 unicorn 库的问题,在 Python 安装目录下(
%LOCALAPPDATA%\Programs\Python\Python39\Lib\site-packages)找到这个文件:分析报错原因:
应该是缺了
unicorn.dll这个文件,修改打包参数将该文件打入:再次运行,依旧报错:
根据上诉步骤定位问题:
不难确认是
capstone库初始化报错,随即找到初始化位置:还是少一个
capstone.dll,那就再打入,继续测试:再次运行,依旧报错:
根据上诉步骤定位问题后发现少
keystone.dll,打入,继续测试:再次运行,还是报错:
秉承缺啥补啥的原则,打入
emu_cfg/default.json,继续测试:但是这次有点不同,打入
emu_cfg/default.json后依旧是一样的报错:根据报错信息定位:
看代码,作者只写了
config_path="emu_cfg/default.json"。在 python 中,只写文件名的话读取时会默认以当前工作目录作为起始目录寻找文件。程序会在当前工作目录寻找
emu_cfg/default.json文件,而我们的工作目录只有这些文件:虽然我们已经把
emu_cfg/default.json打包了,但其实打包后的 exe 在运行时会将所需资源文件解压到%temp%目录,而程序只会在当前工作目录寻找该文件,所以会找不到文件导致报错。此时有两种解决方案,要么把需要的文件放在 exe 旁边,要么就改代码,切换工作目录到 py 文件本身所在的目录(对应临时目录)。
对于我们这种场景,明显第二种方案会更好一些,不会产生不必要的临时文件。
修改
vf.py,令其在加载模拟器前切换工作目录到自解压目录,并在结束初始化后切换回原始工作目录:再次打包测试:
又遇到了新的错误:
将
vfs文件夹打入,再次测试:注意这里屏蔽了
vfs/data文件夹里的内容,里面大都是 apk 之类,没有什么用。再次运行 exe,得到了更多报错:
观察可知是缺了一些被依赖的
.so库,打入,再测试:再次运行 exe,这次运行一切正常~
不过打开
dist文件夹会发现自动生成了vfs文件夹只生成了一个
vfs/proc/self/maps文件。正常情况应该继续完善代码,修正相对目录引发的一系列问题,我这里图省事就直接魔改了
androidemu/vfs/file_system.py:这样就不会在 exe 所在文件夹生成
vfs了。整理
删减无用代码后,整理如下:
调用代码
打包命令
运行结果
All reactions