一例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大体思路都是这样,只能碰到问题花时间研究去解决,不能迷信通杀方案。
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取
读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)
同时每个成长路线对应的板块都有配套的视频提供:
大厂面试题
视频配套资料&国内外网安书籍、文档
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~
读者福利 |CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)
特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。
标签:xxxx,root,APP,解密,su,system,com,magisk From: https://blog.csdn.net/2401_84466229/article/details/139212241