记录一些奇怪的问题 希望可以帮助到更多人
Xp模块Hook不同位异常
记录起因
- 因为自己开发了一个
Lsposed
模块可以通杀某密和某梆,然后就试各种app
- 直到遇到了
某行生活
一开始信心满满打开 直接一窜红色送给我
- 直到遇到了
ailed to load class com.ass.Assist.SuperHook
java.lang.Un*rror: LspModuleClassLoader[module=/d*/base.apk!/lib/armeabi, /system/lib, /system_ext/lib]]]] couldn't find "libassist.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1073)
????????
没找到so
怎么可能 别的app
都找得到 这个怎么找不到
分析原因
- 注意到上面
/lib/armeabi, /system/lib, /system_ext/lib
- 怎么回事 这个
app
怎么只找32
位的so
- 就算这样也不对 我在
app
配置里面设置了abiFilters "armeabi-v7a", "arm64-v8a"
应该会生成32
位的so
啊
- 怎么回事 这个
- 打开目标
app
的so
一看 果然只有armeabi-v7a
说明这个app
只编译了32
位的so
那也不应该找不到
解决
问题 1: 为什么会找不到
32位的so
因为我用的是
android studio
开发的模块 然后直接运行安装到手机 这样android studio
就会优化安装 只安装手机架构位数的so
xml
文件中修改android:extractNativeLibs="true"
到手机/data
目录可以看到只有64位的so
解决方式就是
build
之后进行安装
问题 2: 模块我忘记做适配 代码写死拿的
64
位的so
导致一些函数偏移量等异常
XP注入数字 - 壳 异常
- 今天重新尝试之前的数字壳,然后发现启动就崩溃了 艹
- 数字里面是
VMP
我也没那本事分析啊
- 数字里面是
- 然后发现一个问题 我别的模块可以进去 唯独这个注入了so的无法进入
- 然后各种分析 删模块
- 有没有可能是检测了
Dobby
有没有可能是检测bhook
- 有没有可能是检测了
- 然后各种分析 删模块
- 重点 : 最终定位到是使用了
Lsposed
的Native Hook
然后看报错也没什么信息- 最终只要把
native_init
文件删了就进去了 也可以成功使用各种hook
模块
- 最终只要把
- 但我还是没办法分析检测点 可能以后还是会被检测
- 该死的
VMP
- 该死的
json解析问题
- 今天在请求的时候 远程直接返回
系统繁忙
因为这个站我是知道 如果请求中某个位置报错他是会直接提示的 那么系统繁忙就可以理解成远程服务器的全局异常捕获 说明传递的json
有问题 - 排查了好久 才发现是
None
被我写成了"None"
用文本对比工具也没有发现任何异常 因为不够细心 所以后面还是要注意一下
- 顺带在这里提一嘴
Python
的json
是带空格的 而java
的序列号json
不带 之前因为这个卡了好久好久- 区别就是
{"1":"1"}
和{ "1":"1" }
Python 内存溢出
- Python 版本
3.8.9
- 在
FastApi
中增加playwright
后内存几秒增加1M
并且不进行释放 - 通过
tracemalloc
模块定位到Programs\Python\Python39\lib\json\decoder.py:353: size=344 KiB, count=932, average=377 B
- 执行 10 个小时左右内存达到
100%
进程被杀死
解决
- 检查了全局对象 发现并没有重复引用
- 然后更新了
Python
版本为3.9.13
之后 问题解决 内存虽然会高 但会自动回收
Pycharm 导包异常
- 在安装
redis
并且导包from redis import asyncio as redis_asyncio
- 在
pycharm
中asyncio
会报错 提示找不到 但是可以正常运行代码 - 并且没有代码提示 (十分致命)
解决
- 安装以下包即可
pip install types-redis
bytes 直接转图片对象
- 有时候网页上获取到的图片就是
bytes
或者base64
如果需要本地打开那又要保存再打开 Image.open(io.BytesIO( 图片bytes ))
通过这个语句可以直接把图片bytes
转为图片对象进行操作
svg 识别
- 今天遇到一个网站 他的数值都是用 svg 画出来的 接口响应的也都是
path d值
只能想办法用ocr
进行识别
import io
import ddddocr
from reportlab.graphics import renderPM
from svglib.svglib import svg2rlg
width = 68
height = 24
path_d = "M15.25 20.70L15.25 23.10L2.68 23.10L2.68 20.70L7.59 20.70L7.59 4.05L2.55 5.51L2.55 2.96L10.35 0.69L10.35"
svg_path = f'<svg width="{width}" height="{height}" xmlns="http://www.w3.org/2000/svg"><path d="{path_d}" stroke="#000"/></svg>'
drawing = svg2rlg(io.BytesIO(svg_path.encode('utf-8')))
img_bytes2 = renderPM.drawToString(drawing, fmt="PNG")
ocr = ddddocr.DdddOcr()
res = ocr.classification(img_bytes2)
print('识别出的: ' + res)
请求乱码 (GBK)
- 遇到一个网站 发送的中文变成乱码
- 复制
curl
也无法导入Apifox
研究了好久 - 但是在上面 可以看到是中文
- 后面把
CURL
放到记事本里面 发现是GBK
编码 一开始还以为是哪个JS
加密了 client.post(url=url, data=urlencode(data, encoding='GBK'))
- 需要用这种方式进行处理