虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > Android逆向实例笔记—破解第一个Android程序

Android逆向实例笔记—破解第一个Android程序
类别:Android编程   作者:码皇   来源:互联网   点击:

本实例来源于《Android软件安全与逆向分析》这本书,作者是看雪的非虫,感谢提供这么好的书和实例。
一、工具 干什么都得一个好工具对吧。 1.apkIDE 反编译呢,我这里使用的是apkIDE(apk改之理),工具的话自己百度吧。个人不喜欢留一些不需要的东西在网盘里,难得整理,百度一大堆。我这里就给一个官网吧,免得有些童鞋找错了地方。现在这下下载网站一不小心,什么全家福都来了。好了,扯得有点远了。我用的就是最新版,我个人就喜欢最新版。(最新版可能有些问题) http://www.popotu.com/popo/apkide.html 上个样图: 2.蓝叠 只要是模拟器都可以,我个人觉得这个好用。随便找一个都行。官网:http://www.bluestacks.cn/ 样图:   二、查看源程序 这里我们直接拖拽crackme02到蓝叠中,安装。       然后我们点开看看效果。           我们可以看到左上角有个程序未注册。我们随便输入字符,点击注册。发现Toast提示我们,无效用户名或注册码。 此时,我们就该上我们的工具了   三、反编译   1.工具的使用 这里详细介绍一下apkIDE的使用。 打开apkIDE   点击项目,然后点击打开apk,选择我们的crackme02。   看输出框的进度,之后就可以进行我们的操作了。     反编译之后的文件目录     其中smali中存放的是反汇编的代码。 res是所有的资源文件。 都与开发目录一致。   2.strings.xml   我们知道在开始的时候,我们一般会一些字符放到strings.xml文件中去。这里我就打开strings.xml文件。 文件在:res-values-strings.xml     现在我们看看strings.xml中的内容
    Crackme0201 Hello world! Settings crackme02 Android程序破解演示实例 用户名: 注册码: 注 册 请输入用户名 请输入16位的注册码 程序未注册 程序已注册 无效用户名或注册码 恭喜您!注册成功
我们可以很容易的看到,Toast提示我们错误的地方  
  3.public.xml 我们知道每个字符都有唯一的int类型的索引值。 于是我们打开strings.xml上面的public.xml文件。

找到我们需要的unsuccessed。如果觉得很难找,那么我们搜索功能就来了。   在搜索内容里面写上unsuccessed,然后搜索范围选择选中的文件或文件夹,左边我们选择public.xml。然后点击搜索全部。     我们可以看到下面的搜索结果显示了出来,我们双击这一行,就会跳到我们所需要找的位置。     然后我们记住id:0x7f05000c。 3.smali 这个时候我们还得使用我们的搜索。方法类似,不在赘述。我们要选择搜索smail   我们发现有两处。 第一处const v1, 0x7f05000c 于是我们双击过去。 然后往上找跳转的地方。 move-result v0
if-nez v0, :cond_0 这里第一行代码返回的结果存到v0中去,第二行是对v0进行判断。如果值为0,就往下运行,也就是弹出未注册的地方。如果不为0,就跳转到cond_0处。     那么也就是这里如果跳转成功就会跳转,那么程序就是成功。   四、修改smali 这里是nez,不等于0,那我们就修改为eqz,等于0。     重点中的重点,修改完之后,一定记得保存。不然可能编译错误或者,没有编译修改后的代码。   然后我们点击编译,编译生成apk     看输出框的进度和文件路径,我们就去查找我们的apk。一般来说就在原apk旁边。重新编译签名后的apk名字前面会加上ApkIDE_     五、验证 重新编译好的apk我们需要来验证一下是否成功。 我们拖拽到蓝叠中,安装打开。 这里发现我们已经破解成功了。   最后给出apk的下载吧。 https://yunpan.cn/cMuPerPjatc6S 访问密码 24ce 说的有错误或者不对的地方欢迎指正讨论。大笑  
相关热词搜索: