9.2 安卓逆向之—Frida持久化方案
9.2 安卓逆向之—Frida持久化方案
摘要:
做逆向有一个必不可少的工具是Frida,动态调试工具。 官网地址:https://frida.re。他是很多端同样的动态hook 技术,可以输出日志,动态调试,后边还会讲到怎么操作界面等。方便逆向第一步的开发。可以支持安卓,苹果,桌面应用。这次主要讲的是怎么发布Frida脚本,比如我写好了一个脚本,我怎么给客户使用,活着别人打包直接使用。
一,一般的Frida 脚本的运行方式:
在手机端运行 frida_server ,然后执行脚本 //frida -U --no-pause -f com.xx -l test.js
com.xx 是app identifier, test.js 是脚本。
二,现有的方案介绍:
定制room
刷机room,改配置等.
定制room, 或者各种方案,比较麻烦。
三, 我的方案
需要root 手机,但是可以直接打包app,就比较方便省事。
3.1 集成步骤
引入 fridainjector 库项目。比如在MainActivity 可以这样写。
public class MainActivity extends AppCompatActivity implements OnMessage {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
// build an instance of FridaInjector providing binaries for arm/arm64/x86/x86_64 as needed
// assets/frida-inject-12.8.2-android-arm64
FridaInjector fridaInjector = new FridaInjector.Builder(this)
.withArm64Injector("frida-inject-12.8.2-android-arm64")
.build();
// build an instance of FridaAgent
FridaAgent fridaAgent = new FridaAgent.Builder(this)
.withAgentFromAssets("agent.js")
.withOnMessage(this)
.build();
// register a custom interface
fridaAgent.registerInterface("activityInterface", Interfaces.ActivityInterface.class);
// inject whatsapp
fridaInjector.inject(fridaAgent, "com.suning.mobile.ebuy", true);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onMessage(String data) {
try {
JSONObject object = new JSONObject(data);
Log.e("FridaAndroidInject", "whatsapp pid: " + object.getString("pid"));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
onMesage 就是js 脚本发送过来的消息。
需要注意的事项:
1,有些js 方法可以不能执行。
2,日志很难打,最后onmess 多写信息。
下载地址
https://download.csdn.net/download/yijianxiangde100/86271926