Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1.  
  2.  
  3. // find and trace all methods declared in a Java Class
  4. var targetClass = 'org.awallet.ui.UnlockActivity';
  5.  
  6. Java.perform(function() {
  7. var hook = Java.use(targetClass);
  8. var methods = hook.class.getDeclaredMethods();
  9. hook.$dispose;
  10.  
  11. var parsedMethods = [];
  12. methods.forEach(function (method) {
  13. parsedMethods.push(method.toString().replace(targetClass + ".", "TOKEN").match(/\sTOKEN(.*)\(/)[1]);
  14. });
  15.  
  16. var targets = uniqBy(parsedMethods, JSON.stringify);
  17. targets.forEach(function (targetMethod) {
  18. traceMethod(targetClass + "." + targetMethod);
  19. });
  20. });
  21.  
  22.  
  23. // trace a specific Java Method
  24. function traceMethod(targetClassMethod) {
  25. var delim = targetClassMethod.lastIndexOf(".");
  26. if (delim === -1) return;
  27.  
  28. var targetClass = targetClassMethod.slice(0, delim);
  29. var targetMethod = targetClassMethod.slice(delim + 1, targetClassMethod.length);
  30.  
  31. var hook = Java.use(targetClass);
  32. var overloadCount = hook[targetMethod].overloads.length;
  33.  
  34. console.log("Tracing " + targetClassMethod + " [" + overloadCount + " overload(s)]");
  35.  
  36. for (var i = 0; i < overloadCount; i++) {
  37.  
  38. hook[targetMethod].overloads[i].implementation = function() {
  39. console.warn("\n*** entered " + targetClassMethod);
  40.  
  41. // print backtrace
  42. // Java.perform(function() {
  43. // var bt = Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new());
  44. // console.log("\nBacktrace:\n" + bt);
  45. // });
  46.  
  47. // print args
  48. if (arguments.length) console.log();
  49. for (var j = 0; j < arguments.length; j++) {
  50. console.log("arg[" + j + "]: " + arguments[j]);
  51. }
  52. // print retval
  53. var retval = this[targetMethod].apply(this, arguments); // rare crash (Frida bug?)
  54. console.log("\nretval: " + retval);
  55. console.warn("\n*** exiting " + targetClassMethod);
  56. return retval;
  57.  
  58. }
  59. }
  60. }
  61.  
  62. // remove duplicates from array
  63. function uniqBy(array, key) {
  64. var seen = {};
  65. return array.filter(function(item) {
  66. var k = key(item);
  67. return seen.hasOwnProperty(k) ? false : (seen[k] = true);
  68. });
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement