Một vài đoạn script frida có thể giúp ích trong quá trình pentest android 😀
Để sử dụng, lưu script bên dưới vào 1 file .js, sau đó chạy lệnh
1 |
frida -U -f <package_name> -l script.js |
1. Set thuộc tính cho lớp
Code android Java
1 2 3 4 5 6 |
package com.sangcx.app; public class Cat { int age; String name; } |
Frida script
1 2 3 4 5 6 7 8 |
setTimeout(() => { Java.perform(function () { // sử dụng $new() để tạo một instance của lớp Cat let Cat = Java.use("com.sangcx.app.Cat").$new(); Cat.age.value = 1; Cat.name.value = "Tèo"; }); }, 100); |
2. Gọi phương thức static
Code android Java
1 2 3 4 5 6 7 |
package com.sangcx.app; public class Cat { public static void run() { // ... code } } |
Frida script
1 2 3 4 5 6 7 8 9 |
setTimeout(() => { Java.perform(function () { // ở đây không cần dùng $new vì phương thức static là một // phương thức thuộc về class, có thể gọi luôn mà không cần // tạo instance let Cat = Java.use("com.sangcx.app.Cat"); Cat.run() }); }, 100); |
3. Gọi phương thức không phải static
Code android Java
1 2 3 4 5 6 7 |
package com.sangcx.app; public class Cat { public void run() { // ... code } } |
Frida script
1 2 3 4 5 6 |
setTimeout(() => { Java.perform(function () { let Cat = Java.use("com.sangcx.app.Cat").$new(); Cat.run() }); }, 100); |
4. Hiển thị Activity, Fragment hiện tại
Giả sử bạn mở app android, nhưng không biết màn hình đang hiển thị được xử lý bởi code ở file nào trong source code, thì đoạn script sau sẽ hữu ích :D. Sau khi chạy app với script thì việc còn lại chỉ là vào màn hình đó, log sẽ hiển thị vị trí của code dạng:
<———— Current Activity: com.sangcx.TestActivity ————>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var Activity = Java.use("android.app.Activity"); var Fragment = Java.use("androidx.fragment.app.Fragment"); Activity.onResume.implementation = function () { this.onResume(); var currentActivity = this.getClass().getName(); console.log("<------------ Current Activity: ", currentActivity + " ------------>" ); }; Fragment.onResume.implementation = function () { this.onResume(); var currentFragment = this.getClass().getName(); console.log("<------------ Current Fragment: ", currentFragment + " ------------>" ); }; |
5. Hiển thị stacktrace
1 |
console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new())); |