开发者社区> 韩曙亮> 正文

【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★(二)

简介: 【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★(二)
+关注继续查看

配置完成后 , 右键点击 解决方案 , 选择 " 仅用于项目 / 仅生成 magic " 选项 ,


image.png

命令行输出如下内容 , 说明编译完成 ;


1>------ 已启动生成: 项目: magic, 配置: Debug Win32 ------
1>[x86] Compile        : bridge <= bridge.c
1>[x86] SharedLibrary  : libbridge.so
1>[x86] Install        : libbridge.so => libs/x86/libbridge.so
1>[x86] Compile++      : cmd <= command.cpp
1>[x86] Compile++      : cmd <= json_reader.cpp
1>[x86] Compile++      : cmd <= json_value.cpp
1>[x86] Compile++      : cmd <= json_writer.cpp
1>[x86] Executable     : cmd
1>[x86] Install        : cmd => libs/x86/cmd
1>[x86] Compile++      : native <= native.cpp
1>./native/native.cpp(428,14): warning G0C39A92D: 'SearchCode' has C-linkage specified, but returns user-defined type 'std::string' (aka 'basic_string<char>') which is incompatible with C [-Wreturn-type-c-linkage]
1>        std::string SearchCode(unsigned char* data,unsigned size){
1>                    ^
1>1 warning generated.
1>[x86] Compile        : native <= asm.s
1>[x86] Compile++      : native <= json_reader.cpp
1>[x86] Compile++      : native <= json_value.cpp
1>[x86] Compile++      : native <= json_writer.cpp
1>[x86] SharedLibrary  : libnative.so
1>[x86] Install        : libnative.so => libs/x86/libnative.so
1>[x86] Compile        : tool <= main.c
1>[x86] Executable     : tool
1>[x86] Install        : tool => libs/x86/tool
1>已完成生成项目“magic.vcxproj”的操作。
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

image.png



在 Y:\002_WorkSpace\002_VS\magic\libs\x86 目录下 , 生成如下可执行文件和动态库 , 这是逆向的工具 和 要注入的动态库 ;


image.png






三、逆向环境搭建


参考 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system ) 博客 , 搭建逆向环境 ;


使用 雷电模拟器 3.75 版本 , 作为运行环境 ;


拷贝在 Visual Studio 中编译的 Android 平台的 4 44 可执行文件和动态库到 /data/system/debug 目录下 , 赋予 777 权限 ;






四、使用注入工具进行逆向操作


参考


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

【Android 逆向】修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )

博客 , 进行逆向 ;



1、获取远程进程号


执行


dumpsys activity top|grep pid


命令 , 查看当前运行进程的进程号 ;



2、注入工具准备


进入 /data/system/debug/ 目录 ,


cd /data/system/debug/


为 /data/system/debug/ 目录下的四个文件 , 赋予 777 权限 ;


chmod 777 ./*



3、注入动态库


执行


./tool 2328


命令 , 注入动态库到 2328 进程中 , 该进程号是上面 dumpsys 命令获取的 ;



4、查询内存


执行


./cmd 2328 searchcode 0x59 0x28 0xB3 0x07 0x00 0x06 0x02 0x7B 0x41 0x08 10


查询 0x59 0x28 0xB3 0x07 0x00 0x06 0x02 0x7B 0x41 0x08 10 个字节的内存特征 , 获取到一个内存地址 ;



5、修改内存


执行


./cmd 2328 modify 96A2C355 0x58 0x28 0xB3 0x07 4


修改内存地址 , 一次只能修改 4 字节 ;


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
软件自动化测试工具的历史进程
软件测试最早可以追溯到1958年的美国第一个载人航天计划-水星计划,当时在该计划中首次诞生了软件测试团队。当然,在此之前也肯定是有软件测试存在的,但远没有这次有了自己的江湖地位。但这也仅仅是软件测试的萌芽,远没有到开宗立派的地步。
1005 0
Android开发16——获取网络资源之基础应用
一、项目背景在Android开发中有一项非常广泛的应用:Android项目获取另一个web项目的资源或者返回的数据。本博文介绍了获取另一个web项目的资源。有一个web项目,在其WebRoot文件夹下有一个静态页面test.html。现有一个Android项目要获取到该页面的html代码显示在TextView中。   二、实例代码 public class MainActivity
1167 0
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(一)
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(一)
57 0
用C#写一个实现进程监控的自动关机工具
今天QA部门需要进行Performance测试,因为跑job的时间会很长,下班也跑不完。所以想要做一个job运行完毕自动关机的工具。 原理就是检查进程的名称,如果检查不到相应的进程,就说明job已经跑完了,可以关机了。
888 0
Android开发17——获取网络资源之XML数据
一、项目背景在Android开发中有一项非常广泛的应用:Android项目获取另一个web项目的资源或者返回的数据。 本文获取web项目返回的XML数据。     二、实例代码   Web项目 /** * 新闻业务类 * * @author xy * */ public class VideoNewsServiceImpl implements VideoNew
1048 0
+关注
韩曙亮
专注 Android 领域
2601
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载