初识Frida--Android逆向之Java层hook (二)

本文深入探讨了使用Frida进行Android应用Java层hook的实践,包括apk分析、hook点选择和JavaScript代码构造。通过hook getMac()、getKey方法,模拟验证过程,展示了如何获取和计算秘钥Key,以及如何调用showPremium获取答案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初识Frida–Android逆向之Java层hook (二)

今天继续一个新的示例,同样采用CTF作为例子,难度稍微加大了一点,如果对Frida基本的使用还不是很了解,建议先看看之前的文章初识Frida–Android逆向之Java层hook (一)

文章涉及到的知识点:

  • 怎么使用javascript实例化类并调用类方法
  • 怎么在”jscode”中增加自定义javascript方法
  • 怎么较为灵活的hook类方法

apk的安装与分析

示例下载:whyshouldIpay

下载apk后安装,一样还是先来看看是什么功能,这是一个比较简单的验证程序,简单的使用后,了解到PREMIUM CONETNT内容需要输入License验证后才能查看。那估计PREMIUM CONETNT按钮中的内容应该就是答案了吧。
这里写图片描述

流程分析

使用jadx将apk反编译出来,分析,在AndroidManifest.xml中找到了启动的Activity是LauncherActivity

这里写图片描述

找到其中验证的主要代码verifyClick,分析如下:

public void verifyClick(View v) {
    //第一个验证,将输入的Licese通过网络验证,但这个肯定是通不过的,这是一个可能需要绕过的点。
        try {
            InputStream in = new URL("http://broken.license.server.com/query?license=" + ((EditText) findViewById(R.id.text_license)).getText().toString()).openConnection().getInputStream();
            StringBuilder responseBuilder = new StringBuilder();
            byte[] b = new byte[0];
            while (in.read(b) > 0) {
                responseBuilder.append(b);
            }
            String response = responseBuilder.toString();
     //网络验证需要服务器返回 "LICENSEKEYOK",才能进行下一步
            if (response.equals("LICENSEKEYOK")) {
      //当网络验证成功后,生成激活秘钥,并写入到preferences文件中
                String activatedKey = new String(MainActivity.xor(getMac().getBytes(), response.getBytes()));
                Editor editor = getApplicationContext().getSharedPreferences("preferences", 0).edit();
                editor.putString("KEY", activatedKey);
                editor.commit();
      //这样便成功激活
                new Builder(this).setTitle((CharSequence) "Activation successful").setMessage((CharSequence) "Activation successful").setIcon(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值