牵走天涯 发表于 2016-9-27 18:33

Android逆向实例笔记—记一第一次为Android程序写注册机

很多同学反映轰炸机没用,我去看了哈,好像的确是,样本是论坛看到的。然后这都不是重点,重点是这个方式方法哈。然后注册机的版本是5.0的,我自己手机亲测可以用。至于你们没法用的话,代码我都给出来了,正是锻炼自己写程序的时候到了噻,对吧!!!


本来很简单的一个app,直接搜验证码,一个爆破就OK了。但是看到下面里面评论的wnagzihxain大神说了句,爆破就不好玩了。于是细想一下,我还没弄过注册机呢。简单对这个app进行说明和写一个注册机app吧!就简单的分享一下我写的注册机app
废话不多说,直接看提示搜请输入6位验证码,一个结果,跳过来。
http://img.blog.csdn.net/20160927181835628?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

不浪费时间,看看伪代码吧。这里只上一些重要的代码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);
}
我们看到这里
http://img.blog.csdn.net/20160927182012519?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

知道paramView非空非6位就弹出Toast。然后又去上面的bprivate 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做为注册机。上代码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
            }
      }

    }

http://img.blog.csdn.net/20160927182626794?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
后面就不多说了,有兴趣的同学可以自己动手去分析一下算法,然后写个注册机,这样提高会很快!

样本 :https://yunpan.cn/ck9ug7YCVQddB访问密码 ec55注册机:https://yunpan.cn/ck9ufqMBGnsVS访问密码 **** Hidden Message *****


牵走天涯 发表于 2016-9-27 20:00

bxzda123 发表于 2016-9-27 19:52
膜拜大神了谢谢 从学习机开始关注你的一如既往的支持

请不要这么说,比我大神的论坛里多的是呢。这些东西都是他们不屑写的,只是我觉得我记录一下自己的学习历程而已呢。多多你的关注呢:loveliness:

admib木木 发表于 2016-9-27 18:42

看看怎么样

不苦小和尚 发表于 2016-9-27 18:44

学习一下,楼主的教程每次都很通俗易懂,谢谢了

旧忆如梦 发表于 2016-9-27 18:45

好牛啊大神

诗木 发表于 2016-9-27 18:49

好帖留名.

亚洲先生 发表于 2016-9-27 18:57

无卡能用吗

joka 发表于 2016-9-27 19:03

崇拜大神,谢谢分享

小米不好吃 发表于 2016-9-27 19:04

实在是不错的教学

a6718589 发表于 2016-9-27 19:04

这是注册机?

大风车 发表于 2016-9-27 19:06

学习一下               
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Android逆向实例笔记—记一第一次为Android程序写注册机