好友
阅读权限25
听众
最后登录1970-1-1
|
Dlan
发表于 2014-6-5 16:12
本帖最后由 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
按着 帖子中 大大的方法 搜索字符串 来到如下位置:
[Asm] 纯文本查看 复制代码 move-result-object v2[/size]
.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
对应的源代码
[Asm] 纯文本查看 复制代码 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 的 判断条件 就可以了,对应的语法:
[Asm] 纯文本查看 复制代码 if-eq改成if-ne
if-ne 改成 if-eq
if-eqz改成 if-nez
if-nez 改成if-eqz
至于程序的算法神马的,就不不自量力了
最后 别忘记 保存编译打包
附个成功截图:
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|