很多同学反映轰炸机没用,我去看了哈,好像的确是,样本是论坛看到的。然后这都不是重点,重点是这个方式方法哈。然后注册机的版本是5.0的,我自己手机亲测可以用。至于你们没法用的话,代码我都给出来了,正是锻炼自己写程序的时候到了噻,对吧!!!
本来很简单的一个app,直接搜验证码,一个爆破就OK了。但是看到下面里面评论的wnagzihxain大神说了句,爆破就不好玩了。于是细想一下,我还没弄过注册机呢。简单对这个app进行说明和写一个注册机app吧!就简单的分享一下我写的注册机app
废话不多说,直接看提示搜请输入6位验证码,一个结果,跳过来。
不浪费时间,看看伪代码吧。这里只上一些重要的代码 [Java] 纯文本查看 复制代码 public void SplashClick(View paramView)
{
switch (paramView.getId())
{
case 2131034171:
case 2131034172:
default:
return;
case 2131034169:
startActivity(new Intent(this, CallLoopActivity.class));
return;
case 2131034170:
startActivity(new Intent(this, SMSActivity.class));
return;
}
paramView = this.b.getText().toString().trim();
if ((TextUtils.isEmpty(paramView)) || (paramView.length() != 6))
{
Toast.makeText(this, "请输入6位验证码", 0).show();
return;
}
b(paramView);
}
我们看到这里
知道paramView非空非6位就弹出Toast。 然后又去上面的b [Java] 纯文本查看 复制代码 private void b(String paramString)
{
Object localObject1 = Calendar.getInstance();
int i = ((Calendar)localObject1).get(2);
i = ((Calendar)localObject1).get(5) * (i + 1) * 321;
Object localObject2;
if (i >= 1000000)
{
localObject2 = String.valueOf(i - i / 1000000 * 1000000);
if (paramString.equals(localObject2))
{
Toast.makeText(this, "激活成功", 0).show();
m.a().c();
findViewById(2131034171).setVisibility(8);
}
}
else
{
for (localObject1 = String.valueOf(i);; localObject1 = localObject1 + "0")
{
localObject2 = localObject1;
if (((String)localObject1).length() == 6) {
break;
}
}
}
Toast.makeText(this, "激活失败,请重试", 0).show();
}
我们在这里就可以清晰看到原作者的算法的意思了。就是获取当前的日期和月份,进行结算。
知道了这些,我无聊就去写了一个app做为注册机。 上代码 [Java] 纯文本查看 复制代码 package com.sorgs.administrator.crazydemo;
import android.app.Activity;
import android.os.Bundle;
import android.text.format.Time;
import android.widget.EditText;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText et_input;//显示输出内容的显示屏
et_input = (EditText) findViewById(R.id.et_input);
Time t=new Time();
t.setToNow(); // 取得系统时间。
int month = t.month; //取得当前月份
int date = t.monthDay; //取得当前日期
String RegCode;
int i = date * (month+ 1) * 321; //当前日期*当前月份加1*321
if(i >= 1000000) {
RegCode = String.valueOf(i - i / 1000000 * 1000000);
et_input.setText(RegCode);
}
else {
et_input.setText(i+"0"); //在i的基础上直接添加0
}
}
}
后面就不多说了,有兴趣的同学可以自己动手去分析一下算法,然后写个注册机,这样提高会很快!
|