安卓逆向HOOK 3.系类HOOK
package xphok; import java.lang.reflect.Method;
import java.security.MessageDigest;
import java.text.DateFormat.Field; import android.R.string;
import android.view.View;
import android.widget.EditText;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; public class xp implements IXposedHookLoadPackage{
///XP框架入口点
@Override
public void handleLoadPackage(LoadPackageParam pparam)
throws Throwable {
// TODO Auto-generated method stub if(pparam.packageName.equals("com.qianyu.zhuceji"))
{ XposedHelpers.findAndHookMethod(
"com.qianyu.zhuceji.MainActivity",
pparam.classLoader,
"checkSN",
String.class,
String.class,
new XC_MethodHook()
{ @Override
protected void beforeHookedMethod(MethodHookParam param)
throws Throwable {
super.beforeHookedMethod(param);
//XposedBridge.log("userName:"+param.args[0]);
//XposedBridge.log("修改器前激活码:"+param.args[1]); ///反射机制 ///1.获取类
Class<?> clazz=param.thisObject.getClass();
///获取字段
java.lang.reflect.Field sn=clazz.getDeclaredField("edit_sn");
//设置可见
sn.setAccessible(true);
EditText et_sn=(EditText)sn.get(param.thisObject);
String uesename=(String)param.args[0];
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.reset();
digest.update(uesename.getBytes());
//反射主动调用
///获取方法
Method method= clazz.getDeclaredMethod("toHexString", new Class[]{byte[].class,String.class});
///私有设置可见
method.setAccessible(true);
String hexstr=(String)method.invoke(param.thisObject, new Object[]{digest.digest(), ""});
///主动调用方法
// String hexstr=(String)XposedHelpers.callStaticMethod(
// param.thisObject.getClass(),///返回类
// "toHexString",
// new Object[]{digest.digest(),""});
XposedBridge.log("hexstr的属性::"+hexstr);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hexstr.length(); i += 2) {
sb.append(hexstr.charAt(i));
}
//param.args[0]="111111";
param.args[1]=sb.toString();
et_sn.setText(sb.toString());
///XposedBridge.log("参数1"+param.args[0]);
XposedBridge.log("正确激活码:"+param.args[1]);
}
@Override
protected void afterHookedMethod(MethodHookParam param)
throws Throwable {
super.afterHookedMethod(param);
XposedBridge.log("返回值"+param.getResult());
///param.setResult(true);
}
}
);
///匿名类 XposedHelpers.findAndHookMethod(
"com.qianyu.zhuceji.MainActivity$1",
pparam.classLoader,
"onClick",
View.class,
new XC_MethodHook()
{
@Override
protected void beforeHookedMethod(MethodHookParam param)
throws Throwable {
super.beforeHookedMethod(param);
View view=(View)param.args[0];
XposedBridge.log("参数1view"+view.getId()); }
}); } if(pparam.packageName.equals("com.wolong.resource"))
{
///hook所有类
XposedHelpers.findAndHookConstructor(
"com.yaotong.crackme.MainActivity",
pparam.classLoader,
int.class,
String.class,
new XC_MethodHook(){}
);
} }
}

笔记细节
https://www.52pojie.cn/thread-1719456-1-1.html
安卓逆向HOOK 3.系类HOOK的更多相关文章
- 20145307陈俊达_安卓逆向分析_Xposed的hook技术研究
20145307陈俊达_安卓逆向分析_Xposed的hook技术研究 引言 其实这份我早就想写了,xposed这个东西我在安卓SDK 4.4.4的时候就在玩了,root后安装架构,起初是为了实现一些屌 ...
- hook 9大类
HOOK技术主要分为两大类,一是内核层HOOK,一是用户层HOOK. 用户层HOOK也就是在ring3环境下hook kenerl32.dll.User3.dll.Gui32.dll.Advapi.d ...
- 安卓逆向之基于Xposed-ZjDroid脱壳
http://bbs.pediy.com/thread-218798.htm 前言 之前介绍了普通常见的反编译模式 但对于使用了 360加固 棒棒 爱加密 等等的加固应用就没办法了. 你会发现 ...
- Android C/C++层hook和java层hook原理以及比较
作者:Denny Qiao(乔喜铭),云智慧/架构师. 云智慧集团成立于2009年,是全栈智能业务运维解决方案服务商.经过多年自主研发,公司形成了从IT运维.电力运维到IoT运维的产业布局,覆盖ITO ...
- CTF的一道安卓逆向
前几天打CTF时遇到的一道安卓逆向,这里简单的写一下思路 首先用jadx打开apk文件,找到simplecheck处(文件名是simplecheck),可以看到基本逻辑就是通过函数a对输入的内容进行判 ...
- 安卓逆向(一)--Smali基础
安卓逆向(一)--Smali基础 标签(空格分隔): 安卓逆向 APK的组成 文件夹 作用 asset文件夹 资源目录1:asset和res都是资源目录但有所区别,见下面说明 lib文件夹 so库存放 ...
- 【转】安卓逆向(一)--Smali基础
转载自吾爱破解安卓逆向入门教程 APK的组成 文件夹 作用 asset文件夹 资源目录1:asset和res都是资源目录但有所区别,见下面说明 lib文件夹 so库存放位置,一般由NDK编译得到,常见 ...
- windows hook + pyhook3 + python win32api hook + C 键盘hook
安装pyhook3见:https://www.cnblogs.com/lqerio/p/12096710.html 使用见:https://www.cnblogs.com/lqerio/p/12106 ...
- java多线程系类:基础篇:06线程让步
本系类的知识点全部来源于http://www.cnblogs.com/skywang12345/p/3479243.html,我只是复制粘贴一下,特在此说明. 概要 本章,会对Thread中的线程让步 ...
- java多线程系类:基础篇:03Thread中的start()和run()的区别
这个系类的内容全部来源于http://www.cnblogs.com/skywang12345/p/3479024.html.特别在此声明!!! 概要 Thread类包含start()和run()方法 ...
随机推荐
- 基于Spring-AOP的自定义分片工具
作者:陈昌浩 1 背景 随着数据量的增长,发现系统在与其他系统交互时,批量接口会出现超时现象,发现原批量接口在实现时,没有做分片处理,当数据过大时或超过其他系统阈值时,就会出现错误.由于与其他系统交互 ...
- CAP 7.0 版本发布通告 - 支持延迟消息,性能炸了?
前言 今天,我们很高兴宣布 CAP 发布 7.0 版本正式版,我们在这个版本中带来了大批新特性以及对性能的优化和改进. 自从今年 1月份发布 6.0 版本以来,已经过去了快1年的时间.在过去的将近1年 ...
- 第2-4-8章 规则引擎Drools实战(1)-个人所得税计算器
目录 9. Drools实战 9.1 个人所得税计算器 9.1.1 名词解释 9.1.2 计算规则 9.1.2.1 新税制主要有哪些变化? 9.1.2.2 资较高人员本次个税较少,可能到年底扣税增加? ...
- ArcGIS 通过字段计算 设置顺序编码
地块编号="前缀" & left("0000",4-len( [FID]+1)) & ([FID] +1)
- 《Java口袋指南》-内容总结
Java口袋指南 一.语言 1.命名 类名:大驼峰 泛型:E标识集合元素 方法名:小驼峰 变量名:小写 包名:小写或下划线 2.词法元素/token 字符串压缩优化 ...
- 【实时数仓】Day06-数据可视化接口:接口介绍、Sugar大屏、成交金额、不同维度交易额(品牌、品类、商品spu)、分省的热力图 、新老顾客流量统计、字符云
一.数据可视化接口介绍 1.设计思路 后把轻度聚合的结果保存到 ClickHouse 中后,提供即时的查询.统计.分析 展现形式:用于数据分析的BI工具[商业智能(Business Intellige ...
- Linux 系统用户文件缺失造成“bash-4.2$”错误的解决办法
一.问题出现的原因 造成这个现象的原因是因为用户文件夹下的bash_logout.bash_profile和bashrc这三个隐藏文件缺失 二.问题复现 现在删除这三个文件 此时问题出现了 三.问题解 ...
- Qt开发:Windows 下进程间通信的可行桥梁:窗体消息SendMessage
Qt开发:Windows 下进程间通信的可行桥梁:窗体消息 注:窗体消息仅适用于有窗口的进程,如果没有窗口是无法收到窗体消息的(哪怕是隐形的都可以),比如Qt中如果需要使用WindowsMessage ...
- STM32标准库中GPIO_ReadInputData与GPIO_ReadInputDataBit的区别
GPIO_ReadInputData读的是GPIOx的整个IDR寄存器的数据,返回一个十六位数,对应IDR寄存器的十六位.反映GPIOx所有端口的电平状态,所以参数只用传入GPIOx. uint16_ ...
- 图书管理系统、聚合函数、分组查询、F与Q查询
目录 图书管理系统 1.表设计 2.首页搭建.展示 书籍的添加 书籍编辑 书籍删除 聚合函数 Max Min Sum Count Avg 分组查询 按照表分组 按照字段分组 F与Q查询 F查询 Q查询 ...