0. 使用到的apk:

链接:https://pan.baidu.com/s/1VPyRWW6TlaMYWL20La7frw?pwd=gzxv 
提取码:gzxv 
--来自百度网盘超级会员V2的分享

当选择五行时,会跳出会员界面。

1. 软件java层,smali分析

将软件拖到Jadx-gui, android killer。进入入口界面代码,可以看到如下代码。通过代码,可以看到基于GetVip()来判断。如果为真,就可以继续,为假就跳出付费购买的连接。

2. 下面使用xpose来修改getvip的返回值。

xposed 主要由三个项目来组成的:

  • Xposed:Xposed的C++ 部分,主要是用来替换 /system/bin/app_process,并为XposedBridge 提供 JNI方法。

  • XposedBridge:Xposed 提供的jar文件,app_process 启动过程中会加载该jar包,其他的 Modules 的开发都是基于 该jar包。

  • XposedInstaller:Xposed的安装包,提供对基于Xposed框架的Modules的管理。

xposed 目前已逐步支持 ART虚拟机,兼容 android 5.0 以上版本。

Xposed使用

在Android 4.0以上Android设备安装:

XposedInstaller

http://repo.xposed.info/module/de.robv.android.xposed.installer

Step 2.1 创建xposde模块,打开android studio,新建带empty activity的module

Step 2.2 下载xposebridgeapi模块,将下载的api拖进lib文件夹

这里如果没有按照2.3做设置,会报错 java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

GitHub - 924587628/XposedBridgeAPI可利用Xposed框架实现拦截系统方法. Contribute to 924587628/XposedBridgeAPI development by creating an account on GitHub.https://github.com/924587628/XposedBridgeAPI

Step 2.3  在Build.Gradle (module)文件中添加依赖包,然后sync

dependencies {compileOnly fileTree(dir: 'lib', include: ['*.jar'])implementation fileTree(dir: 'assets', include: ['*.*'])implementation 'androidx.appcompat:appcompat:1.4.2'implementation 'com.google.android.material:material:1.6.1'implementation 'androidx.constraintlayout:constraintlayout:2.1.4'testImplementation 'junit:junit:4.13.2'androidTestImplementation 'androidx.test.ext:junit:1.1.3'androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'}

Step 2.4: 在Module下的AndroidManifest.xml文件添加xposed相关meta标签,用于框架识别

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.example.hookapp1"><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.HookApp1"tools:targetApi="31"><!--模块申明,true表示申明为xposed模块--><meta-dataandroid:name="xposedmodule"android:value="true" /><!--模块说明,一般为模块的功能描述--><meta-dataandroid:name="xposeddescription"android:value="这个模块是用来劫持登录的" /><!--模块兼容版本--><meta-dataandroid:name="xposedminversion"android:value="54" /><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

Step 2.5 添加hook类,继承IXposedHookLoadPackage实现hook方法。

package com.example.hookapp1;import android.content.Context;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;public class Myhook implements IXposedHookLoadPackage {private static final String TAG;private Context hookContext = null;static {TAG = "XposeHook";}@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {Log.e(TAG, "Load app packageName:" + lpparam.packageName);Log.i(TAG, "开始hook com.meiyiming.gsname");if (lpparam.packageName.trim().equals("com.meiyiming.gsname")) {Log.i(TAG, "开始hook吧,先找到activity");XposedHelpers.findAndHookMethod("android.content.ContextWrapper", lpparam.classLoader, "getApplicationContext", new XC_MethodHook() {protected void afterHookedMethod(MethodHookParam param) {if (hookContext != null)return;hookContext = (Context) param.getResult();Log.i(TAG + "hookContext", hookContext.getPackageCodePath());}});Log.i(TAG, "开始hook吧,寻找activity结束");Log.i(TAG, "开始hook com.meiyiming.gsname.GlobalVar");XposedHelpers.findAndHookMethod(//填写目标方法所在的完整类名"com.meiyiming.gsname.GlobalVar",//默认classLoaderlpparam.classLoader,//目标方法"GetVip",//方法参数,有几个写几个//String.class,// 注意,要做到与目标方法参数对应,这里不能用Integer.class。//int.class,// Hook回调new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Exception {Log.i(TAG, "劫持开始");}protected void afterHookedMethod(MethodHookParam param) {param.setResult(true);Log.i(TAG, "劫持结束");}});}}}

Step 2.6 在app/main下面新建assets目录,添加xpose_init,内容是hook的类

然后在Step2.3中添加assert相关的代码,可以参考2.3.

Step 2.7 安装然后重启手机,可以看到破解效果,不会提示vip。

xpose使用教程 hook java层的代码 (一 公司取名.apk)相关推荐

  1. 安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )

    From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frid ...

  2. 安卓逆向高阶之frida hook java层

    文章目录 1. 初次hook Java 层函数 2. hook 修改函数返回值 3. hook调用静态函数和非静态函数 4. hook设置成员变量 5. hook内部类 6. hook 动态加载dex ...

  3. frida hook java层常用模板

    文章转载于 安卓逆向菜鸟修炼记(微信公众号),个人感觉很实用,记录下来方便回顾,想看原文的请移步公众号. 1.JAVA层HOOK普通方法 import frida, sysjscode =" ...

  4. frida的用法--Hook Java层类方法

    frida是一款方便并且易用的跨平台Hook工具,使用它不仅可以Hook Java写的应用程序,而且还可以Hook原生的应用程序. 1. 准备 frida分客户端环境和服务端环境.在客户端我们可以编写 ...

  5. 安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)

    1. 安卓程序动态调试条件 安卓程序动态调试条件 ( 2个满足1个即可 ): 1. 在 AndroidMainfest.xml ---> application 标签下,设置或者添加属性 and ...

  6. cocos2d-x 通过JNI实现c/c++和Android的java层函数互调 .

    转载请注明来自:Alex Zhou的程序世界,本文链接:http://codingnow.cn/cocos2d-x/992.html 本文主要实现两个功能: (1)通过Android sdk的API得 ...

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

    目录 初识Frida--Android逆向之Java层hook (二) apk的安装与分析 流程分析 hook点分析 JavaScript代码构造与执行 0x00 hook getMac() 0x01 ...

  8. 转载:使用 Frida 来 hook 加固的 Android 应用的 java 层

    Android 加固应用Hook方式 --- Frida:https://github.com/xiaokanghub/Android 转载:使用 frida 来 hook 加固的 Android 应 ...

  9. saf java_Android SAF实现外置SD卡的写入(JAVA层与JNI层hook)

    1. 前言 之前折腾了了一下MINE模拟器,发现SDL全是在JNI层fopen操作的,而安卓的SAF则是JAVA层通过DocumentFile和docUri来实现写入的.一种方法是通过去的File D ...

  10. saf java_Android SAF实现外置SD卡的写入JAVA层与JNI层hook

    JAVA层SAF核心代码 通过DocumentFile来实现写入,Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)发送请求docUri,然后onActivityResu ...

最新文章

  1. 集中化监控SQL Server数据库
  2. 逸鹏说道:漫漫人生路
  3. c语言for循环的第三句,for循环语句的用法
  4. EasyStack一天连中五单,OpenStack新拐点显现
  5. Linux 小知识翻译 - 「端口和端口号」
  6. 联想将在CES上展示LePad平板
  7. [html] html6即将到来,你最期待的是什么特性呢?
  8. Spring学习--实现 FactoryBean 接口在 Spring IOC 容器中配置 Bean
  9. FLASH AS3 TextField
  10. 类中的三个装饰器方法
  11. RAW数码照片处理器:SILKYPIX Developer 的功能介绍
  12. paip.手机ROOT过程总结
  13. css3动态渐变动画
  14. tabbaritem 图片太大解决方案
  15. 关于x86中为什么CS:IP里的0xffff左移四位是0xffff0
  16. Python pandas.DataFrame.tz_localize函数方法的使用
  17. LoadRunner的组成
  18. 揭秘肖特基二极管与电源流串联的反应
  19. 2022软件工程师薪资报告出炉!
  20. 树莓派4b主板特点_【树莓派4B主板使用总结】充电|功耗|接口|散热片_摘要频道_什么值得买...

热门文章

  1. 学习外挂 -------- 成长过程(经典推荐)
  2. 多层线性模型和面板数据模型笔记(待完善,持续更)
  3. C# panel控件实现鼠标滚轮滚动拖动滚动条
  4. eclipse安装教程|最详细eclipse安装 配置图文教程
  5. 【网络安全】黑客攻防与入侵检测(练习题)
  6. u盘中毒后文件夹被病毒隐藏
  7. 适合入门的linux教程,Linux入门记录系列教程,适合Linux初学者阅读
  8. 思科模拟器cisco模拟器
  9. 使用Python批量抓取单词发音
  10. Win10下如何清理优化C盘