【移动样本分析】某锁机软件的so脱壳与逆向分析

admin 2021年11月1日22:59:28评论162 views字数 1460阅读4分52秒阅读模式

作者坛账号:fnv1c


0x01 背景

高考完了,有时间水群吹牛逼了。碰巧某同学说自己平板被"锁机软件"锁了,只能通过输入动态码解锁。他提供了样本apk,说希望能逆出来动态码算法。虽然对安卓逆向非常陌生,但总比打一天游戏更有意义,于是开干。

免责声明:本文旨在与分享移动安全相关知识,相关内容已作脱敏处理。请勿用于非法用途。

0x02 前置知识和工具

本文主要是so层的脱壳逆向,几乎没有涉及java层的知识

预热篇:
前置知识:有手就行
工具:可以反编译ARM的IDA   

正篇:
前置知识:C++逆向经验,ELF相关的一点经验,frida基础使用
工具:ADB,frida,可以反编译ARM的IDA,xAnSo

0x03 预热篇

基础逆向发现java层通过调用JNI层函数verifyDevtoken(用户输入内容,null)来判断用户输入解锁码是否正确。
【移动样本分析】某锁机软件的so脱壳与逆向分析

找到对应的so,ida打开,肉眼可见验证函数。
【移动样本分析】某锁机软件的so脱壳与逆向分析

发现对a1进行了几次虚函数调用,然后和creatDevToken函数生成的动态码比对并返回结果。
根据函数signature可以看出a1为JNIEnv,根据JNIEnv虚表可知+676出为GetUTF8Char,即获取jstring的内容。
跟入creatDevToken逻辑比较清晰,但在最后发现一个古怪的函数调用DDD4();
【移动样本分析】某锁机软件的so脱壳与逆向分析

由逻辑判断此函数应该为substr,v15为计算完成的key,根据时间对key做substr再返回。

【移动样本分析】某锁机软件的so脱壳与逆向分析


0x04 正篇

发完key,他告诉我key解不了。他的应该是新版本软件,又来了个新版本样本。我人傻在那里,这就是买一赠一吗,爱了爱了。好在so名字没变,直接拖ida看,发现export炸了。。。
【移动样本分析】某锁机软件的so脱壳与逆向分析


【移动样本分析】某锁机软件的so脱壳与逆向分析
【移动样本分析】某锁机软件的so脱壳与逆向分析


【移动样本分析】某锁机软件的so脱壳与逆向分析


终于发现so库的名字和JNI函数名,但是由于加了动态soinfo强壳,只能在frida中获取库基址和函数地址,ida中看不到导出项目。看看maps有什么特点。
【移动样本分析】某锁机软件的so脱壳与逆向分析


验证函数居然不在so的映射范围内,而是在一个新的匿名段。四个匿名段有很典型的rx,rw,ro的权限分布,猜测是子母ELF壳,母so加载时解密真实ELF,并且装入内存。魔改soinfo使得子ELF的导出项对外可见。由于soinfo中库基址指向母ELF,直接将子母ELF一起dump到文件分析。
【移动样本分析】某锁机软件的so脱壳与逆向分析


【移动样本分析】某锁机软件的so脱壳与逆向分析


【移动样本分析】某锁机软件的so脱壳与逆向分析


ida这次可以读出函数的内容,但是无法创建函数,提示控制流错误。
【移动样本分析】某锁机软件的so脱壳与逆向分析


找到了key生成函数和关键跳,大概逻辑是生成key并和用户输入对比,对比完返回结果。
【移动样本分析】某锁机软件的so脱壳与逆向分析


自此可以观察到完整生成逻辑。
【移动样本分析】某锁机软件的so脱壳与逆向分析


【移动样本分析】某锁机软件的so脱壳与逆向分析


【移动样本分析】某锁机软件的so脱壳与逆向分析


看完全部逻辑就可以写keygen了,经过测试key正确。

【移动样本分析】某锁机软件的so脱壳与逆向分析
(为脱敏本文不附带新版本key生成过程伪代码,只记录脱壳和修复过程)


0x05 结语

脱壳逆向过程比想象中艰难恶心,但也给人一点启示。
要有终身学习的觉悟:在遇到so强壳时,因为没有安卓逆向经验,差点放弃。幸好狠下心花半个小时熟悉了下frida,追到输入的动态码后带来了继续下去的动力。如果因为从没做过安卓逆向就放弃学习,只停留在熟悉的领域,估计这辈子就和安卓逆向无缘了。
做软件不能本末倒置:当一个软件为了防破解而做的工作远大于软件内容本身时,就要仔细考虑是否需要引入这么复杂的防破解手段。对于某些用户必须使用的软件,砸着经费,版本迭代着,软件功能的风评却不改善,反而是于用户无用的加密手段越来越先进,何尝不是一种本末倒置,更给破解再二次倒卖的行为提供了滋生的温床。


--

www.52pojie.cn


--

pojie_52

本文始发于微信公众号(吾爱破解论坛):【移动样本分析】某锁机软件的so脱壳与逆向分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年11月1日22:59:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【移动样本分析】某锁机软件的so脱壳与逆向分析https://cn-sec.com/archives/421125.html

发表评论

匿名网友 填写信息