Android逆向分析初体验

一、    准备知识

1.             懂Java Android开发。

2.             懂NDK ,C 语言 Android 动态链接库.SO开发。

3.             懂Android反编译Smali 语法。

4.             懂adb 和 jdb 等等工具使用。

5.             懂IDA 调试(远程动态调试APK和本地静态调试.SO文件)

6.             懂Arm汇编语法(因为移动设备芯片是Arm架构的,不是Intel的芯片,不是x86汇编,是Arm汇编)。

7.             懂APK的打包解包流程。

8.             其他工具使用(改之理,Apk killer,Android模拟器)等等等等。

9.             懂文件格式类似PE格式,例如:ELF,和Android文件格式等等。



以上的均为Android 逆向的基本条件,想学的童鞋,可以按照上面的学习,也可以自行查找!

以上内容哪里不会只能自己补充知识啦,太多,讲不完!!!

二、    入门逆向分析

因为我们是入门分析,所以以上准备知识,先懂一些就行,不必要都懂,知识是慢慢积累的,慢慢学习!!!

1)       先看看我们APK Demo(没有加壳)。

2)       随便输入提示错误,我们可以解压这个APK看看。

直接鼠标右键解压到….不需要修改后缀名也可以的。

解压出来是这个样子的,这是Android的文件目录,具体每个文件夹是什么作用可以自行查找一下,看到没有lib类似的目录说明没有.SO这样的动态链接库,那么这个软件就比较容易逆向分析,因为都是Smali 和 Java代码比较容易看懂。

3)       用改之理打开这个APK。

打开后如下图所示。

4)       找关键处。

如下图搜索要破解APK的字符串。

5)       继续搜索关键字

因为这是一个xml格式的文本,successed 对应的 恭喜您,所以有可能是突破口,所以继续搜索successed。

找到一个id,因为Android程序里面就是这样分配的,所以我们接下来查找id的值也就是0x7f05000c。

找到一句const v1, 0x7f05000c 这是Smali语法,和汇编类似,是把0x7f05000c放到v1寄存器里面,所以v1就为恭喜您这句话。

6)       同样的方法,查找unsuccessed,做好注释如下图。

7)       找到之后用#注释下,方便查看。

如上图那个 if-nez 由名字可知道 他的意思是 如果 v0 这个寄存器不等于0就跳转。就跳转到了cond_0这个位置,刚好调到恭喜您的位置,所以我们让这个跳转实现就可以了,方法好多。我们也可以结合源码分析。

点击按钮(如下图)。

会出现源码,可以结合分析。

8)       代码修改。

只要把if-nez 改成 if-eqz就行啦。

9)       然后编译一下,安装执行。

显示已注册,成功破解。

三、    总结

Android逆向分析入门,这个比较简单,容易学习。

因为无壳无.SO分析起来较为容易,适合入门。

入门:先学会Smali语法,学会改之理的使用,最好会写Android程序。

时间: 2024-07-28 21:01:36

Android逆向分析初体验的相关文章

Android中socket初体验

最近要做一个Android的项目,用到socket和服务器之间交互,研究了一个小demo.主要遇到了以下几个问题: 1.客户端创建socket对象时一直失败NetworkOnMainThreadException,查了一下,原因是4.0之后在主线程中执行http请求会报这个错.解决办法是将代码放到了一个新线程中,问题就解决了. 2.服务器接收到客户端信息后反馈给客户端信息,将该信息表示在客户端UI上时报“android.view.ViewRoot$CalledFromWrongThreadExc

Android逆向分析(2) APK的打包与安装

http://blog.zhaiyifan.cn/2016/02/13/android-reverse-2/ 2/18日增加对aidl和java编译的描述. 前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之鱼不如授之以渔,只有知道一些基本原理,才能让我们以后能自行解决更多问题. 那么,你知道么?从我们在Android Studio中,点击run,

Android逆向分析之Xposed的hook技术

Android逆向工程里常用到的工具除了的dex2jar,jd-gui,  Apktool之外还有一个Xposed. 这个工具是一个在不修改APK的情况下,影响其运行过程的服务框架.可以根据自己的需求编写模块,让模块控制目标应用的运行. 因为本人也是新手,对于Xposed用法还有很多的不熟悉,所以只对其hook技术进行简单的介绍,并让hook技术应用到以后的逆向分析工程中. 至于什么是hook,不了解的话就先去百度一下,这里基于菜鸟有限的经验,我只能说是一种函数拦截技术~ 首先,下载Xposed

Android Studio Git初体验

写这一篇呢就是要给自己提个醒,不会的一定要及时问,不要自以为然,最后给自己埋下一个坑. git我用的是Git bash+Git extensions图形可视化工具.加入项目之初,就用这两个工具去clone了一份项目到本地.项目文件包括后台,微信,网站,IOS和Android的几大分支. 于是我就心满意足地进行开发,在Android Studio中就可以导入项目了,当时为了方便,直接open打开了Android目录的文件..... 这就是大坑,然后呢,我就开始写layout,类,适配器,接口(幸好

二 APPIUM Android自动化 测试初体验

本文转自:http://www.cnblogs.com/sundalian/p/5629358.html 1.创建一个maven项目 成功新建工程: 编辑pom.xml,在<dependencies></dependencies>下添加appium相关依赖: <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <vers

Android Studio之初体验 ---- 很好很强大

一.介绍 很多android 开发者都感叹做android开发竟然都没有一款专门的软件来使用,不像IOS有Xcode,WP有VS.一般做android开发都是eclipse或者ADT或者IntelliJ IDEA.后来,终于,哈哈,有了Android Studio.人称"亲生"的android开发IDE,本人使用了一段时间之后,发现功能真是强大,完爆eclipse等开发工具,最大的亮点就是[代码提示]和[实时预览布局]这两块. 官网上介绍说,Android Studio有诸多好处: 基

三 APPIUM Android自动化 测试初体验

1.创建一个maven项目 成功新建工程: 编辑pom.xml,在<dependencies></dependencies>下添加appium相关依赖: <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.9.10</version> <scope>test</s

[Android初级]android与netty4初体验

博主曾经对netty4的helloword很感兴趣,也曾单纯的写过一个小小的聊天室java代码,现在重新来看看,浏览了这位牛人的博客 点击去看看 我觉得受益匪浅,故拿来分享. 这次是在android上使用netty作为客户端,来与服务端相互通讯的小事例,纯粹的helloworld,效果就是在android程序中发送一个消息到服务端,然后服务端也回一个消息给客户端,很简单的demo,.大牛看了可不要吐槽啊! 1.demo结构 2.服务端代码: Server.java package org.jan

Android 模拟器使用初体验

点击eclipse主菜单的Window->AVD Manager,create一个模拟器,基本填写如下. 遇到的问题: 1.Target选项可选太少. 这是因为SDK包安装太少,可以根据需要添加安装包.比如上图的Google API 17没有,我就装了4.2.2的安装包. 我建工程时选择了target,但是发现实际用的不对,后来发现还是缺少该对应SDK,编辑器自动选择已有的SDK.这是工程已经建好后,要修改工程的Target.如下操作: 弹出框中点左边resource下的Android,然后在右