嘘~ 正在从服务器偷取页面 . . .

疑难记录贴


记录一些奇怪的问题 希望可以帮助到更多人

Xp模块Hook不同位异常

记录起因

  1. 因为自己开发了一个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)
  1. ???????? 没找到so 怎么可能 别的app都找得到 这个怎么找不到

分析原因

  1. 注意到上面 /lib/armeabi, /system/lib, /system_ext/lib
    • 怎么回事 这个app怎么只找32位的so
    • 就算这样也不对 我在app配置里面设置了 abiFilters "armeabi-v7a", "arm64-v8a" 应该会生成32位的so
  2. 打开目标appso一看 果然只有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
  • 重点 : 最终定位到是使用了LsposedNative Hook 然后看报错也没什么信息
    • 最终只要把native_init文件删了就进去了 也可以成功使用各种hook模块
  • 但我还是没办法分析检测点 可能以后还是会被检测
    • 该死的VMP

json解析问题

  • 今天在请求的时候 远程直接返回系统繁忙 因为这个站我是知道 如果请求中某个位置报错他是会直接提示的 那么系统繁忙就可以理解成远程服务器的全局异常捕获 说明传递的json有问题
  • 排查了好久 才发现是 None被我写成了"None"用文本对比工具也没有发现任何异常 因为不够细心 所以后面还是要注意一下

  • 顺带在这里提一嘴
    • Pythonjson是带空格的 而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
  • pycharmasyncio 会报错 提示找不到 但是可以正常运行代码
  • 并且没有代码提示 (十分致命)

解决

  • 安装以下包即可 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 研究了好久
    Charles显示
  • 但是在上面 可以看到是中文
    中文原码
  • 后面把CURL放到记事本里面 发现是GBK编码 一开始还以为是哪个JS加密了
  • client.post(url=url, data=urlencode(data, encoding='GBK'))
  • 需要用这种方式进行处理

文章作者: 林木木
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 林木木 !
评论