Android学习第12天-----HOOK技术
来源:互联网 发布:rsc数据库 编辑:程序博客网 时间:2024/04/20 14:15
今天学习一下hook技术 先科普一下
Windows Hook
Windows操作系统是建立在事件驱动机制之上的,系统各部分之间的沟通也都是通过消息的相互传递而实现的。但在通常情况下,应用程序只能处理来自进程内部的消息或是从其他进程发过来的消息(借助进程间通信技术,如剪贴板,管道,邮槽等),如果需要对在进程外传递的消息进行拦截处理就必须采取一种称为HOOK的技术。钩子(Hook) 是Windows消息处理机制一的一个平台,应用程序可以在上面设置子程序以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程创建的。当消息到达后,在目标创窗口处理函数之前处理它,钩子的机制允许应用程序截获处理windows消息或者特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把他挂入系统。每当特定的消息发出,在没有到达目的窗口之前,钩子程序就先捕获这个消息,亦即钩子函数先获得控制权,这时钩子函数即可以加工处理该消息也可以不做休息继续传递该消息,还可以强制结束消息的传递。
想了解的可以先看一下链接
Windows Hook 技术简介
Hook 入门
Hook详解
Windows Hook
msdn.microsoft.com
这个很详细
下面看是Android Hook之旅
首先我采用的是Cydia框架 but … 一直都是各种错误 各种Google 看各种英文论坛但是还是不行 作为渣渣的我换了框架使用Xposed很快三分钟搞定了 上Github看教程吧
这里有一个对Xposed的分析很不错的 看看
Xpose源码剖析
最好的学习方式还是看官方地址如下
Development-tutorial
还有这个
吾爱破解
我们使用Xposed进行Hook也分为如下几个步骤:
首先要把api-53.jar,api-53-source.jar 两个文件放入app\libs目录,右键Add to library.(这还没完!注意!)
要把build.gradle下方新加上
repositories { jcenter();}
并把原有的dependencies块改成
dependencies { provided 'de.robv.android.xposed:api:53' provided 'de.robv.android.xposed:api:53:sources' }
- 在AndroidManifest.xml文件中配置插件名称与Api版本号
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.robv.android.xposed.mods.tutorial" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <meta-data android:name="xposedmodule" android:value="true" /> <meta-data android:name="xposeddescription" android:value="Xposed Hook log test" /> <meta-data android:name="xposedminversion" android:value="53" /> </application></manifest>
- 新建一个入口类并继承并实现IXposedHookLoadPackage接口
package de.robv.android.xposed.mods.tutorial;import de.robv.android.xposed.IXposedHookLoadPackage;import de.robv.android.xposed.XposedBridge;import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;public class Tutorial implements IXposedHookLoadPackage { public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable { XposedBridge.log("Loaded app: " + lpparam.packageName); }}
- 声明主入口路径
需要在assets文件夹中新建一个xposed_init的文件,并在其中声明主入口类。
在app\src\main\assets目录(没有就新建这个目录)下新建文件xposed_init
入口assets/xposed_init配置,声明需要加载到 XposedInstaller 的入口类: (完整类名:包名+类名)
这样官网提供的例子就能实现了
代码会在下面放出
可以看看这个帖子
http://www.52pojie.cn/thread-533120-1-1.html
0 0
- Android学习第12天-----HOOK技术
- Hook技术学习资源
- Android anti-hook技术
- Android安全:Hook技术
- Android Hook技术实践
- Android安全:Hook技术
- android Hook 技术剖析
- Android安全:Hook技术
- 浅谈android hook技术
- Android Hook技术实践
- Android安全:Hook技术
- 浅谈android hook技术
- Android Hook技术初探
- windows技术----HOOK技术学习
- Xposed hook技术学习笔记
- Android Art Hook 技术方案
- Android Art Hook 技术方案
- Android Art Hook 技术方案
- Struts2学习笔记三(异常处理、模型驱动和属性驱动、servlet接口、Preparable接口)
- iOS- 利用runtime,解决多次点击相同button,导致重复跳转的问题
- 5-31 笛卡尔树 (25分)
- mclk、aclk
- ubuntu管理启动项
- Android学习第12天-----HOOK技术
- 博客第一天
- 跑马灯式的选择元素方法
- Google Play Services Location:获得最近的已知位置
- poj 1275 Cashier Employment
- Android开发之webview和 js 互调
- webstorm2016.2简单激活方法
- maven私服上传jar文件
- scp 远程拷贝时软链接的处理方法