安卓逆向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()方法 ...
随机推荐
- docker给已存在的容器添加或修改端口映射
简述: 这几天研究了一下docker, 发现建立完一个容器后不能增加端口映射了,因为 docker run -p 有 -p 参数,但是 docker start 没有 -p 参数,让我很苦恼,无奈谷歌 ...
- 如何解决arthas-failed-to-bind-telnet-or-http-port问题
解决方法 一台机器启用多个微服务的时候可能出现 多个 arthas端口冲突.可以配置为随机端口,或者配置为 -1 12 #arthas.telnet-port=-1#arthas.http-port= ...
- 干货 | 如何快速实现 BitSail Connector?
简介 本文面向 BitSail 的 Connector 开发人员,通过开发者的角度全面的阐述开发一个完整 Connector 的全流程,快速上手 Connector 开发. 目录结构 首先开发者需要通 ...
- 填坑日志-云网络智慧课堂双网卡Mac地址读取错误的问题及解决
云网络智慧课堂的双网卡问题记录及解决方案 教师端 其实这里双网卡的问题一直没有解决,分为了两部分,一部分是教师端,一部分是学生端.症状类似,问题也类似,都是在设计之初因为硬件限制可能没有考虑到双网卡的 ...
- OpenJudge 1.8.11 图像旋转
11:图像旋转 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数. ...
- 【译】2022 年回顾:Web 性能有哪些新变化?
原文地址:https://www.debugbear.com/blog/2022-in-web-performance 若对文中提到的一些性能参数不太熟悉,可以参考我之前的一篇博文<性能参数和优 ...
- 结合商业项目深入理解Go知识点
这篇文章比较硬核,爆肝5千字,把之前整理的知识点都串起来了.建议先收藏,慢慢看. 前言 上一篇文章 #[Go WEB进阶实战]开源的电商前后台API系统 很受大家欢迎,有好多小伙伴私信我问题:&quo ...
- Flutter异常监控 - 壹 | 从Zone说起
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情 如果你正需要处理Flutter异常捕获,那么恭喜你,找对地了,这里从根源上给你准备了Flutter异常捕获 ...
- Windows下jdk安装与卸载-超详细的图文教程
jdk安装 下载jdk 由于现在主流就是jdk1.8,所以这里就下载jdk1.8进行演示.官方下载地址:https://www.oracle.com/java/technologies/downloa ...
- win10 WSL2问题解决“WslRegisterDistribution failed with error: 0x800701bc”
win10安装wsl过程报错信息如下: 造成该问题的原因是WSL版本由原来的WSL1升级到WSL2后,内核没有升级,前往微软WSL官网下载安装适用于 x64 计算机的最新 WSL2 Linux 内核更 ...