本帖最后由 wintop 于 2022-7-24 03:19 编辑
软件就不提了,涉及商业信息。本人初级菜鸟,教程可能有些地方说的不对,大佬手下留情!
突破很坎坷,省去了一些因为设备问题的步骤(建议直接上模拟器,不要真机调试)。
环境:
雷电模拟器3.122 root+xposed+buildprop Enhancer(用于全局 debuggable 修改,否则软件无法调试)
MT管理器
jeb3 beta
DBBrowserForSQLite_V3.12.2
某APP,下面称MAPP
软件基本情况
用MT管理器查看无加固,签名V1+V2。
AndroidManifest.xml 中的 android:debuggable="false" ,改成true 签名后软件无法正常运行,点关键服务会直接闪退。
说明有反调试。查阅资料,在 .so文件鼓捣了几个小时,未发现有用的地方(IDA 太太菜)。
突破过程
XPOSED 装 buildprop Enhancer 全局修改 debuggable =1
验证方式:进终端,输入su 回车,然后 输入 getprop ,如果 ro.debuggable=1 则开启成功。
然后就是MT分析代码,发现[Asm] 纯文本查看 复制代码 .method public static isDebug(Context)Z
修改函数结果返回值 为 false,然后,调试正常。
接下来就是找sqlite 数据库相关信息,查找到 [Asm] 纯文本查看 复制代码 SQLiteDatabase.openDatabase(v0_2, v1, v3, v2);
下断点,jeb的变量监控比较菜,监控的变量默认都是int数据类型,需要手工修改为string 类型,分析出 v1为数据库密码,但是遗憾的是,用navicte for sqlite 无法打开。
百度了一些sqlite 管理工具也是无果,浪费了整整半天时间,以为断点位置错了。
后来发现资料提示:sqlcipher 版本必须一致才能解密。于是mt中找到 public static final String SQLCIPHER_ANDROID_VERSION = "4.2.0";
皇天不负有心人,终于找到可以打开数据库的软件,DBBrowserForSQLite_V3.12.2(DB Browser for SQLCipher)。
暂时记录这些,因为数据库密码是通过RSA加密回传,且又跟ID一些参数有关,现在处理数据库只能调试获取,希望下一步能分析出算法来,直接打开数据库。
今天更新,回来花了6个小时搞定了加密方式(用了3中加密方式,包含RSA),已经可以通过自动化程序代替手工点击生成数据。
|