一例APP绕过root检测解密

本文详细描述了如何通过Frida工具绕过APP的root检测,并揭示了数据包中的加密机制。作者展示了如何使用Python和FridaRPC调用功能来解密和加密数据,强调了在遇到此类问题时需要针对性地研究和解决。
摘要由CSDN通过智能技术生成

一例APP绕过root检测解密

前言

最近在分析一款app时遇见了root检测,数据包加密,花了时间简单研究了一下,记录下学习的过程。

抛出问题

打开app发现提示检测到设备为root设备,闪退。能看到提示,推测应该是java层的检测。

拖进jadx发现是加固的。

通过frida绕过检测

java层常见root检测大多是通过检测系统文件:一些路径下的su文件,一些root的app相关文件。

  "/data/local/bin/su",  
  "/data/local/su",  
  "/data/local/xbin/su",  
  "/dev/com.koushikdutta.superuser.daemon/",  
  "/sbin/su",  
  "/system/app/Superuser.apk",  
  "/system/bin/failsafe/su",  
  "/system/bin/su",  
  "/su/bin/su",  
  "/system/etc/init.d/99SuperSUDaemon",  
  "/system/sd/xbin/su",  
  "/system/xbin/busybox",  
  "/system/xbin/daemonsu",  
  "/system/xbin/su",  
  "/system/sbin/su",  
  "/vendor/bin/su",  
  "/cache/su",  
  "/data/su",  
  "/dev/su",  
  "/system/bin/.ext/su",  
  "/system/usr/we-need-root/su",  
  "/system/app/Kinguser.apk",  
  "/data/adb/magisk",  
  "/sbin/.magisk",  
  "/cache/.disable_magisk",  
  "/dev/.magisk.unblock",  
  "/cache/magisk.log",  
  "/data/adb/magisk.img",  
  "/data/adb/magisk.db",  
  "/data/adb/magisk_simple",  
  "/init.magisk.rc",  
  "/system/xbin/ku.sud"

检测一些root的app如magisk等。

  "com.noshufou.android.su",  
  "com.noshufou.android.su.elite",  
  "eu.chainfire.supersu",  
  "com.koushikdutta.superuser",  
  "com.thirdparty.superuser",  
  "com.yellowes.su",  
  "com.koushikdutta.rommanager",  
  "com.koushikdutta.rommanager.license",  
  "com.dimonvideo.luckypatcher",  
  "com.chelpus.lackypatch",  
  "com.ramdroid.appquarantine",  
  "com.ramdroid.appquarantinepro",  
  "com.topjohnwu.magisk",  
  "com.kingroot.kinguser",  
  "com.kingo.root",  
  "com.smedialink.oneclickroot",  
  "com.zhiqupk.root.global",  
  "com.alephzain.framaroot",  
  "com.android.vending.billing.InAppBillingService.COIN",  
  "com.android.vending.billing.InAppBillingService.LUCK",  
  "com.chelpus.luckypatcher",  
  "com.blackmartalpha",  
  "org.blackmart.market",  
  "com.allinone.free",  
  "com.repodroid.app",  
  "org.creeplays.hack",  
  "com.baseappfull.fwd",  
  "com.zmapp",  
  "com.dv.marketmod.installer",  
  "org.mobilism.android",  
  "com.android.wp.net.log",  
  "com.android.camera.update",  
  "cc.madkite.freedom",  
  "com.solohsu.android.edxp.manager",  
  "org.meowcat.edxposed.manager",  
  "com.xmodgame",  
  "com.cih.game_cih",  
  "com.charles.lpoqasert",  
  "catch_.me_.if_.you_.can_"

这里通过一些公开的脚本去绕过,直接可以绕过。

frida -U -f com.xxxx.xxxx -l anti_root.js --no-pause

此时不再闪退。

数据包测试

挂上代理进行测试抓包,发现存在参数加密。

还是需要脱壳进行分析。 这里已经绕过了root检测,没有frida检测,直接上frida-dexdump就行。

frida-dexdump -FU

分析后定位到类:com.xxxx.xxxx.utils.http.DESHelp 直接hook就行。

frida rpc

只是hook加解密还是用很多不方便的地方,有时候需要去主动调用对应的加解密函数。 这里可以用brida,或者是httpdecrypt等工具。
这里提供一个通过python frida交互,使用rpc来完成主动调用。
调用也很简单,只是代码写死在了js脚本中,所用使用rpc.exports开启RPC调用接口,后面使用python来调用。

 function htddecrypt(param,key){  
      var result;  
      Java.perform(function () {  
            
          var hclass = Java.use("com.xxxx.xxxx.utils.http.DESHelp");  
          var hexarry = hclass.parseHexStr2Byte(param);  
          param = byteToString(hexarry);  
          console.log("[*] Hooking ...");  
          result = hclass.decrypt(param, key);  
          //console.log(result);   
      });  
      return result;  
  }  
​  
  function htdencrypt(param,key){  
      var result;  
      var enc  
      Java.perform(function () {  
          var hclass = Java.use("com.xxxx.xxxx.utils.http.DESHelp");  
          console.log(param);  
          enc = hclass.encrypt(param, key);  
          //console.log(result);   
          var hexarry = stringToByte(enc);  
          result = hclass.parseByte2HexStr(hexarry);  
      });  
      return result;  
  }      
​  
  rpc.exports = {    
      rpcfunc: htdencrypt,  
      rpcfunc1: htddecrypt  
​  
  }

通过python中代码:

session = frida.get_usb_device().attach("com.xxxx.xxxx")     
script = frida_rpc(session)  
param = str(sys.argv[2])  
ret = script.exports.rpcfunc(param,"CCCk+H%b6.MMMMkoKKK")  
print(ret)   
​

总结

还是一个简单的例子,现在常规的app大体思路都是这样,只能碰到问题花时间研究去解决,不能迷信通杀方案。

ports.rpcfunc(param,“CCCk+H%b6.MMMMkoKKK”)
print(ret)

[外链图片转存中…(img-T7CKJSmf-1694134941329)]

总结

还是一个简单的例子,现在常规的app大体思路都是这样,只能碰到问题花时间研究去解决,不能迷信通杀方案。

学习计划安排


我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!

如果你对网络安全入门感兴趣,那么你需要的话可以

点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值