-
-
[原创]某当网apk加固脱个so
-
3天前
1923
-
手生很久,纯粹为了练习,脱一下so而已
另外:顺便看看上海的工作机会,有老板认为合适的,可以私我
1 2 3 4 5 6 7 8 9 10 11 | 1040882146 @qq.com
语言: java / c
7 年framework经验: 不管任何项目,都是直接或者间接要对framework层进行调试,源码阅读分析
1. 擅长android系统framework以及三方app等兼容性问题的分析
2. 擅长安卓虚拟化技术,比如双开工具,有VMOS虚拟机的研发经验
3. 熟悉AMS, Input 模块
4. 擅长hook点分析,解决业务痛点
5. 移植linker实现GOT表hook(私人仓库)
6. 拥有SVC hook的经验,包括BPF的实现方案
7. 有逆向 / 调试经验, 会用jeb / IDA工具
8. 做过几款游戏的安全分析
|
下图是IDA打开的情况,可以看到JNI_OnLoad被加密了
还有其他的函数,基本都是加密的状态
整个segment给加密了,解密的地方肯定是init_array中的某个地方解密的,简单起见,这里不跟踪解密的流程了。
不用怀疑getPackageInfo这个点,也不要去想我为啥在这里下断点,也可能是经验之谈吧
1 2 3 4 | if (TextUtils.equals(calledMethod.getName(), "getPackageInfo" )) {
Debug.waitForDebugger();
Log.d( "whulzz" , "getPackageInfo called" );
}
|
下断点后的调用栈是这样的
这个调用栈很明显,getPackageInfo是被nativeLoad函数调过来的,也就是libDexHelper.so通过jni调用的
内存大小 74d1220000 - 74d10cf000 = 0x151000
执行脚本,就可以脱出来解密的内存了
用IDA打开,发现有点问题
Elf Header以及program header是正常的
dynamic节区不正常
dynamic节肯定是在so被Load完成后,被梆梆置为0了,memset(dynamic, 0, size)
因为静态so库的节肯定是正常的,不正常就无法加载so了,所以我手动将apk中的so库打开,将其dynamic节的数据拷贝了过去
这个是apk中so的dynamic节
拷贝到dump.so后,dump.so重新加载到IDA中,JNI_OnLoad等均已解密
JNI_OnLoad解密后
fileExists函数解密后
[2022冬季班]《安卓高级研修班(网课)》月薪两万班招生中~
最后于 3天前
被whulzz编辑
,原因:
文章来源: https://bbs.pediy.com/thread-274856.htm
如有侵权请联系:admin#unsafe.sh