Android学习心得(2) --- MAC下Android反编译
来源:互联网 发布:磁盘格式化后数据恢复 编辑:程序博客网 时间:2024/05/23 20:22
从今天开始,我在博客上发表一些我的Android学习心得,希望对大家能有帮助。在前一章我们学习了如何在Mac os下搭建安卓开发环境,马上我们学习如何进行基本的Android反编译
Android学习心得(1) --- MAC下Android环境的搭建
具体源代码及分析文件将在最后给出链接
1. 编译生成第一个APK文件
首先使用Eclipse开发一个最简单的程序,最简单的登陆验证功能如果输入登陆口令是123,则Toast显示登陆成功,反之则登陆失败。
/*相关判断代码*/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文件夹,存放生成的反汇编代码。
3. 分析修改Smali文件
需要找到破解口,必须从Toast提示信息出发,打开res\values\string.xml文件
登陆成功和登陆失败就是我们的突破口每一个文件都在R.java文件中被标识,标识的索引值被存放在public.xml中
下面我们需要从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 ***
最终成功,无论输入什么都是登陆成功
6. 下载链接
apktool for mac
signapk.jar
下载链接: http://pan.baidu.com/s/1EZAhw 密码: jevj
crackme01项目
链接: http://pan.baidu.com/s/1kT69KLD 密码: vau1
0 0
- Android学习心得(10) --- MAC下Android反编译(2)
- Android学习心得(2) --- MAC下Android反编译
- Android学习心得(11) --- MAC下Android反编译(3)
- Android学习心得(1) --- MAC下Android环境的搭建
- Android学习心得(3) --- MAC下Android源代码下载
- win/mac下反编译Android安装包-APK文件
- Android mac下反编译
- mac下 android 反编译
- mac下android反编译
- Android学习心得(4) --- MAC下smali文件编写与运行
- Android学习心得(8) --- MAC下dex2jar和jd-gui使用
- Mac下反编译Android apk
- Android学习心得(7) --- 迭代器Iterator反编译smali分析
- Mac上反编译Android-apk傻瓜式记录。
- mac下反编译Android的apk步骤
- mac下反编译Android的apk步骤
- Windows和Mac下Android 反编译 详解
- mac下反编译Android的apk步骤
- java---关于线程池
- 我和opencv 5 对比度和亮度值
- Path静态类
- 黑马程序员_java基础学习笔记04_面向对象
- Unity3d 同步加载 Assetbundle 方法 AssetBundle.CreateFromFile
- Android学习心得(2) --- MAC下Android反编译
- 【STL源码剖析读书笔记】STL容器迭代器失效问题总结
- android自定义view
- 二叉树
- 编程札记一
- java---面向对象的三大特征
- 指针和引用的区别助记
- Android签名机制
- JSON解析实例——使用Json-lib