首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态修改点 | 修改动态库 | 重打包 )

文章目录 一、应用结构分析 二、定位动态库位置 三、定位动态修改点 四、修改动态库 五、重打包 一、应用结构分析 ---- 分析上一篇博客 【Android 逆向】逆向修改游戏应用 ( APK 解析工具..., 模拟器可以拿到 root 权限 , 并且权限管理没有真机那么严格 , 这里推荐删除 armeabi-v7a 架构的动态库 ; 此外 , 该应用检测出了 Unity3D 引擎 , 那么该应用的核心逻辑都在...Unity3D , 如果要修改应用 , 需要修改 U3D 对应的动态库文件 ; 二、定位动态库位置 ---- Unity3D 引擎对应的资源都在 apk\unpack\Game\assets...\bin\Data 目录下 , 动态资源都在 apk\unpack\Game\assets\bin\Data\Managed 目录 , 如果要修改程序的逻辑 , 都在 C# 代码编译的 dll 动态...; 本应用的相关逻辑是在 Assembly-CSharp.dll ; 三、定位动态修改点 ---- 使用 32 位的 IDA 打开上述 Assembly-CSharp.dll 文件 , 将下面红色矩形框

76020
您找到你想要的搜索结果了吗?
是的
没有找到

Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )

文章目录 一、 Android 工程修改包名流程 二、 修改 applicationId 三、 修改 package 包名 四、 AndroidManifest.xml 清单文件组件 五、 修改 R 资源引用...、修改 BuildConfig 引用 六、 修改 FileProvider 七、 博客资源 需要将一份工程源码编译出的应用 , 在同一手机上运行多个 , 这里不修改源码的包名 , 仅修改当前工程配置的包名...; 如果当前工程源码数量较多 , 几百个或几千个的量级 , 不推荐修改代码的实际包名 ; 刚移植了一个几千个源码文件的工程 , 记录下流程 ; 一、 Android 工程修改包名流程 ---- Android...R 资源引用、修改 BuildConfig 引用 ---- 包名修改后 , 对应生成的资源类 R , 编译配置类 BuildConfig 的包名也发生了相应的改变 ; 需要将 import...快捷键 , 也可以右键点击 src 目录 , 选择 " Replace in Path… " 选项 , 修改 R 资源引用 : 在 " Replace in Path " 对话框 , 搜索 “import

3.5K20

Android获取其他应用的assets资源

最近有这样一个需求:A应用在一定条件下出发某个逻辑后,需要从B应用获取一些资源(assets下的mp4视频、还有drawable下的一些图片用作背景),具体需求就不说啦哈哈,用一张图来表示应该更明白:...A和B应用其实是1对多的关系,不同的B应用需要从他们自己的地方获取到资源给A。...identifier = bContext.getResources().getIdentifier("bg", "drawable", bContext.getPackageName()); 但是assets资源就没有这么方便了...虽然通过context可以获取到对应的assetsManager,但是在操作assetsManager获取资源的时候就出现问题了:在assets获取资源一般都是通过文件或者流的方式,但是我在操作的时候直接抛出异常...,我在B应用实现了一个方法,去获取A中所需要的资源,然后通过反射调用这个方法,这种方式就可以拿到我想要的资源了,而且这种方法目前发现是万能方法哈哈。

1.8K60

动态代理原理及在 Android 应用

动态代理:程序运行前,代理类不存在,运行过程动态生成代理类。 3、为什么要使用动态代理?...$Proxy0 从日志可以看到代理类是 com.sun.proxy.$Proxy0,我们都知道动态代理是动态生成代理类对象,如果能看到动态生成的这个代理类,是不是能更好的理解动态代理的原理?...在 Android Studio 无法调用,所以这里是在 Intellij 写的 Demo 进行调用): System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles...五、动态代理在 Android 应用 1、Android 的跨进程通信中使用了动态代理 比如 Activity 的启动过程,其实就隐藏了远程代理的使用。...2、Retrofit create() 方法通过动态代理获取接口对象。 这些场景可能不够全面,大家可以在评论区补充,看到新的场景,我后续也会补充的。

2K10

Android 逆向】修改运行Android 进程的内存数据 ( Android 系统调试器进程内存流程 | 编译内存调试动态库以及调试程序 )

文章目录 一、Android 系统调试器进程内存流程 二、编译内存调试动态库以及调试程序 三、博客资源 一、Android 系统调试器进程内存流程 ---- 修改游戏运行的内存 , 游戏运行之后..., 游戏进程肯定有对应的内存空间 ; 使用 注入工具 将 一个 libnative.so 动态库 , 注入到游戏运行进程对应的内存 , 注入成功后 , 在运行内存中就存在了该 libnative.so...动态库 ; libnative.so 动态库的作用是 跨进程接收 外部 另外一个进程 cmd 的指令 , cmd 会告知 libnative.so 动态库 , 要搜索以及修改内存的细节 , 如要搜索什么特征的内存..., 以及修改指定内存地址的指定数据 ; 具体的工作流程 : 通过 IDA 内存分析工具找到要修改的代码特征 ; 使用 cmd 工具远程通知 注入到 被调试进程的 libnative.so 动态库 ;...libnative.so 动态库 搜索 代码特征 , 并返回内存地址 ; 使用 cmd 工具向 libnative.so 动态库 发送修改 指定内存 的指定 n 字节数据 ; 二、编译内存调试动态库以及调试程序

65810

Android 逆向】修改运行Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 datasystem )

文章目录 一、运行环境搭建 Android 模拟器安装 二、拷贝 Android 平台可执行文件和动态库到 /data/system 目录下 一、运行环境搭建 Android 模拟器安装 ---- 使用低版本的雷电模拟器调试应用...log=3 下载能下载的最老的版本 , 这个版本是 5.0 的 Android 系统 ; 雷电模拟器 3.75 版本下载地址 : https://d6a051ab2d3dbdc5cb99b5b1cd147de7...平台可执行文件和动态库到 /data/system 目录下 ---- 将上一篇博客 【Android 逆向】修改运行Android 进程的内存数据 ( Android 系统调试器进程内存流程...| 编译内存调试动态库以及调试程序 ) 编译的进程调试相关工具 , 拷贝到 Android 模拟器 ; 在 雷电模拟器 , 创建 /data/system/debug 目录 , 用于存放进程调试相关目录.../data/system/debug/cmd 路径 ; 注意 , 拷贝完成后 , 在 Android 模拟器 , 使用 chmod 777 /data/system/debug/cmd chmod

51310

Android 逆向】修改运行Android 进程的内存数据 ( Android 命令行获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )

文章目录 一、Android 命令行获取要调试的应用进程的 PID 二、进程注入调试进程内存的 so 库 一、Android 命令行获取要调试的应用进程的 PID ---- 前置博客 【Android...逆向】修改运行Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system ) 先安装 Android...模拟器 , 雷电模拟器 3.75 版本 ; 在模拟器安装要调试的应用后 , 直接运行 ; 执行 dumpsys activity top|grep pid 命令 , 查看当前正在运行的应用的进程号...PID 为 2328 ; 二、进程注入调试进程内存的 so 库 ---- 在 【Android 逆向】修改运行Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝...Android 平台可执行文件和动态库到 /data/system ) 博客 , 拷贝了 2 个文件到 /data/system/debug/ 目录下 , 先为两个文件赋予 777 权限 , 即所有的执行权限

65710

那些年Android黑科技②:欺骗的艺术

懵逼的我无法理解这个翻译叫“钩子”东西到底是什么鬼。 那么先说下hook到底是在干嘛。我们可以把hook当作代理模式或劫持来理解。...在一个方法的前或后动态插入一段我们的逻辑事情,甚至改变原本方法在执行前的参数,返回后的参数。总之可以hook任意java写的代码,修改替换apk内部的资源文件。...一摸索到现在到androidhook已知有两种。...比如修改系统电池图标、信号、按键交换位置等等,但是也有人用来做一些应用的破解等。我们先说下xposed原理。只有明白原理了才知道这个东西是怎么玩的。...4 欺骗系统之偷梁换柱 相信做过android的同学就算没有用过反射也听过。我们知道反射可以在不修改源代码的情况下对私有方法和成员变量调用或修改。同上一个章节讲到的hook技术一样。

73240

我又开发了一个非常好用的开源库,调试Android数据库有救了

其实做了Android开发这么多年,一直以来都有一个我认为非常不人性化的地方,就是开发人员没有办法简单直接地查看当前应用程序的数据库文件,这个问题导致Android数据库的开发与调试工作一直都比较困难...点击demo1.db,即可打开这个数据库文件,并将该数据库的所有罗列出来,如下图所示。 ?...当然这里列出的并不全部都是由我们自己创建的,比如android_metadata、sqlite_sequence这些就是自动生成的。但Glance并不会对此进行区分,而是会把它们全部罗列出来。...这里对表的数据进行加载使用了分页技术,所以即使你的中有上百万条数据,也会非常快速地加载出来。...接下来我想聊一聊Glance的限制,至少在目前第一个版本,这些限制是需要提醒大家的。 首先,Glance只提供对数据库进行查看的功能,并不提供修改和删除的功能。

56941

Android状态栏微技巧,带你真正理解沉浸式模式

先来分析一下叫错的原因吧,之所以很多人会叫错,是因为根本就不了解沉浸式是什么意思,然后就人云亦云跟着叫了。那么沉浸式到底是什么意思呢?...隐藏状态栏 一个Android应用程序的界面上其实是有很多系统元素的,观察下图: ? 可以看到,有状态栏、ActionBar、导航栏等。...比如说我现在新建了一个空项目,然后修改布局文件的代码,在里面加入一个ImageView,如下所示: <RelativeLayout xmlns:android="http://schemas.android.com...修改MainActivity的代码,如下所示: public class MainActivity extends AppCompatActivity { @Override protected...其实实现的原理都是一样的,隐藏导航栏也就是使用了不同的UI Flag而已,修改MainActivity的代码,如下所示: super.onCreate(savedInstanceState); setContentView

1.9K100

Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移拦截函数 | 通过在实际被调用的函数添加跳转代码实现函数拦截 )

文章目录 一、通过修改 GOT 全局偏移拦截函数 二、通过在实际被调用的函数添加跳转代码实现函数拦截 一、通过修改 GOT 全局偏移拦截函数 ---- 使用 GOT 全局偏移 拦截函数 , 只需要将...; 该方法存在弊端 , 如果使用 dlopen 函数打开动态库 , 可以直接拿到函数地址执行该函数 , 此时根本就不会向 GOT 存放函数地址 , 这样就拦截不到函数了 ; 参考之前的博客 【Android...逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入的 libbridge.so 动态的 load 函数地址 并 通过 远程调用 执行该函数 ), 使用 dlopen 函数直接加载...libbridge.so 动态库 , 然后调用 dlsym 函数 , 获取 libbridge.so 动态的 load 函数地址 , 根据该函数地址 , 可以直接调用函数 , 这样就完美的避开了...GOT 全局偏移 , 而执行函数 ; 因此 , 使用 GOT 拦截函数并不能保证 100% 成功 ; 二、通过在实际被调用的函数添加跳转代码实现函数拦截 ---- 在 实际的被调用的函数 ,

1.8K20

2014-10-31Android学习------菜单的处理(一)-----OptionsMenu

先看看这个应用程序是做了哪些操作: 1.创建菜单 我们需要用到菜单,那么必须要创建一个菜单,负责创建菜单的类就是当前的activity类 这个必须要清楚,不要老是怀疑到底是谁在调用 onCreateOptionsMenu...上面就是API提供的所有Menu的add()函数的说明情况 我们只需看一个方法到底是什么意思,其他的就基本都明白了: public abstract MenuItem add (int groupId...我们就知道哪些参数是需要我们定义的,主要就是两个: 菜单id号:便于我们好找到这个菜单,当用户点击了这个菜单,需要做事件处理 菜单描述文字:给用户看这个菜单的涵义,一般定义在Strings.xml资源文件...这样一来,我们回到当前的应用程序,就需要去定义这些参数了: id: protected final static int MENU_ADD = Menu.FIRST; protected...); // setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以 // android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的 menu.add(

33910

面试题丨android面试问题合集

5、其他漏洞:Android应用漏洞还包括资源泄露、无线网络漏洞、应用更新漏洞、数据存储漏洞、系统服务漏洞等。6、如何hook动态加载的dex?...;5、在项目中加入对资源的加密操作,以防止反编译和重新打包;6、添加动态加载机制,分拆代码,以防止被反编译和重新打包;7、在应用程序添加防止模拟器运行的机制,以防止程序被重新打包。...4.注册修改:被调试程序利用注册检测是否存在调试器,此时可以通过修改注册来绕过被调试程序的反调试检测。...GOThookGOT(Global Offset Table)是一个由ELF可执行文件动态链接器建立的,其中包含动态链接库的所有外部函数的地址,当程序调用外部函数时,会从GOT取得外部函数的地址...PLThookPLT(Procedure Linkage Table)是一个由ELF可执行文件动态链接器建立的,其中包含外部函数的入口,当程序调用外部函数时,会从PLT取得外部函数的入口,

1.7K54

学习Flutter之前,你先要了解这些

的 ViewGroup,这是一个无状态的小部件,什么意思呢,就是当你的页面部分不依赖于对象配置信息外的其他任何内容时,简而言之就是你的页面是静态页面时,就可以使用它。...3、资源文件 3.1、资源图片 在Android资源图片有很多种分辨率,Flutter 遵循像iOS这样简单的3种分辨率格式: 1x, 2x, and 3x,在根目录下创建一个 images 的文件夹...这是来自Android的onResume inactive - 应用程序处于非活动状态,并且未接收用户输入。...此事件在Android上未使用,仅适用于iOS paused - 应用程序当前对用户不可见,不响应用户输入,并在后台运行。...这是来自Android的onPause suspending - 该应用程序将暂时中止。

1.9K10

Android 安装包优化】Android 应用 7zr 可执行程序准备 ( Android Studio 导入可执行 7zr 程序 | 从 Assets 资源文件拷贝 7zr 到内置存储 )

文章目录 一、Android Studio 导入可执行 7zr 程序 二、从 Assets 资源文件拷贝 7zr 到内置存储空间 三、参考资料 一、Android Studio 导入可执行 7zr 程序...Android 平台执行的 7zr 可执行程序 ; 这是编译出的 4 种 CPU 架构的 7zr 可执行程序, 将编译出的整个 libs 目录 , 拷贝到 Android 应用的 assets...目录下 , 该项目 GitHub 地址 : https://github.com/han1202012/7-Zip 二、从 Assets 资源文件拷贝 7zr 到内置存储空间 ---- 将 Assets...setContentView(R.layout.activity_main) copy7zr() } /** * 将 7zr 文件拷贝到应用私有目录.../ndk/guides/application_mk 博客资源 : 源码 , 编译后的可执行文件, 在 7zip\p7zip_16.02\CPP\ANDROID\7zr\libs\ 目录下 ; 下载地址

48420

微信小程序修炼之路LV2—项目文件介绍篇

前言 这一篇继续工具介绍篇,在上一篇文章,我们通过微信开发者工具快速创建了一个小程序工程。那工程到底包含哪些内容,我们如何对其进行修改呢,看完这一篇将会了解到。...[1240] [1240] 如上图,我们发现,右边有一块区域,这是啥意思啊,什么pages,index,logs,utils完全看不懂啊,我们找到pages选择鼠标右键,然后点击在资源管理器显示,这时候发现他们就是当时我们创建项目...,所选的项目路径下的资源内容啊。...那这些到底是什么意思呢。 [1240] 目录结构 小程序包含整体程序app和各个页面的pages,回到资源管理上。我们可以看出文件结构如下图所示。...[1240] 文件介绍 必要文件 一个整体程序必须包含如下文件 文件 必需 作用 app.js 是 小程序逻辑 app.json 是 小程序公共配置 app.wxss 否 小程序公共样式 上面文件即是小程序必须存在且在根目录的几个文件

69460

盗版软件也疯狂之六耳猕猴显神通

Android 开发每个应用都有自己唯一的签名,为了辨别应用的真伪,我们来到正规的应用商店进行了下载,对其应用的签名信息和证书信息进行了比对,比对的结果如图1-1所示: ?...图2-1 软件源码结构 那么如此一个应用肯定不是一个连Activity类都没有的源码实现的,我们就猜想它的源码或许是动态下载或者本地资源文件进行加载的。...数据库文件,两个数据库相关的内容如图2-7和图2-8所示: ?...Android获取这些信息都有其流程和相应API,这里不过多说明,只是把相应代码作为示例列举。...图2-15 推广软件本地数据库数据展示 3 猕猴身世之谜 躲避安全软件病毒检测,做到动态加载dex,代码混淆和数据加密等多重技术为了推广应用和业务订购谋取暴利的到底是何方神圣呢?

64930

Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )

文章目录 一、从 Android 应用数据目录拷贝 SQlite3 数据库文件 二、使用 DB Browser 工具打开 SQlite3 数据库文件 一、从 Android 应用数据目录拷贝 SQlite3...数据库文件 ---- 进入 /data/data/com.qidian.QDReader/databases 目录 , 拷贝 2 个 sqlite3 数据库文件到 sd 卡 ; cp download.db.../sdcard/Pictures/ cp ywloginmta.db /sdcard/Pictures/ 将 SQlite 数据库文件拷贝到 Windows 文件系统 , 二、使用 DB Browser...工具打开 SQlite3 数据库文件 ---- 将数据块文件拖动到 DB Browser 工具 ; 数据库打开成功 ; 右键点击的第一个选项 , 选择浏览 ; 可以查看表的字段 ;

1.7K10
领券