第十三课、frida速成:参数调用返回值
objection定位
-
frida-ps -U |grep -i jun
-
cd .objection
-
mv objection.log objection0221.log
-
objection -g com.example.junior explore
-
android hooking list activities
-
android intent launch_activity com.example.junior.ClickActivity
-
android hooking list class_methods com.example.junior.util.Utils
查看类中的方法 -
-
android hooking watch class_method com.example.junior.util.Utils.dip2px --dump-args --dump-backtrace --dump-return
-
-
objection就分析到这里 然后frida启动修改参数返回值
frida代码分析修改参数返回值
function main(){
Java.perform(function(){//java code write here
console.log("hooking==>");
Java.use("com.example.junior.util.Utils").dip2px.implementation = function(context,float){
var result = this.dip2px(context,float);
console.log("context,float==>",context,float);
return result;
}
})
}
setImmediate(main)
-
frida -UF -l 230221.js
-
-
修改代码后 Ctrl + S 立即生效
-
-
加上智姐姐写的调用栈
-
console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
-
-
function main(){ Java.perform(function(){//java code write here console.log("hooking==>"); Java.use("com.example.junior.util.Utils").dip2px.implementation = function(context,float){ return null; } }) } setImmediate(main)
-
不执行 直接返回null
-
-
修改参数
-
hook的两个原则
- 离数据越近越好
- 离动作越近越好
-
android.widget.TextView; 是这个类中的函数
修改参数
function Screen(){
Java.perform(function(){
Java.use("android.widget.TextView").setText.overload('java.lang.CharSequence').implementation = function(txt){
var javaString = Java.use("java.lang.String")
var newstring = javaString.$new("demoli")
var res = this.setText(newstring)
console.log("res======>",res)
console.log("txt======>",txt)
console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
return res;
}
})
}