计算机系统应用教程网站

网站首页 > 技术文章 正文

安卓逆向——NDK 开发 2021安卓逆向教程

btikc 2024-10-27 08:34:37 技术文章 7 ℃ 0 评论

作者丨mark

整理丨阿星

如何编译原生程序

Application.mk(ARM硬件指令集/工程编译脚本/stl支持等)

Android.mk(编译选项/头文件/源文件及依赖库等)

local_path(call my-dir)

include $(clear_vars)

local_arm_mode:= arm指令模式

local_module:=模块名称

local_src_files:=源文件

build_executable(可执行文件)

build_shared_library(动态链接库)

build_static_library(静态链接库)

首先new一个安卓工程


打开mainactivity代码界面:

首先了解JNI

他的作用就是Java和c,c++之间的一个中介


整个过程都是通过反射来完成Java和c之间的互通


Jni的详解



然后在Java里面写一个特殊方法 被native修饰的


写好了代码,就生成头文件:

复制工程src的路径 cd过去:


然后输入命令:

Javah -jni加类名



回车后刷新工程目录 就多一个.h文件

新建一个文件夹 把刚刚的h文件重命名后移动过去


然后新建一个文件 命名为 .c 如上图

然后在h文件里面有个声明和方法名格式


直接复制到新建的c文件里面

记得复制的时候注意h文件的命名 和你的h文件名一样

复制过去后方法是 ; 结尾的 现在我们要写代码 所以改成 { }


既然声明了返回值类型为string 就要返回 但是不能直接返回字符串 先定义一个返回的方法然后直接返回这个方法名就行

具体定义的格式都有 :

这里是string类型的 有UTF的方法:

复制过去:


然后直接把两个.mk文件复制进去 记得模块名和原文件那里改成自己的文件


然后生成so库

Cd到jni的路径下面


生成的so在这个目录下面:


然后在mainactivity里面加载



OK 完成!

欢迎转载分享

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表