一个安卓小crack,欢迎尝试
网上一个demo进行了改动,欢迎爆破和研究加密算法
取用户名md5,然后取奇数位字符
小白留爪
> smali跳转去做就没意义了
## dex -> jar后的源代码
直接看按钮onClick部分
```
public void onClick(View paramView)
{
switch (paramView.getId())
{
default:
return;
case 2131230724:
if (!checkSN(this.edit_userName.getText().toString().trim(), this.edit_sn.getText().toString().trim()))
{
Toast.makeText(this, 2131034123, 0).show();
return;
}
Toast.makeText(this, 2131034124, 0).show();
this.btn_register.setEnabled(false);
setTitle(2131034122);
return;
case 2131230723:
}
checkSNfalse(this.edit_userName.getText().toString().trim(), this.edit_sn.getText().toString().trim());
this.btn_answer.setVisibility(8);
}
```
校验在checkSN
```
private boolean checkSN(String paramString1, String paramString2)
{
if (paramString1 != null)
try
{
if (paramString1.length() == 0)
return false;
if ((paramString2 != null) && (paramString2.length() == 16))
{
Object localObject = MessageDigest.getInstance("MD5");
((MessageDigest)localObject).reset();
((MessageDigest)localObject).update(paramString1.getBytes());
paramString1 = toHexString(((MessageDigest)localObject).digest(), "");
localObject = new StringBuilder();
int i = 0;
while (true)
{
if (i >= paramString1.length())
{
paramString1 = ((StringBuilder)localObject).toString();
Log.e("TAG", paramString1);
if (!paramString1.equalsIgnoreCase(paramString2))
break;
return true;
}
((StringBuilder)localObject).append(paramString1.charAt(i));
i += 2;
}
}
}
catch (NoSuchAlgorithmException paramString1)
{
paramString1.printStackTrace();
}
return false;
}
```
可以看到这个算法就是将你的输入的字符串做MD5后取偶数位
## 解决脚本
```
import hashlib
str1 = '123'
str2 = ''
a =hashlib.md5()
a.update(str1)
str1 = a.hexdigest()
m = 0
while True:
if m >= len(str1):
print str2
break
str2 += str1
m += 2
``` 沙发 板凳{:1_912:} 好吧,楼上有大神解了。 干什么用的?不懂。 被你发现了,忘记截一张不按作弊按钮的图了 对用户名进行md5之后 取0 2 4 6 8.... 本帖最后由 B6B6B6 于 2015-6-19 19:14 编辑
感谢分享crackme! .line 116
invoke-direct {p0, v0, v1}, Lcom/droider/crackme0201/MainActivity;->checkSN(Ljava/lang/String;Ljava/lang/String;)Z
move-result v0
.line 117
if-nez v0, :cond_0 ->if-eqz v0, :cond_0 更改跳转方式
.line 119
const v0, 0x7f05000b
.line 118
invoke-static {p0, v0, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;
move-result-object v0
.line 119
invoke-virtual {v0}, Landroid/widget/Toast;->show()V
goto :goto_0
.line 122
:cond_0
const v0, 0x7f05000c