app逆向-平头哥框架ratel使用

文章目录

    • 一、前言
    • 二、实现逻辑
      • 1、安装ratel手机端app
      • 2、使⽤电脑端进⾏感染目标app
      • 3、开发⼀个平头哥插件

一、前言

平头哥(ratel)是⼀个Android逆向分析⼯具套件,他提供⼀系列渐进式app逆向分析⼯具。同时平头哥也是⼀个app⼆次开发的沙箱环境,⽀持在免root环境下hook和重定义app功能。

项⽬地址: https://github.com/virjarRatel
在这里插入图片描述

二、实现逻辑

1、安装ratel手机端app

主要作用:可以方便查看app是否被感染成功

链接:https://pan.baidu.com/s/1eU2cEgW4pHOB08gcqDZDNQ 提取码:h7oo

安装效果图:
在这里插入图片描述

2、使⽤电脑端进⾏感染目标app

下载感染引擎:

链接:https://pan.baidu.com/s/13HqPPdqVL9LPrYFOHD-UBA 提取码:n3nj

⽬录结构

.
├── ratel.bat # windows上⽤来感染的脚本
├── ratel.sh # linux/mac 上⽤来感染的脚本
├── ratelConfig.properties
└── res
	├── build_timestamp.txt
	├── container-builder-repkg-2.0.0-SNAPSHOT-dex.jar
	├── container-builder-repkg-2.0.0-SNAPSHOT.jar
	├── hermes_bksv1_key
	├── hermes_key
	├── monthly_temp.txt
	└── ratel_version.txt

运⾏脚本进⾏感染

# liunx
./retal.sh 目标app的路径
# windows
./ratel.bat 目标app的路径

需要被感染的目标app下载

链接:https://pan.baidu.com/s/1412ZQWa4frCAeyM1tCiuKQ 提取码:c10k

运⾏完成之后, 会得到⼀个 com.example.myapplication_1.0_1_ratel.apk 这个就是感染好了的⽂件, 可以直接安装到⼿机, 确保之前的app已经被卸载了, 否则可能会安装失败, 如果是debug下并且开启了testOnly, 需要用 adb install -t xxx.apk 进⾏安装。

打开ratel查看是否感染成功
在这里插入图片描述

3、开发⼀个平头哥插件

新建⼀个普通的Android项⽬,用于插件的基本模板
在这里插入图片描述
添加相关依赖

android {
.............
    packagingOptions {
        exclude 'META-INF/INDEX.LIST'
        exclude 'META-INF/io.netty.versions.properties'
    }
}

第三方包

dependencies {

    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    // ratel核⼼api
    compileOnly 'com.virjar:ratel-api:1.3.6'
    // ratel的扩展api,他⼀般是给逆向破解和爬⾍业务使⽤,如果您只是基于ratel做⼀个插件,那么⼤多数情况
    api 'com.virjar:ratel-extersion:1.0.6'
    // sekiro项⽬,他可以提供⻓链接RPC功能
    api 'com.virjar:sekiro-api:1.0.3'
}

在Android清单⽂件 AndroidManifest.xml 添加如下内容

    <application
    	.........
        <meta-data android:name="xposedminversion" android:value="54"/>
        <meta-data android:name="xposedmodule" android:value="true"/>
        <meta-data android:name="xposeddescription" android:value="这个描述可以随便写, 会展示在插件列"/>
    </application>

创建assets文件夹,在assets文件夹下添加文本xposed_init , 内容为hook的⼊⼝类的完整路径, 如果有多个,分到多⾏去写。

com.example.plugintest.HookEntry

#  如果有多个插件,分到多⾏去写
com.example.plugintest.HookEntry01
com.example.plugintest.HookEntry02

编写hook类

package com.example.plugintest;

import com.virjar.ratel.api.rposed.IRposedHookLoadPackage;
import com.virjar.ratel.api.rposed.callbacks.RC_LoadPackage;

public class HookEntry implements IRposedHookLoadPackage {
    @Override
    public void handleLoadPackage(RC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        System.out.println("包名是什么:" + lpparam.packageName);
    }
}

将编写好的插件运⾏到app, 然后开启插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/399308.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0到1的私域流量体系搭建,私域操盘手的底层认知升级

一、教程描述 本套私域操盘手教程&#xff0c;大小4.31G&#xff0c;共有12个文件。 二、教程目录 01第一课、私域能力必修&#xff1a;私域大神熟记于心的高阶私域体系.mp4 02第二课、私域IP打造&#xff1a;那些忍不住靠近的私域IP如何打造的.mp4 03第三课、朋友圈经济&…

秦岭天台山隧道群荣获交通运输部科技示范工程,恒星科通群载波应急广播与无线调度系统产品应用其中

2023年9月12日&#xff0c;全国交通运输科技示范工程现场推进会在河南省平顶山市召开&#xff0c;会上为全国已通过验收的10项科技示范工程进行了授牌&#xff0c;其中由陕西交控集团负责实施的“秦岭天台山超长隧道群安全绿色科技示范工程”名列其中。 该科技示范工程为陕西省…

共享WiFi贴是什么,究竟安不安全?

在现代社会中&#xff0c;移动设备和互联网已经成为我们日常生活中不可或缺的一部分。为了方便我们的网络使用&#xff0c;越来越多的人选择使用公共WiFi&#xff0c;但是安全性成了很大的问题。而随着共享WiFi贴的出现&#xff0c;我们是否可以更加安全便捷地使用WiFi呢&#…

不会这个小技巧,你敢说你会零售营销?

新零售模式是随着科技的不断发展而崭露头角的商业模式之一&#xff0c;其核心理念在于将线上线下融合&#xff0c;通过智能技术提升购物体验和效率。 自动售货机作为新零售模式中的一种典型体现&#xff0c;通过数字化、自动化的手段&#xff0c;为消费者提供更为便捷、个性化的…

【C++】C++11下线程库

C11下线程库 1. thread类的简单介绍2.线程函数参数3.原子性操作库(atomic)4.mutex的种类5. RAII风格加锁解锁5.1Lock_guard5.2unique_lock 6.condition_variable 1. thread类的简单介绍 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;比如wi…

代码随想录算法训练营29期|day56 任务以及具体安排

第九章 动态规划part13 300.最长递增子序列 class Solution {public int lengthOfLIS(int[] nums) {int[] dp new int[nums.length];int res 0;Arrays.fill(dp, 1);for (int i 1; i < dp.length; i) {for (int j 0; j < i; j) {if (nums[i] > nums[j]) {dp[i] Ma…

【C语言】面试常考----- 内存函数memcpy和memmove的功能区别与模拟实现

1.memcpy 功能&#xff1a;把source指向的前num个字节内容拷贝到destination指向的位置去&#xff0c;可以拷贝任意类型的数据。 注&#xff1a;1.memcpy并不关心\0&#xff0c;毕竟传的也不一定是字符串&#xff0c;因此拷贝过程中遇到\0也不会停下来。 2.num的单位是字节&a…

正大国际期货:银行再掀“压岁钱”争夺战 儿童金融服务还有哪些发力空间

随着春节假期渐入尾声&#xff0c;如何打理过年期间累积的“小金库”成为家长和孩子共同关注的话题&#xff0c;不少银行瞄准这一需求针对压岁钱展开营销。2月20日&#xff0c;北京商报记者调查发现&#xff0c;多家银行通过推出专属存款产品或定制银行卡等方式吸引储户目光。 …

C# CAD交互界面-模态窗体与非模态窗体调用方式

运行环境Visual Studio 2022 c# cad2016 一、模态窗体调用方式&#xff1a; 当一个模态窗体打开时&#xff0c;它会阻塞主窗体的所有输入&#xff0c;直到关闭该模态窗体为止。例如&#xff0c;弹出一个对话框让用户必须完成某些操作后才能继续使用主程序。 [CommandMethod(&q…

击败.helper勒索病毒:恢复被加密的数据文件的方法

导言: 近年来&#xff0c;勒索病毒成为网络安全领域的一大威胁&#xff0c;其中.helper勒索病毒更是备受关注。该类型的勒索软件以其高效的加密算法&#xff0c;能够将用户的文件加密&#xff0c;迫使用户支付赎金才能解密数据。本文将介绍.helper勒索病毒的特点、恢复被加密数…

Howler.js:音频处理的轻量级解决方案

文章目录 Howler.js&#xff1a;音频处理的轻量级解决方案引言一、Howler.js简介1.1 特性概览 二、Howler.js基本使用使用详解2.1 创建一个Howl对象2.2 控制音频播放2.3 监听音频事件 三、进阶功能3.1 音频Sprites3.2 3D音频定位 四、微前端场景下的Howler.js Howler.js&#x…

51_蓝桥杯_独立按键

一 电路 注意&#xff1a;J5跳帽接到2~3引脚&#xff0c;使按键S4-S5四个按键的另外一端接地&#xff0c;从而成为4个独立按键。 二 独立按键工作原理 三 代码 代码1&#xff1a;按下S7点亮L1指示灯&#xff0c;松开按键&#xff0c;指示灯熄灭&#xff0c;按下S6点亮L2指示灯…

Java 绘图

一、坐标体系 二、快速入门&#xff08;画圆&#xff09; import javax.swing.*; import java.awt.*;SuppressWarnings({"all"}) public class DrawCircle extends JFrame { //JFrame 对应窗口,可以理解成是一个画框private MyPanel mp null; //定义一个面板pu…

Google的firebase简介

文章目录 firebase简介firebase的一些特点 firebase简介 Firebase是一项由Google提供的云服务&#xff0c;旨在帮助开发者构建高质量的应用程序。Firebase 提供了各种工具和服务&#xff0c;涵盖了应用开发的多个方面&#xff0c;包括实时数据库、认证、云存储、云函数、推送通…

stable diffusion官方版本复现

踩了一些坑&#xff0c;来记录下 环境 CentOS Linux release 7.5.1804 (Core) 服务器RTX 3090 复现流程 按照Stable Diffusion的readme下载模型权重、我下载的是stable-diffusion-v1-4 版本的 1 因为服务器没法上huggingface&#xff0c;所以得把权重下载到本地&#xff…

js中使用for in注意事项,key的类型为string类型

for in是一个非常实用的存在&#xff0c;既可以遍历数组&#xff0c;又可以遍历对象&#xff0c;所以我一般都是会用来遍历可迭代的数据&#xff0c;遍历数组和对象的时候&#xff0c;要注意使用万能遍历方式&#xff1a; const users [1, 3, 45, 6]// const users {// 1…

Unity3D中刚体、碰撞组件、物理组件的区别详解

前言 Unity3D提供了丰富的功能和组件&#xff0c;其中包括刚体、碰撞组件和物理组件。这些组件在游戏开发中起着非常重要的作用&#xff0c;能够让游戏世界更加真实和有趣。本文将详细介绍这三种组件的区别以及如何在Unity3D中实现它们。 对惹&#xff0c;这里有一个游戏开发…

【论文阅读|基于 YOLO 的红外小目标检测的逆向范例】

基于 YOLO 的红外小目标检测的逆向范例 摘要1 引言2 相关工作2.1 逆向推理2.2 物体检测方法 3 方法3.1 总体架构3.2 逆向标准的可微分积分 4 实验4.1 数据集和指标4.2 实验环境4.4 OL-NFA 为少样本环境带来稳健性 5 结论 论文题目&#xff1a; A Contrario Paradigm for YOLO-b…

用CSS3画一个三角形

<style> .up{width:0;height:0;border: 100px solid transparent;border-top: 100px solid red;/*红色*/ } .down{width:0;height:0;border: 100px solid transparent;border-bottom: 100px solid blue;/*蓝色*/ } .left{width:0;height:0;border: 100px solid transpare…

python coding with ChatGPT 打卡第21天| 二叉树:最近公共祖先

相关推荐 python coding with ChatGPT 打卡第12天| 二叉树&#xff1a;理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树&#xff1a;翻转…