Android学习心得(2) --- MAC下Android反编译

从今天开始,我在博客上发表一些我的Android学习心得,希望对大家能有帮助。
在前一章我们学习了如何在Mac os下搭建安卓开发环境,马上我们学习如何进行基本的Android反编译

Android学习心得(1) --- MAC下Android环境的搭建

具体源代码及分析文件将在最后给出链接

1. 编译生成第一个APK文件

首先使用Eclipse开发一个最简单的程序,最简单的登陆验证功能
如果输入登陆口令是123,则Toast显示登陆成功,反之则登陆失败。

Android学习心得(2) --- MAC下Android反编译_第1张图片
Android学习心得(2) --- MAC下Android反编译_第2张图片Android学习心得(2) --- MAC下Android反编译_第3张图片

/*相关判断代码*/
if(str_userpwd.equals("123")) {
    Toast.makeText(MainActivity.this, 
    R.string.str_success, 
    Toast.LENGTH_SHORT).show();
}else {
    Toast.makeText(MainActivity.this, 
    R.string.str_unsuccess,  
    Toast.LENGTH_SHORT).show();
}

2. 反编译APK文件

       经过Eclipse编译并在模拟器上运行之后,将在bin目录文件夹中生成一个APK文件
       下面我们对这个文件进行反汇编。
       反汇编apk文件利用ApkTool进行,来生成Smali格式的反汇编代码。
       首先,我们把apk文件和ApkTool放在同一个目录文件夹下面,打开终端,进入相应的文件夹目录。
       直接在命令行输入apktool命令,反编译命令为apktool d crackme01.apk
       反编译成功后将在当前文件夹下生成一个crackme01文件夹,存放生成的反汇编代码。

Android学习心得(2) --- MAC下Android反编译_第4张图片

3. 分析修改Smali文件

需要找到破解口,必须从Toast提示信息出发,打开res\values\string.xml文件

Android学习心得(2) --- MAC下Android反编译_第5张图片

登陆成功和登陆失败就是我们的突破口
每一个文件都在R.java文件中被标识,标识的索引值被存放在public.xml中

Android学习心得(2) --- MAC下Android反编译_第6张图片

下面我们需要从smali文件中找到0x7f040004的文件
我们在MainActivity$1.smali中查看到一处调用
/*简化了代码,把不需要的使用...替代*/
    move-result v0
    if-eqz v0, :cond_0
     ...
    const v1, 0x7f040003
     ...
    move-result-object v0
     ...     
    .line 37
    :goto_0
    return-void
    .line 35 
    :cond_0     
     ...     
    const v1, 0x7f040004
     ...
    move-result-object v0
     ...
    goto :goto_0
.end method
这里是一个跳转语句,先将if内判断的结果放入v0,然后对v0进行判断
如果等于0(登陆失败),则跳转到cond_0,不等于0(登陆成功),则继续执行。
下面我们只需要进行修改,无论判断是什么结果,都让其继续执行即可。
删除if-eqz v0, :cond_0则不会进行判断,永远执行登陆成功。

4. 重新编译APK并签名

       修改完成后,我们需要使用apktool工具重新打包成apk文件
       执行命令为:apktool b crackme01,出现如下情况则成功编译。

这里写图片描述

  由于编译生成的apk并未进行签名,我们需要使用signapk.jar进行签名

这里写图片描述
5. 安装测试

开启AVD,输入adb install signed.apk重新安装apk并测试
运行指定的AVD:emulator -avd ***

这里写图片描述

最终成功,无论输入什么都是登陆成功

Android学习心得(2) --- MAC下Android反编译_第7张图片

6. 下载链接
apktool for mac
signapk.jar
下载链接: http://pan.baidu.com/s/1EZAhw 密码: jevj
crackme01项目
链接: http://pan.baidu.com/s/1kT69KLD 密码: vau1

你可能感兴趣的:(android,mac,环境,编译,安卓开发)