包含标签 JNI articles

Android逆向 ARM汇编简介

Arm汇编简单介绍 控制指令 跳转指令: B(Branch) => 分支的意思 B 无条件跳转 BL 带链接的无条件跳转 BX 带状态切换的无条件跳转 根据目标地址最低位切换状态(arm/thumb) BLX 带链接和状态切换的无条件跳转 B loc_地址 BEQ,BNE 存储器与寄存器交互数据指令 核心 存储器/寄存器: 内存,存储数据(小数据:寄存器,大……

Continue reading

Android逆向 NDK开发总结

NDK开发总结 Jni接口: java native interface 作用:用于java/c/c++ 代码之间的交互 使用方法: jni静态注册 在java代码中定义native修饰的方法; 根据java中native修饰的方法生成头文件(SRC路径执行javah -jni); 编写c/c++代码,导入头文件,同时实现头文件中的方法; 编写两……

Continue reading

Android逆向 Android Studio JNI 快速构建项目+动态注册+简易计算器

本文转发语NCK大佬的博客,并且自己跟着做了一遍 有一点点不同 大致上是大佬的文章: https://www.cnblogs.com/fuhua/p/12725771.html 前面几篇文章演示的是比较原始的创建JNI项目的方法,旨在了解JNI项目构建原理! 但是构建项目效率很低,开发,调试都存在很大的效率低下问题。 本篇文章将演示利用Android Studio快速构建JNI项……

Continue reading

Android逆向 JNI静态注册(c++和java交互)

Android逆向 JNI静态注册(c++和java交互) 使用Android Studio新建JNi项目 请看NCK大佬的文章: https://www.cnblogs.com/fuhua/p/12695436.html 先加个textview方便输出调试信息 <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/TextViewDebug" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="TextView" /> </androidx.coordinatorlayout.widget.CoordinatorLayout> 1. JNI普通字段,静态字段互操作. 目标: 获取普通字段的值,设置普通字段的值,获取静……

Continue reading

Android逆向 JNI静态注册

Android逆向 JNI静态注册 1. 新建空白Android项目 打开 ADT 新建Android空白项目 全部默认下一步 2. 新增jni代码 使用jni写的需要用native修饰 3. 生成头文件 首先在ADT中新建 jni文件夹 右击src文件夹 选择 Properties 查看文件夹路径 这里为 C:\Users\asura\source\repos\Android_JNI\02_JNI_register\Jnidemo\src 打开命令行 到达指定的目录执行java……

Continue reading

Android逆向 使用NDK编译c语言可执行程序

使用ndk构建c语言可执行程序 1. 新建代码文件 hello.c #include <stdio.h> int main() { printf("hello android JNI!"); return 0; } 2. 新建android编译make文件 Android.mk LOCAL_PATH := $(call my-dir) # 获取jni文件路径 include $(CLEAR_VARS) # 因为是全局变量 所以要清理设置 LOCAL_CFLAGS += -std=c99 #使用c语言c99规范 LOCAL_CFLAGS += -pie -fPIE #相当于在源文件中增加宏定义,安卓5.0以上需要添加,否则编译出来无法使用 LOCAL_LDFLAGS……

Continue reading