Android逆向破解-智慧光明
Android逆向破解-智慧光明(未完成)
1 | adb shell |
libzprotect.so
首先是initarray函数
主要做了一个SMC。动调来解决问题。
注意此时不能在解密区域开启断点,否则有bug
1 | __int64 D3D0D786AE477FCC5E10D934DBAB0D() |
JNI_Onload
这个函数核心只干了一件事:
注册函数com/nesun/stub/ZAP
1 | zprotect |
1 | jint JNI_OnLoad(JavaVM *vm, void *reserved) |
后面就按照顺序加载其他so了。
zprotect函数
首先得看在哪里调用了这个函数
1 | package com.nesun.stub; |
先执行attachBaseContext
然后onCreate
1 | void __fastcall A2C93A69228F4351900E87FA34778A(JNIEnv *env, jclass a2, __int64 context, int i, jobject obj) |
好像不全:
1 | void __fastcall zprotect(_JNIEnv *a1, __int64 a2, __int64 a3, int a4, void *a5) |
case 0
access_zprotect
读取临时文件夹.zprotect
1 | __int64 __fastcall access_zprotect(JNIEnv *a1) |
libso.zip
1 | __int64 __fastcall libso_zip(JNIEnv *a1, __int64 a2) |
case 1
access_original_apk
1 | void __fastcall access_original_apk(JNIEnv *a1, __int64 a2) |
1 | 读取/data/data/com.guangmingzmt.oem/.zprotect/1700634461748/dex/classes.dex |
A2844ABCC5F8851BD1169925B92A
1 | // positive sp value has been detected, the output may be wrong! |
加密操作1:
1 | file[0x215116:] 取~ |
F670C12AA317C3D
主要就是把解密后的dex用dlsym加载进内存。
1 | F670C12AA317C3D(apiLevel, file, size); |
1 | __int64 __fastcall F670C12AA317C3D(int a1, char *a2, unsigned __int64 a3) |
1 | // attributes: thunk |
1 | void *__fastcall AB4AC8D6A4349BFB6F11E2AF7D1E77E(const char *a1, __int64 a2, int a3) |
1 | mCookie = dalvik/system/DexFile |
RH_decryptAndLoadData
然后对整个original.apk的0x100进行解密
目的就是得到一个className
1 | // ---GPT_START--- |
1 | unsigned char aDataDataComGua[] = |
1 | com.banshenghuo.mobile.application.DoorduApplication |
case 2
D6ECE95C8FAF5DAE4403AE20BA
- 本文作者: Taardis
- 本文链接: https://taardisaa.github.io/2023/11/25/Android逆向破解-智慧光明/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!