Frida dynamic instrumentation toolkit for hooking, bypassing, and analyzing mobile and desktop apps.
pip install frida-tools
frida-ls-devices
frida-ps -U
frida-ps -H 192.168.1.100
frida-server &
adb push frida-server /data/local/tmp/ && adb shell "chmod +x /data/local/tmp/frida-server && /data/local/tmp/frida-server &"
frida -U com.target.app -l hook.js
frida -U -f com.target.app -l hook.js --no-pause
frida -H 192.168.1.100 com.target.app -l hook.js
frida -U com.target.app
frida-trace -U -i "open" com.target.app
frida-trace -U -m "-[NSURLSession *]" com.target.app
Java.perform(function(){ var SSL = Java.use('com.android.org.conscrypt.TrustManagerImpl'); SSL.checkTrustedRecursive.overload('java.security.cert.X509Certificate[]','byte[]','java.lang.String','boolean','boolean','java.util.List').implementation = function(){ return Java.use('java.util.ArrayList').$new(); }; });
Java.perform(function(){ var RootCheck = Java.use('com.target.app.RootUtils'); RootCheck.isRooted.implementation = function(){ return false; }; });
Java.perform(function(){ Java.use('android.app.Activity').onResume.implementation = function(){ console.log('[+] onResume called'); this.onResume(); }; });
Interceptor.attach(Module.findExportByName('libc.so','open'), { onEnter: function(args){ console.log('open(): ' + Memory.readUtf8String(args[0])); } });
Java.perform(function(){ var obj = Java.use('com.target.app.Crypto'); obj.decrypt.implementation = function(data){ var result = this.decrypt(data); console.log('[DECRYPTED] ' + result); return result; }; });
objection -g com.target.app explore
android sslpinning disable
android root disable
android hooking list classes
android hooking list class_methods com.target.app.ClassName
android hooking watch class com.target.app.ClassName
memory dump all /tmp/memdump.bin