Android 逆向project 实践篇

Android逆向project 实践篇

上篇给大家介绍的是基础+小Demo实践. 假设没有看过的同学能够进去看看.(逆向project 初篇)


本篇主要给大家介绍怎样反编译后改动源代码, 并打包执行在手机上.
先介绍下本篇文章用到的工具和资源.
1: Android Killer 1.3.1.0 (工具)
2: crackme.apk

还没有破解之前会提示任意输入usernamepassword会提示以下的信息.

以下我们来打开apk, 看看源代码是怎么回事.
我先用工具(Android Killer) 打开creckme.apk

这个是项目概要. 我们主要看的就是MainActivity 这个类, 其他的不看也没什么关系. 假设有耐心和兴趣的,朋友能够去看看MainActivity里面详细写了什么, 推断机制是什么.
破解步骤:
1: 点击注冊button后,弹出的toast 信息,这里能够分析出来,是什么条件触发,使程序弹出toas. [关键词搜索]
2: 这个程序,就上面那一步已经足够破解了.

以下打开MainActivity看看详细逻辑.


假设看不懂smali能够使用

以下我们找到程序入口 onCread 方法. 为什么要早这个入口呢? 我们要在这里找到初始化控件的函数,对于这个程序来说, 仅仅有一个Buttong(button)比較easy找到,我们能够在onCread里面找到Button的监听(setOnClickListener)


中间是有几句代码没有截图.
接下来是重点, 大家看到 我前面提到了的方法, setOnClickListener 没有?

? 这里就是一个点击事件, 可是这里没有发现Toast 相关的信息. 这个MainActivity.smali都没有发现. 难道搞错了??. 同志,别灰心, 看看项目列表,是不是另一个MainActivity$1.smali, 这个是一个内部类,我们打开这个smali能够看到有一个onClick方法, 这里就是在点击onClick后,触发的地方.那么我们要详细的看看里面的逻辑.


getText()方法代表是得到我们输入的内容. trim()方法代表去除多余的空格.


if-nez v0, :cond_0 条件推断语句, 当满足某些条件之后会做什么.

const v0, 0x1 定义一个整形4字节的局部变量v0 它的值是1. 假如条件瞒足,也就是v0!=0 会跳转到 :cond_0 执行另一段代码. 假如我们改动一下v0 的值,那么他就不会跳转到 :cond_0的里面. 也就是破解成功.const v0, 0x0 这样就能够让程序弹出 注冊成功的Toast.
程序到这里已经破解完毕了. 感觉步骤非常繁琐…
以下教大家一个简单一点的方法.一分钟左右就能够搞定.

大家看到第一张图片, 程序提示: 无效username或注冊码 这个是最直接的破解信息.我们能够在程序里面搜索下这个关键词.

*搜索范围记得换成整个项目

文本转Unicode 后假设搜索不到,就转回来搜索.


上面是我搜索的结果. 下一步搜索下 0x7f05000b 这个是unsuccessed的id,程序会通过这个id 来找到[无效username或注冊码]字符串.

我用箭头标出来的大家还熟悉吗??

?

就是上面我们改过的地方.这么easy就找到了.

工具下载地址
假设没有找到,就自己去下载把. 我上传了csdn, 没有那么 快显示出来的.
链接: http://pan.baidu.com/s/1hsunUcc password: rfbn

大家新年快乐. 早日脱单!!

http://blog.csdn.net/QQ541159192/article/details/54755685 原创地址

原文地址:https://www.cnblogs.com/brucemengbm/p/7346980.html