xpose使用教程 hook java层的代码 (一 公司取名.apk)
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)相关推荐
- 安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )
From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frid ...
- 安卓逆向高阶之frida hook java层
文章目录 1. 初次hook Java 层函数 2. hook 修改函数返回值 3. hook调用静态函数和非静态函数 4. hook设置成员变量 5. hook内部类 6. hook 动态加载dex ...
- frida hook java层常用模板
文章转载于 安卓逆向菜鸟修炼记(微信公众号),个人感觉很实用,记录下来方便回顾,想看原文的请移步公众号. 1.JAVA层HOOK普通方法 import frida, sysjscode =" ...
- frida的用法--Hook Java层类方法
frida是一款方便并且易用的跨平台Hook工具,使用它不仅可以Hook Java写的应用程序,而且还可以Hook原生的应用程序. 1. 准备 frida分客户端环境和服务端环境.在客户端我们可以编写 ...
- 安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)
1. 安卓程序动态调试条件 安卓程序动态调试条件 ( 2个满足1个即可 ): 1. 在 AndroidMainfest.xml ---> application 标签下,设置或者添加属性 and ...
- cocos2d-x 通过JNI实现c/c++和Android的java层函数互调 .
转载请注明来自:Alex Zhou的程序世界,本文链接:http://codingnow.cn/cocos2d-x/992.html 本文主要实现两个功能: (1)通过Android sdk的API得 ...
- 初识Frida--Android逆向之Java层hook (二)
目录 初识Frida--Android逆向之Java层hook (二) apk的安装与分析 流程分析 hook点分析 JavaScript代码构造与执行 0x00 hook getMac() 0x01 ...
- 转载:使用 Frida 来 hook 加固的 Android 应用的 java 层
Android 加固应用Hook方式 --- Frida:https://github.com/xiaokanghub/Android 转载:使用 frida 来 hook 加固的 Android 应 ...
- saf java_Android SAF实现外置SD卡的写入(JAVA层与JNI层hook)
1. 前言 之前折腾了了一下MINE模拟器,发现SDL全是在JNI层fopen操作的,而安卓的SAF则是JAVA层通过DocumentFile和docUri来实现写入的.一种方法是通过去的File D ...
- saf java_Android SAF实现外置SD卡的写入JAVA层与JNI层hook
JAVA层SAF核心代码 通过DocumentFile来实现写入,Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)发送请求docUri,然后onActivityResu ...
最新文章
- 集中化监控SQL Server数据库
- 逸鹏说道:漫漫人生路
- c语言for循环的第三句,for循环语句的用法
- EasyStack一天连中五单,OpenStack新拐点显现
- Linux 小知识翻译 - 「端口和端口号」
- 联想将在CES上展示LePad平板
- [html] html6即将到来,你最期待的是什么特性呢?
- Spring学习--实现 FactoryBean 接口在 Spring IOC 容器中配置 Bean
- FLASH AS3 TextField
- 类中的三个装饰器方法
- RAW数码照片处理器:SILKYPIX Developer 的功能介绍
- paip.手机ROOT过程总结
- css3动态渐变动画
- tabbaritem 图片太大解决方案
- 关于x86中为什么CS:IP里的0xffff左移四位是0xffff0
- Python pandas.DataFrame.tz_localize函数方法的使用
- LoadRunner的组成
- 揭秘肖特基二极管与电源流串联的反应
- 2022软件工程师薪资报告出炉!
- 树莓派4b主板特点_【树莓派4B主板使用总结】充电|功耗|接口|散热片_摘要频道_什么值得买...