免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 软件破解 > Android 应用程序基础破解入门(4)

Android 应用程序基础破解入门(4)

时间:2012-04-01 22:46来源:未知 整理:寂涯网络 点击:


能很多人再次发怵,本来就没弄过 Android 程序,现在一上来就是个混淆过的款,叫人怎么活啊!不要急,其实,被 Proguard 混淆过的代码还是有办法弄的,如有主要的几个类,如 Service、Activity 等类名是不能被混淆的,不过这不是我们今天要讲的重点。
我们接着分析,回想一下,我们在安装运行程序时,程序弹出了一个 Message,想想我 们在 OD 中破解 Windows 程序时用到的字符串参考,在这里是否可用呢?回答是:可以!我们在编译 Android 程序时,定义的字符串都保存在一个名收 Strings.xml 的文件中,编译生 成 APK 后它也被加密打包到程序中了,而程序通过为每个字符串分配一个 ID 来进行调用, 这些 ID 被保存在 public.xml 文件中。我们在刚才反编译的 XML 文件中找找就可以发现在 res/values 下有这两个文件,我们打开 strings.xml 并查找之,很快可以发现如下两行:
<string name="expired_title">产品过期</string>
<string name="expired_message">这是一个有使用期限的版本,从 2012 年 1 月 1 日开始
此版本已过期, 请确保网络通畅,并立即检查升级。</string>
这两行字符串正是前面运行程序时弹出的 MessageBox 的标题与文字。我们在这里记下 它们的名字 为 expired_title 与 expired_message 。打 开 strings.xml 文件查 找 expired_title 与 expired_message 则可以找到下面两行:
<public type="string" name="expired_title" id="0x7f060166" />
<public type="string" name="expired_message" id="0x7f060167" />
找到了这两个 ID 就好办了,我们下面来看看 Android 程序中是如何构建一个字符串的,修 改刚才的 HelloAndroid 代码如下:
public class HelloAndroidActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
ShowString();
 
}
public void ShowString(){
String str = getString(R.string.hello); Toast.makeText(getApplicationContext(), str,Toast.LENGTH_SHORT).show();
}
}
重新生成 APK 后并编译代码如下:
# virtual methods
.method public ShowString()V
.locals 3
.prologue
.line 16
const/high16 v1, 0x7f04
invoke-virtual                          {p0,                         v1}, Lcn/feicong/HelloAndroid/HelloAndroidActivity;->getString(I)Ljava/lang/String;
move-result-object v0
.line 17
.local v0, str:Ljava/lang/String;
invoke-virtual                                                    {p0}, Lcn/feicong/HelloAndroid/HelloAndroidActivity;->getApplicationContext()Landroid
/content/Context;
move-result-object v1 const/4 v2, 0x0
invoke-static                {v1,                v0,               v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequen ce;I)Landroid/widget/Toast;
move-result-object v1
invoke-virtual {v1}, Landroid/widget/Toast;->show()V
.line 18 return-void
.end method
.method public onCreate(Landroid/os/Bundle;)V
.locals 1
.parameter "savedInstanceState"
.prologue
.line 11 
invoke-super                        {p0,                        p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
.line 12
const/high16 v0, 0x7f03
invoke-virtual                        {p0,                       v0}, Lcn/feicong/HelloAndroid/HelloAndroidActivity;->setContentView(I)V

本页地址 http://www.jybase.net/ruanjianpojie/20120329811.html

百度搜索更多

谷歌搜索更多

顶一下
(6)
85.7%
踩一下
(1)
14.3%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com