Android逆向實例筆記—記一第一次爲Android程序寫註冊機(短信轟炸機)


這個app也是在吾愛上看到的,本來很簡單的一個app,直接搜驗證碼,一個爆破就OK了。但是看到下面裏面評論的wnagzihxain大神說了句,爆破就不好玩了。於是細想一下,我還沒弄過註冊機呢。簡單對這個app進行說明和寫一個註冊機app吧!


廢話不多說,直接看提示搜請輸入6位驗證碼,一個結果,跳過來。




不浪費時間,看看僞代碼吧。這裏只上一些重要的代碼

  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

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做爲註冊機。

上代碼

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
            }
        }

    }



後面就不多說了,有興趣的同學可以自己動手去分析一下算法,然後寫個註冊機,這樣提高會很快!

樣本 :https://yunpan.cn/ck9ug7YCVQddB  訪問密碼 ec55

註冊機:https://yunpan.cn/ck9ufqMBGnsVS  訪問密碼 8cf3


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章