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的更多相关文章

  1. 20145307陈俊达_安卓逆向分析_Xposed的hook技术研究

    20145307陈俊达_安卓逆向分析_Xposed的hook技术研究 引言 其实这份我早就想写了,xposed这个东西我在安卓SDK 4.4.4的时候就在玩了,root后安装架构,起初是为了实现一些屌 ...

  2. hook 9大类

    HOOK技术主要分为两大类,一是内核层HOOK,一是用户层HOOK. 用户层HOOK也就是在ring3环境下hook kenerl32.dll.User3.dll.Gui32.dll.Advapi.d ...

  3. 安卓逆向之基于Xposed-ZjDroid脱壳

    http://bbs.pediy.com/thread-218798.htm     前言 之前介绍了普通常见的反编译模式 但对于使用了 360加固 棒棒 爱加密 等等的加固应用就没办法了. 你会发现 ...

  4. Android C/C++层hook和java层hook原理以及比较

    作者:Denny Qiao(乔喜铭),云智慧/架构师. 云智慧集团成立于2009年,是全栈智能业务运维解决方案服务商.经过多年自主研发,公司形成了从IT运维.电力运维到IoT运维的产业布局,覆盖ITO ...

  5. CTF的一道安卓逆向

    前几天打CTF时遇到的一道安卓逆向,这里简单的写一下思路 首先用jadx打开apk文件,找到simplecheck处(文件名是simplecheck),可以看到基本逻辑就是通过函数a对输入的内容进行判 ...

  6. 安卓逆向(一)--Smali基础

    安卓逆向(一)--Smali基础 标签(空格分隔): 安卓逆向 APK的组成 文件夹 作用 asset文件夹 资源目录1:asset和res都是资源目录但有所区别,见下面说明 lib文件夹 so库存放 ...

  7. 【转】安卓逆向(一)--Smali基础

    转载自吾爱破解安卓逆向入门教程 APK的组成 文件夹 作用 asset文件夹 资源目录1:asset和res都是资源目录但有所区别,见下面说明 lib文件夹 so库存放位置,一般由NDK编译得到,常见 ...

  8. windows hook + pyhook3 + python win32api hook + C 键盘hook

    安装pyhook3见:https://www.cnblogs.com/lqerio/p/12096710.html 使用见:https://www.cnblogs.com/lqerio/p/12106 ...

  9. java多线程系类:基础篇:06线程让步

    本系类的知识点全部来源于http://www.cnblogs.com/skywang12345/p/3479243.html,我只是复制粘贴一下,特在此说明. 概要 本章,会对Thread中的线程让步 ...

  10. java多线程系类:基础篇:03Thread中的start()和run()的区别

    这个系类的内容全部来源于http://www.cnblogs.com/skywang12345/p/3479024.html.特别在此声明!!! 概要 Thread类包含start()和run()方法 ...

随机推荐

  1. 交叉编译GDB

    PC主机安装必要软件 sudo apt-get install bison flex expect-dev build-essential m4 autoconf automake texi2html ...

  2. .NET MAUI 安卓应用开发初体验

    一..NET MAUI开发环境搭建&安卓SDK和安卓模拟器安装提示网络连接失败问题解决 引言 本节目标是帮助第一次搭建.NET MAUI开发环境,在下载安卓SDK和安卓模拟器过程中一直提示网络 ...

  3. 图神经网络之预训练大模型结合:ERNIESage在链接预测任务应用

    1.ERNIESage运行实例介绍(1.8x版本) 本项目原链接:https://aistudio.baidu.com/aistudio/projectdetail/5097085?contribut ...

  4. Python-WebSpider

    (一)网路爬虫入门 1.0 爬虫是个啥 通过编写程序,模拟浏览器去上网,然后让其去互联网上抓取数据的过程 1.1 爬虫分类 通用爬虫 :抓取系统重要组成部分,抓取一整张页面的数据 聚焦爬虫:建立在通用 ...

  5. js day04 综合案例秒数计算

    <script>         //用户输入总秒数         let second = +prompt('请输入总秒数:')         //计算时分秒         fun ...

  6. 漫谈计算机网络:应用层 ----- 从DNS域名解析到WWW万维网再到P2P应用

    2022-12-04 18:31:01 纪念一下博主的<漫谈计算机网络>连载博客 浏览量破500了! 今天更新完结篇! 面试答不上?计网很枯燥? 听说你学习 计网 每次记了都会忘? 不妨抽 ...

  7. Java学习中实现的功能trick

    1.注册时,不用确认就可以知道用户名是否存在 技术:json+ajax 章节:javaweb->day22json&ajax 2.不常变化的导航栏.城市等信息存入数据库,通过redis做 ...

  8. 【Day01】Spring Cloud入门-架构演进、注册中心Nacos、负载均衡Ribbon、服务调用RestTemplate与OpenFeign

    〇.课程内容 课程规划 Day1 介绍及应用场景 Day2 组件介绍及 广度 Day3 设计思想.原理和源码 Day4 与容器化的容器(服务迁移.容器编排) 一.业务架构的演进 1.单体架构时代 缺陷 ...

  9. 万字干货|Synchronized关键字详解

    作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试.职业成长相关资料等更多精彩文章在公众号「小牛呼噜噜」 前言 大家好,我是呼噜噜,在之前的文章中 ...

  10. 模板层之标签 自定义过滤器及标签 模板的继承与导入 模型层之前期准备 ORM常用关键字

    目录 模板层之标签 if判断 for循环 自定义过滤器.标签及inclusion_tag(了解) 前期三步骤 自定义过滤器(最大只能接收两个参数) 自定义标签(参数没有限制) 自定义inclusion ...