Dlan 发表于 2014-6-5 16:12

菜鸟第一次破解简单的CrackMe

本帖最后由 Dlan 于 2014-6-5 16:12 编辑

CrackMe地址:http://www.52pojie.cn/thread-232658-1-2.html
菜鸟我之前一点也不会android破解,今天下午来个兴趣,于是开始刷吾爱移动安全区的帖子。
翻到一个菜鸟级的crackME 刚好拿来练练手。从搭建环境加下载软件就花费了2小时。
因为对smali语言一点也不了解,又刷了好多smali的帖子
4个creakme 我练手的是 crackme02.apk
按着 帖子中 大大的方法 搜索字符串 来到如下位置:
move-result-object v2

    .line 32
    #calls: Lcom/droider/crackme0201/MainActivity;->checkSN(Ljava/lang/String;Ljava/lang/String;)Z
    invoke-static {v0, v1, v2}, Lcom/droider/crackme0201/MainActivity;->access$2(Lcom/droider/crackme0201/MainActivity;Ljava/lang/String;Ljava/lang/String;)Z

    move-result v0   //返回结果v0

    if-nez v0, :cond_0 //判断跳转

    .line 34
    iget-object v0, p0, Lcom/droider/crackme0201/MainActivity$1;->this$0:Lcom/droider/crackme0201/MainActivity; //获取MainActivity实例的引用

    .line 35
    const v1, 0x7f05000c   //类似注册失败

    .line 34
    invoke-static {v0, v1, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; //调用 Toas的makeText 方法

    move-result-object v0

    .line 35
    invoke-virtual {v0}, Landroid/widget/Toast;->show()V

    .line 42
    :goto_0
    return-void

    .line 37
    :cond_0//要跳转的位置
    iget-object v0, p0, Lcom/droider/crackme0201/MainActivity$1;->this$0:Lcom/droider/crackme0201/MainActivity;

    .line 38
    const v1, 0x7f05000d   //类似注册成功

    .line 37
    invoke-static {v0, v1, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;

    move-result-object v0

    .line 38
    invoke-virtual {v0}, Landroid/widget/Toast;->show()V

    .line 39
    iget-object v0, p0, Lcom/droider/crackme0201/MainActivity$1;->this$0:Lcom/droider/crackme0201/MainActivity;

    #getter for: Lcom/droider/crackme0201/MainActivity;->btn_register:Landroid/widget/Button;
    invoke-static {v0}, Lcom/droider/crackme0201/MainActivity;->access$3(Lcom/droider/crackme0201/MainActivity;)Landroid/widget/Button;

    move-result-object v0

    invoke-virtual {v0, v3}, Landroid/widget/Button;->setEnabled(Z)V

    .line 40
    iget-object v0, p0, Lcom/droider/crackme0201/MainActivity$1;->this$0:Lcom/droider/crackme0201/MainActivity;

    const v1, 0x7f05000b

    invoke-virtual {v0, v1}, Lcom/droider/crackme0201/MainActivity;->setTitle(I)V

    goto :goto_0
.end method


对应的源代码
package com.droider.crackme0201;

import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

class MainActivity$1
implements View.OnClickListener
{
MainActivity$1(MainActivity paramMainActivity)
{
}

public void onClick(View paramView)
{
    if (!MainActivity.access$2(this.this$0, MainActivity.access$0(this.this$0).getText().toString().trim(), MainActivity.access$1(this.this$0).getText().toString().trim()))
    {
      Toast.makeText(this.this$0, 2131034124, 0).show();
      return;
    }
    Toast.makeText(this.this$0, 2131034125, 0).show();
    MainActivity.access$3(this.this$0).setEnabled(false); //注册按钮灰色
    this.this$0.setTitle(2131034123);
}
}


通过分析可以了解 改下 line 32 的 判断条件 就可以了,对应的语法:
if-eq改成if-ne
if-ne 改成 if-eq
if-eqz改成 if-nez
if-nez 改成if-eqz

至于程序的算法神马的,就不不自量力了{:301_995:}
最后别忘记 保存编译打包
附个成功截图:





淡然出尘 发表于 2014-6-5 16:25

赞一个..

Dlan 发表于 2014-6-5 16:19

xiaowenyu520 发表于 2014-6-5 16:19
膜拜 会安卓的大大。。。

大大好,我没学过安卓,今天第一次接触,多多指教

xiaowenyu520 发表于 2014-6-5 16:19

简单就行 发表于 2014-6-5 16:23

ak524106159 发表于 2014-6-5 16:27

支持一下

zc123 发表于 2014-6-5 16:32

感谢分析 其他三个也是差不多的方法

zc123 发表于 2014-6-5 16:43

楼主不带这样扣穷叼CB的。。。

boyving 发表于 2014-6-5 16:54

菜鸟都这么牛逼。。。好羡慕呀

Dlan 发表于 2014-6-5 16:56

boyving 发表于 2014-6-5 16:54
菜鸟都这么牛逼。。。好羡慕呀

{:301_976:}一天就学了这么点
页: [1] 2
查看完整版本: 菜鸟第一次破解简单的CrackMe