【安全性测试】利用反编译查看对应activity的方法采用hook技术绑定劫持_入门
本次主要为了研究手机端的安全性而写的一篇文章,在基于自己对手机安全性的研究下,想到了这些工具之间的结合,当然这也算是第一次对手机安全研究勇敢地踏出一步,也不知道是否成功,还是准备撞南墙撞到底吧!
使用到的工具:dex2jar、jd-gui、夜神模拟器、adb、Android版eclipse 、xposed框架以及xposed的apk、测试使用到的apk
语言:Java
1.反编译过程:
将使用到的apk把后缀名改为压缩包的形式,例如:a.apk改为a.rar,然后解决压缩。取出 classes.dex文件。
将取出的classes.dex文件放到dex2jar.jar运行。

将编译出来的classes-dex2jar.jar放到gui即可打开查看源码。

当遇到反编译失败或者打开gui可能存在乱码时,建议下载最新版本。dex2jar下载地址:http://sourceforge.net/projects/dex2jar/files/ gui下载地址:http://jd.benow.ca/
注:apk反编译的具体操作步骤可参考 https://blog.csdn.net/s13383754499/article/details/78914592
2.夜神模拟器连接adb
打开夜神模拟器直至打开Android桌面,等待的时间有点长。夜神模拟器打开Android桌面之后,打开dos界面,开始连接夜神模拟器。

若遇到类似报错:unable to connect to :5555。可到夜神的.../nox/bin目录下,使用nox_adb连接。

成功之后,再重新使用adb以上的命令,完成连接。
注:若连接不上,需要设置为USB调试。设置-->开发者选项-->勾选USB调试。没有开发者选项时,点击关于手机/关于平板电脑,连续点击五次版本号,即可让开发者选项可视。
3.eclipse连接夜神模拟器,DDMS查看xml
通过adb连接了夜神模拟器之后,接着打开eclipse让夜神连接上来。
Window-->Show View-->Others,选择Devices

打开DDMS-File Exlorer-/data/data/测试apk的包名(DDMS可在Window-->Open Perspective-->Others,选择DDMS),找到相关xml可进行审阅。例如本次找到的xml有相关账号和密码。

4.编写hook代码
下载XposedBirdageApi.jar文件,然后将文件放置在新建的项目新建的目录下方。然后将XposedBirdageApi.jar添加到Libraries下。
修改AndroidManifest.xml,添加相关内容:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.xposedtest.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data android:name="xposedmodule" android:value="true" />
<meta-data android:name="xposeddescription" android:value="第5次执行hook测试" />
<meta-data android:name="xposedminversion" android:value="54" />
</application> </manifest>
<meta-data android:name="xposedmodule" android:value="true" />
<meta-data android:name="xposeddescription" android:value="第5次执行hook测试" />
<meta-data android:name="xposedminversion" android:value="54" /> 注意:value填写是XposedBirdageApi.jar的版本或写比XposedBirdageApi.ja版本更低也可。
在 assets添加xposed_init文件,文件填写 包名+class。(如:com.example.xposedtest.Main)
编写hook代码,代码详情如下
package com.example.xposedtest; import android.view.View;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
public class Main implements IXposedHookLoadPackage{ @Override
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
// TODO Auto-generated method stub
String activityname = "com.lkk.tyj.ui.login.LoginAndRegisterActivity";
String packname = "com.lkk.tyj.ep";
String fangfa = "onClick";
if (!lpparam.packageName.equals(packname)) return;
XposedBridge.log(lpparam.packageName);
// findAndHookMethod(hook方法的类名,classLoader,hook方法名,hook方法参数...,XC_MethodHook)
findAndHookMethod(activityname, lpparam.classLoader, fangfa,
View.class,
new XC_MethodHook(){
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
XposedBridge.log("开始劫持了~"); }
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
XposedBridge.log("结束劫持了~");
// XposedBridge.log("参数1 = " + param.args[0]);
// XposedBridge.log("参数2 = " + param.args[1]);
// XposedBridge.log("参数3 = " + param.args[2]);
} }
); } }
5.夜神安装xposed的apk
安装xposed的apk,可以用到 adb install -r apk文件,安装到夜神模拟器。打开xposed install-->框架-->点击安装/更新,可能会出现无限重启。重启之后,看到激活即代表框架安装成功。

6.安装hook到夜神
选择项目点击run as-->android application,安装成功之后,xposed install-->模块,选择勾选hook模块,然后重启即可。

注意:属于xposed模块,系统会自动识别。
然后运行目标APP,再打开xposed install-->日志 查看内容即可。
【安全性测试】利用反编译查看对应activity的方法采用hook技术绑定劫持_入门的更多相关文章
- VS反编译查看源码时,会把类实现的所有接口都直接显示
今天在看ArrayList,发现一个很有意思的问题.从VS里反编译看,ArrayList继承了ICollection. IEnumerable.IList和ICloneable,而IList又继承了I ...
- eclipse查看jdk源码,及反编译查看
jdk中的包: dt.jar是关于运行环境的类库,主要是swing的包 tools.jar是关于一些工具的类库 rt.jar包含了jdk的基础类库,也就是你在java doc里面看到的所有的类的cla ...
- Android:反编译查看源码
下载>>>>>>>>>>>>>>> 使用图形化反编译工具:Androidfby 打开Androidfby中的A ...
- APP安全之代码混淆防止反编译查看真实的头文件函数声明
现在有的公司对自己的爱屁屁(APP)安全上有重视,所以本篇讲一下代码混淆,即使别人反编译出来,也看不出来头文件的信息. 上菜: 1.首先安装class-dump,下载地址:http://steveny ...
- 【ILSpy反编译】C# 写的程序反编译查看是不是也太容易了点吧,太恐怖了。。。
最近由于要写一些界面的东西,写了几个月c#(之前一直做c/c++项目),发现c#写界面很方便,效果也不错,在这个过程中也听说c#程序可以很容易被反编译到,但一直也没时间去自己反编译去试着看看,心想就算 ...
- 利用反编译学习Android
自从2014年底到2015年中,全民创业的热潮就已经席卷全国了,一大批新的创业公司在北上广萌芽,也造成了大量的开发人员需求.扯远了,今天不谈创业潮,聊聊如何通过反编译学习Android.本文只是个人对 ...
- android反编译查看源码,apk解压后XML乱码解决
1:找了好几个软件都不能图形化的解决反编译,很不舒服,最后找了个还算顺手的,顺便保存下. 2:使用过程 <1> apk转jar apktoolkit工具 <2> 查看jar源码 ...
- 【synchronized锁】通过synchronized锁 反编译查看字节码指令分析synchronized关键字修饰方法与代码块的区别
前提: 首先要铺垫几个前置的知识: Java中的锁如sychronize锁是对象锁,Java对象头中具有标识位,当对象锁升级为重量级锁时,重量级锁的标识位会指向监视器monitor, 而每个Java对 ...
- 反编译查看printf()的方法
源代码: package test2; public class ExplorationJDKSource { /** * @param args */ public static void main ...
随机推荐
- Collections -- OrderedDict类
普通dict(字典)在插入的时候并不记住元素的顺序,迭代器会根据散列表(哈希表)中存储的顺序来生成的.而OrderedDict则会记录元素的顺序,并且在迭代器输出时,会按现在记录的顺序进行遍历. 例: ...
- mysql并发控制之快照读和当前读
上一篇简单的介绍了下MVCC(多版本并发控制)的原理,MVCC会对事物内操作的数据做多版本控制,从而实现并发环境下事物对数据写操作的阻塞不影响读操作的性能.而这个多版本控制的实现是由undo log来 ...
- 2018-2019 20165237网络对抗 Exp4 恶意代码分析
2018-2019 20165237网络对抗 Exp4 恶意代码分析 实验目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后 ...
- Android应用市场的帮助类
写了一个Android应用市场的帮助类,如下: public class MarketUtils { public static final String MARKET_DATA = "ma ...
- 如何获取AWS的Access Key ID 和 Secret Access Key (Unable to find credentials)
获取AWS的Access Key ID 和 Secret Access Key 是你可以访问AWS的依据,比如S3的“使用预签名 URL 上传对象”. 1.登录AWS控制台 2.在“AWS servi ...
- 先进过程控制之一:浅说APC
先进过程控制(APC)技术作为在生产装置级的信息化应用,在优化装置的控制水平和提高生产过程的管理水平的同时,还为企业创造了可观的经济效益. 1.什么是APC 先进过程控制,简称APC,并不是什么新概念 ...
- Android studio 常见错误修改
一,依赖冲突 All com.android.support libraries must use the exact same version specification (mixing versi ...
- 洛谷 P2330 [SCOI2005]繁忙的都市
题目链接 https://www.luogu.org/problemnew/show/P2330 题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市 ...
- OpenCV-Python-边缘检测
Canny边缘检测方法被誉为边缘检测的最优方法. import cv2 import numpy as np img = cv2.imread('handwriting.jpg', 0) edges ...
- 浅谈Python装饰器
一.概念 装饰器是Python语言中的高级语法.主要的功能是对一个函数.方法.或者类进行加工,作用是为已经存在的对象添加额外的功能,提升代码的可读性.装饰器是设计模式的一种,被用于有切面需求的场景,较 ...