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. css属性样式整合

    font-size 字体大小 常用色值:#000 黑色:#fff 白色:#ccc.#333.#2f2f2f.#666.#ddd 灰色: rgb表示法:color:rgb(255,255,255); r ...

  2. github访问慢怎么办

    前言 访问github网速老不好?老掉线?下载贼慢?或许这篇笔记可以帮助你! Github访问慢的根本原因其实是CDN内容分发受到DNS污染,无法连接使用igithub的加速分发服务器,所以国内访问时 ...

  3. PyQt5程序打包出错Failed to execute script

    出现这种报错一般有两种可能: 1. 该被引入的资源你没有放到 exe 的相对路径 这种错误一般是你直接引入图片或者图标, 而没有放到 打包后的exe的相对路径 2. 加参数 假设 main.py 为程 ...

  4. uniCloud云开发入门以及对传统开发方式的思考

    事情缘由 作为选修了移动互联网应用的一员,老师讲的什么JS基础,还有ES6和uniapp,当然是没怎么听,因为是之前大二的时候都大概看过. 但是快到期末,老师讲了云开发,并且布置了与此相关的大作业,自 ...

  5. <十>关于菱形继承

    代码1 #include <iostream> using namespace std; class A{ public: A(int _a):ma(_a){ cout<<&q ...

  6. day15 Socket网络编程 & 反射

    day15 知识点浅记一下 ping 使用来icmp来检查网络是否连通,并没有记录路径.  tracert 使用icmp包记录并确定数据包访问目标所经过的路由,因此可以依据此命令判断故障发生的位置 n ...

  7. 【数据库】Postgresql/PG-编写函数实现字段对应加备注

    〇.资料链接 一.背景 构建分区表时,删除了表的字段备注信息 1.查询语句 select c.relname 表名, cast ( obj_description (relfilenode, 'pg_ ...

  8. 【大数据面试】【项目开发经验】Hadoop、Flume、Kafka、Hive、MySQL、Sqoop、Azkaban、Spark

    主要内容:框架层面的调优.业务经验 一.Hadoop 1.Hadoop基准测试(HDFS的读写性能.MapReduce的计算能力测试) (1)测试内容:文件上传下载的时间 (2)服务器有几个硬盘插槽 ...

  9. FP6397S5 高效、高频同步DC-DC降压变频器IC

    FP6397是一种高效.高频同步DC-DC降压变频器.100%占空比功能提供了低退出操作,延长了便携式系统的电池寿命. 内部同步开关提高了效率,并消除了对外部肖特基二极管的需要.在停机模式下,输入电源 ...

  10. 使用selenium爬取淘宝

    一.出现的问题 前段时间在使用selenium对淘宝进行模拟登陆的时候,输入完正好和密码,然后验证码无论如何都不能划过去.找了好久,原来是因为selenium在浏览器中运        行的时候会暴露 ...