菜鸟第一次破解简单的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:}
最后别忘记 保存编译打包
附个成功截图:
赞一个.. xiaowenyu520 发表于 2014-6-5 16:19
膜拜 会安卓的大大。。。
大大好,我没学过安卓,今天第一次接触,多多指教 支持一下 感谢分析 其他三个也是差不多的方法 楼主不带这样扣穷叼CB的。。。 菜鸟都这么牛逼。。。好羡慕呀 boyving 发表于 2014-6-5 16:54
菜鸟都这么牛逼。。。好羡慕呀
{:301_976:}一天就学了这么点
页:
[1]
2