热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

fridahookjava函数_使用Frida来HookJava类中的构造函数(构造函数带重载),获取解密后的js脚本...

一个APP使用了Auto.js的加密脚本。我们的任务是将其加密脚本进行解密并dump出来。在https:www.52pojie.cnthread-1112407-1-1.html一

一个APP使用了Auto.js 的加密脚本。我们的任务是将其加密脚本进行解密并dump出来。在  https://www.52pojie.cn/thread-1112407-1-1.html 一文中,介绍了 Auto.js 脚本解密的过程,并使用了 Xposed 对解密后的脚本进行了提取。但当前所使用的手机并没有 Xposed , 只好通过 Frida 来自力更生进行提取。

话不多说,通过 jadx 找到该 APK 涉及脚本加解密的地址:

0ef03e8caf4cc3e630f803df0b6fc38a.png

如图所示,根据上面链接的内容来看,我们要对  com.stardust.autojs.script.StringScriptSource 类的 StringScriptSource(String str, String str2) 构造函数进行 hook 。

一般来讲,Frida Hook Java类中的方法,其注入的 JS 脚本是这样的:

//Java.Perform 表示 Frida 将会从这里开始执行Javascript脚本。

Java.perform(function() {//定义一个变量ClassName,Java.use 后面指定想要Hook的类SecondActivity

var ClassName=Java.use('com.example.SecondActivity');//hook该类下的myFunc1方法,implementation 表示重新实现它

MainActivity.myFunc1.implementation = function() {

send("Hook Start...");//调用SecondActivity类中的 calc()方法,获取返回值

var returnValue = this.calc();

}

});

然而由图可知,我要hook的是构造函数,而且有两个 str 参数,还有重载,所以并不能按上面的这么写。在参考了关于Frida Hook Java 的资料  https://www.jianshu.com/p/f98aca8f3c05 和 https://www.freebuf.com/articles/system/190565.html 后,解决了 “  带两个参数,重载,string参数 ” 这三个问题。 代码如下:

//把 data 的内容 写入到 full_path 这一文件中

functionwrite_file(full_path, data) {var f = new File(full_path, 'w')

f.write(data)

f.close()

}

Java.perform(function() {var ClassName = Java.use('com.stardust.autojs.script.StringScriptSource');

console.log("Find ClassName Successfully!");//定位类成功!

ClassName.$init.overload("java.lang.String","java.lang.String").implementation=function(param_1,param_2){

send("Hook Start...");//send(param_1);//第一个参数是待解密的文件名,字符串“main.js”

//send(param_2);//第二个参数是解密后的代码(一大堆字符代码)

write_file("/storage/emulated/0/main_dump.js", param_2)var ret = this.$init(param_1,param_2);returnret;

}

});

3d22b2cafc9e28f8e8c3dfffc69061f7.png

代码完成了,我们将其注入到目标app中吧。需要注意的是,代码仅在程序刚启动的时候注入,所以在程序启动后注入是没有用处的。要在程序启动之前就安排好,

采取以下方式:

frida -U -l D:/myhook.js -f com.example.script --no-pause

(其中-f 即spwan,在程序最先启动的时候注入。--no-pause是不暂停。具体解释见本博:https://www.cnblogs.com/codex/p/12728908.html)

然后就可以在手机内部存储的根目录找到dump出来的文件了。



推荐阅读
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
author-avatar
条条大路种西瓜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有