破解一个Android程序

admin 2024年7月2日08:35:22评论9 views字数 1682阅读5分36秒阅读模式

破解android程序的流程:

1、分析APP中的错误提示

2、反编译APK文件,生成smali格式的反汇编代码

3、阅读smali文件的代码理解程序运行机制,找到如破口,并对代码进行修改

4、重打包并签名

5、运行测试


1、反编译apk

使用android killer反编译apk

smali目录存放了程序的所有反汇编代码;

res目录中存放的则是程序中的所有资源文件;

破解一个Android程序


2、分析APP中的错误提示

寻找突破口是分析android程序的关键。一般的做法是按程序中的错误提示信息来找到关键代码,因为错误提示代码附近通常就是程序的核心验证代码,可以通过阅读这些代码来理解程序的流程。


破解一个Android程序


一般错误提示属于android程序中的字符串资源,在开发android程序时,这些字符串会被硬编码到源码中,一般引用自resvalues下的strings.xms文件。

通过反编译可成功搜索到该错误提示。

破解一个Android程序

反编译APK之后,所有的索引值都保存在了public.xml文件中,“无效用户名或注册码”的字符串名称为"unsuccessed"


R.java文件介绍:gen目录下的R.java文件是编译器自动生成的,它无需开发人员对其进行维护。R.java会自动收录当前应用中所有的资源,并根据这些资源建立对应的ID,包括:布局资源、控件资源、String资源、Drawable资源等。我们可以简单的把R.java理解成是当前Android应用的资源字典。


破解一个Android程序

public.xml和R$string.smali为程序的资源文件,

MainActivity$1.smali文件进行了调用:

破解一个Android程序

发现line34处调用了checkcode()方法进行注册码合法性检测

checkecode()方法返回布尔类型的值。


move-result v0  //将返回的结果保存到v0寄存器const/4 v1, 0x0   //4字节常量  v1=0if-nez v0, :cond_0  //对v0寄存器进行判断,如果其值不为0(条件为真)就跳转到cond_0标号出,反之继续往下执行


如果代码不跳转,会执行如下代码:

破解一个Android程序

const v2, 0x7f0b002c //将v2寄存器传入 unsuccessed字符串的id值"0x7f0b002c"invoke-static {v0, v2, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;    //调用Toast;->makeText()方法创建字符串,.line 37 invoke-virtual {v0}, Landroid/widget/Toast;->show()V   

//显示结果

  


如果代码跳转,会执行如下代码

破解一个Android程序

会弹出注册成功的提示,这里的跳转成功意味着程序注册成功。


3、修改smali文件代码

通过分析得知,if-nez v0, :cond_0是程序破解的关键点。


if-nez是Dalvik指令集中的一个条件跳转指令,与之类似的指令有if-eqz、if-gez、if-lez等。

与if-nez指令功能相反的指令为if-eqz 表示比较结果为0或者相等时跳转。


打开MainActivity$1.smali文件,修改if-nez v0, :cond_0为if-eqz v0, :cond_0 然后保存后退出即可修改成功。

破解一个Android程序

4、重编译APK并签名

使用Android killer可一键进行文件重打包,并自动为该APK文件签名


三、安装测试

将打包好的apk文件,安装在手机或模拟器中,输入任意用户名和注册码,查看程序弹出的提示信息,发现会提示“程序已注册”,意味着破解成功。

破解一个Android程序


总结

破解Android程序的大致流程为:

分析发现程序错误提示-反编译—定位程序关键代码-修改代码-重打包签名-测试

本次只是对Android程序分析的基础过程进行了总结,但实际测试过程中,很多APP都进行加壳保护并对代码进行了混淆,使得分析起来相当困难复杂,需要使用动态调式与其它方法进行分析。


原文始发于微信公众号(菜鸟小新):破解一个Android程序

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月2日08:35:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   破解一个Android程序https://cn-sec.com/archives/2907991.html

发表评论

匿名网友 填写信息