Android逆向 练习1 跳过签名验证
今天练练手 做一个跳过签名验证的练习
下手的app :
1. 分析apk
首先拖入AndroidKiller
选择不分析
今天练练手 做一个跳过签名验证的练习
下手的app :
首先拖入AndroidKiller
选择不分析
B(Branch)
=> 分支的意思
B
无条件跳转BL
带链接的无条件跳转BX
带状态切换的无条件跳转 根据目标地址最低位切换状态(arm/thumb)BLX
带链接和状态切换的无条件跳转B loc_地址
BEQ,BNE
LDR/STR
LDR
: 从存储器中加载数据到寄存器中 => LOAD
LDR R8,[R9,#4]
,R8为待加载数据的寄存器,加载值为 R9+0x4
所指向的存储单元, 伪代码 R8 = *(R9+4)
LDR
: 将寄存器的火速据存储到存储区 => Store
STR R8,[R9,#4]
,将R8寄存器的数据存储到 R9+0x4
指向的存储单元,伪代码: *(R9+4) = R8
LDM/STM
LDM
: 将存储器的数据加载到一个寄存器列表
LDM R0,{R1,R3}
,将R1指向的存储单元的数据一次加载到 R1,R2,R3寄存器STM
: 将一个寄存器列表的数据存储到指定的存储器PUSH/POP
PUSH
: 将寄存器的值压入堆栈 压栈==>POP
将堆栈值弹出到寄存器 出栈<==SWP
: 将寄存器与存储器之间的数据进行交换
SWP R1,R1 [R0]
,将R1寄存器与R0指向的存储单元的内容进行交换MOV
将立即数或寄存器的数据传送到目标寄存器
MOV R0,#8
=> R0 = 8
NDK开发总结
javah -jni
);Android.mk
文件 Application.mk
文件(头文件/代码文件和两个mk放入jni目录);jni.h
头文件,编写c/c++文件 ,实现java层被native修饰的方法;JNINativeMethod
结构体绑定java和c/c++方法;RegisterNatives
方法注册java相应的类以及方法;JNI_onload
(两个参数),注意: JNI_onload
是系统调用;ndk_build
生成so文件;本文转发语NCK大佬的博客,并且自己跟着做了一遍 有一点点不同 大致上是大佬的文章:
https://www.cnblogs.com/fuhua/p/12725771.html
前面几篇文章演示的是比较原始的创建JNI项目的方法,旨在了解JNI项目构建原理!
但是构建项目效率很低,开发,调试都存在很大的效率低下问题。
本篇文章将演示利用Android Studio快速构建JNI项目。本篇文章要点
请看NCK大佬的文章:
……发现各个大佬都在用AS 我也装一个用一下
下载地址:
https://developer.android.com/studio
打开 ADT 新建Android空白项目 全部默认下一步
hello.c
|
|
Android.mk
……
相信很多在国内服务器搭建WordPress的同学都有过这样的烦恼:更新不成功,后台某些页面打卡非常慢,插件主题没法在线安装等等等等这些问题,而且如果你的服务器又因为某些因素不方便直接搭建$$r之类的软件来给它加速,每次手动下载安装包再上传安装会是一件非常头疼的事。
……下面是一些可用的命令行帮助恢复
|
|
一种替代方法是保存和恢复ACL
……