android逆向01:修改apk的资源文件,smali插桩
前提:
有需求才有实现。
android逆向能干什么?去除游戏中的广告,跳过各种支付达到付费效果,人为干预简化游戏流程直奔主题,无限增加各种付费道具,等等;当然可以对自己的apk进行逆向的逆向进行加固,毕竟冰冻三尺并非一日之寒。
有个朋友让我暴力破解个apk,达到改头换面的目的,那我把之前学习的逆向相关的内容整理下,列出个demo来演示一下,记录下自己的学习历程。
这篇就先简单演示下替换字符串,图片,简单在smali文件中插入一个提示,没什么实用价值,只当演示。
操作工具:
jdk7 + ApkIDE + genymotion;
eclipse当场编译一个apk来供测试试用;
反编译这个生成的apk,对其smali源文件进行插桩,再回编测试;
apk破解形式
修改资源
换图片,字符串:(太简单,就不截图了,如有需要操作步骤截图,留言)
1.将apk文件改名为rar;解压找到要替换图片的目录,将准备好的同名文件扔进去覆盖一下;
2.然后再将含有新图片的rar文件后缀名改为apk;
3.用签名工具对其进行签名处理,当然此时的签名肯定不是正版软件的签名,可以用任意签名打包即可;
4.导入到模拟器中查看下资源替换是否已经成功;
修改业务逻辑
只有牵扯到具体业务逻辑的时候才需要修改smali源码;
为了显得高端一点,直接在实际项目中插入代码好了,不那么山寨。看图:
乍一看,挺高端的,其实就是加进去一段平常不怎么常见的dalvik指令,这段指令对应的java代码就是Toast.makeText().show();就这么简单;
dalvik指令集:
寄存器命名:
v1 v2 v3-----
p1 p2 p3-----
字节码:
V void 只能用于返回值类型
Z boolean 变量值只能是 真(true) 或 假(false)
B byte 字节型
S short 短整型
C char 字符型
I int 整数型
J long(64位) 长整型
F float 浮点型
D double(64位) 双精度浮点型
L java类类型package.name.ObjectName Lpackage/name/ObjectName;
[ 数组类型 [I表示一个整型一维数组,等于java中的int[]。注意多位数数组的维数最大为255个。[[I=int[][] [[[I=int[][][]
跳转指令:
if-eq 等于则跳转 ==
if-ne 不等于则跳转 !=
if-lt 小于则跳转<
if-ge 大于或等于则跳转>=
if-gt 大于则跳转 >
if-le 小于或等于则跳转<=
goto 无条件跳转
switch 分支跳转
返回0 实现跳转
Pswitch_0
。。。
。。。
。。。
Pswitch_1
。。。
。。。
。。。
Pswitch_2
。。。
。。。
。。。
方法调用:Invoke
数据定义指令 const const-string const/4(半字节) const/16()
const v1, 0x2(v1=2赋值)
constv1, “youren” (v1=”youren”赋值)
操作指令 move
movev1, v2(v2数据移动到v1中)
结语:
其实这就是smali语法的构成;多看就好,我也刚入门,慢慢来吧。
android逆向01:修改apk的资源文件,smali插桩相关推荐
- 【Android 逆向】函数拦截 ( ARM 架构下的插桩拦截 | 完整代码示例 )
文章目录 一.ARM 架构下的插桩拦截 二.完整代码示例 一.ARM 架构下的插桩拦截 ARM 架构下的跳转指令 : 下面的二进制数都是十六进制数 ; 323232 位指令 ; 04 F0 1F E5 ...
- 【Android 逆向】函数拦截 ( GOT 表拦截 与 插桩拦截 | 插桩拦截简介 | 插桩拦截涉及的 ARM 和 x86 中的跳转指令 )
文章目录 一.GOT 表拦截与插桩拦截 二.插桩拦截简介 三.插桩拦截涉及的 ARM 和 x86 中的跳转指令 一.GOT 表拦截与插桩拦截 函数拦截有 222 种方式 : 使用 GOT 表进行函数拦 ...
- 【笔记】cocos2dx xxtea逆向获取lua脚本和资源文件
参考链接: https://blog.csdn.net/cjbbdd/article/details/103583764 使用的一些注意点,链接中未提到的: 1.NDK版本: 使用的ndk版本为r9d ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )
文章目录 一.使用 IDA 分析要修改的内存特征 二.根据内存特征搜索修改点 三.修改进程内存 一.使用 IDA 分析要修改的内存特征 在前的博客 [Android 逆向]逆向修改游戏应用 ( 分析应 ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )
文章目录 一.Android 命令行中获取要调试的应用进程的 PID 二.进程注入调试进程内存的 so 库 一.Android 命令行中获取要调试的应用进程的 PID 前置博客 [Android 逆向 ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )
文章目录 一.运行环境搭建 Android 模拟器安装 二.拷贝 Android 平台可执行文件和动态库到 /data/system 目录下 一.运行环境搭建 Android 模拟器安装 使用低版本的 ...
- 《教我兄弟学Android逆向01 编写第一个Android程序》
前言 之所以准备写这一系列逆向的教程是因为有一些同学私信我说自己想学习Android逆向但是不知道怎么去学习 包括自己身边的一些计算机专业的同学 在大学里面老师讲的那些东西要么是自己不感兴趣 要么是自 ...
- android 颜色资源文件,android中colors.xml颜色设置资源文件的方法
1. 打开res目录下的values文件夹,双击打开colors.xml文件进行编辑 上代码 #008577 #00574B #D81B60 #ff0000 #0000ff 2. 在res目录下的la ...
- android 中color目录,android中colors.xml颜色设置资源文件的方法
1. 打开res目录下的values文件夹,双击打开colors.xml文件进行编辑 上代码 #008577 #00574B #D81B60 #ff0000 #0000ff 2. 在res目录下的la ...
最新文章
- 弄清指针-如何深入了解指针
- 用计算机模拟物理学,计算机模拟技术在医学物理学教学中的应用研究.pdf
- python字典get计数_Python内部是如何存储GC引用变量的计数的?
- 2.3、Android Studio使用Layout Editor设计UI
- Python--SQLite学习(10.29)
- c语言从源代码到可执行,从源代码到可执行文件
- 7.QT-Qt对象间的父子关系
- Spring 系统学习:Spring的事务管理---事务回顾
- Java编程:排序算法——冒泡排序
- 酒店客房卫生打扫步骤及重点
- 文献翻译:《弱监督学习实现3D人脸重建:从单张图片到图片集》(Accurate 3D Face Reconstruction with Weakly-Supervised Learning)
- 优秀java程序员必须具备的技术技能
- shader拖尾_拖尾效果 - LouisSong - 博客园
- 鸿蒙系统功能,华为HarmonyOS2.0系统功能都有哪些呢-华为鸿蒙系统HarmonyOS2.0功能介绍[图文]_咖绿茵手游站...
- VBS:基本输出函数
- 【Unity2D】关卡编辑好帮手——TileMap
- 抖音现在做的竞价推广都是怎么操作的?
- 《金文女神解说VB基础入门系列视频教程》300集 第一章笔记
- 2020年云计算面临哪些问题 如何加入云计算行业
- 学计算机大专需要买笔记本吗,上大学该买电脑吗?学长:买的时候以为是刚需,买了变成“鸡肋”...
热门文章
- 药一点医药软件供应商——医疗器械管理软件销售功能
- HTML5+CSS3+JS实现满屏下雪效果
- 《专业四》第一单元练习手册
- python pexpect_python pexpect总结
- javascript二维数组转置,如何使用JavaScript转置二维数组?
- 头像叠加android_Android自定义ViewGroup实现堆叠头像的点赞Layout
- Julia 语言初学笔记
- matlab 机器人工具箱6-一个例子
- 关于对最新HTML总结PPT讲稿的分享
- Visual Studio Installer卡在提取文件处并出现反复验证和下载文件的解决办法