非Xposed版修正微信揺栓


本文は前の文章に続く
微信6.6.7.7バージョンロッキングプラグ解読構想(多くの図)
本文はjava転smali文法の詳細な過程を貼り付けないで、ただ構想を話します
 

 
 
Xposedバージョン すべての携帯電話環境がサポートされているわけではないので、直接逆コンパイルコードを微信apkに書き込んでみたいと思っています.そうすれば、ユーザーは複雑な環境を構成する必要はありません.
 
最初のターゲット
効果は図のようだ
 
どうしますか.簡単か? このボタンはクリックイベントがどこにあるかをトリガーすればよい.
 
クリック処理はHomeUI$25というクラスで見られます
 
では、まず弾窓関数mを書きます.show関数 HomeUI$25というクラスを埋め込む
 
public boolean m_show(View view) {
    try {
        //LauncherUI.m_instance_LauncherUI         
        AlertDialog.Builder builder = new AlertDialog.Builder(LauncherUI.m_instance_LauncherUI);
        builder.setTitle("        ");
        String options[] = new String[]{"   ", "    ", "    ", "   ", "    "};

        builder.setItems(options, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
              

            }
        });

        builder.setNegativeButton("  ", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });


        builder.show();
    } catch (Exception e) {
        Log.e("FMY=================", "m_show: ");
        e.printStackTrace();
    }
    return true;
}

 
特に注意したいのは、上記のjava転送smaliが匿名クラスファイルを生成するので、逆コンパイルの微信に一括してコピーしてください.
 
上記の方法は、逆コンパイル後の微信に埋め込まれています.HomeUI$25というクラスに直接埋め込むと、ユーザーが微信インタフェースの十字をクリックして元のonclick関数を実行すると、onclick関数でm_を呼び出します.show()でいいです.(もちろんここにはsmaliコードが埋め込まれていますが、前の文章でどうしたのかを話しました)
コンテキストオブジェクトのインスタンスをどのように取得するかという問題を解決します.窓コードをパラメータとして使用する必要があるからです.
解決策は、簡単です.ViewにはgetContentという関数があります.そして、この方法で成功するとは限らないことに気づきます.ここでは理由の説明はしません.
私たちは直接微信インタフェースのActivityインタフェースのオブジェクトの例を持っています.(Activityもコンテキストオブジェクトのサブクラスです)
 
まず微信インタフェースを開き、コマンドラインに入力します. adb shell dumpsys acitivity top
 
 
私たちがここで採用した思想は以下の通りである.
LanucherUiというクラスでpublicを作成する静的インスタンスは自分を指し、
擬似コードは以下の通りです(マイクロソースsmaliコードを自分で修正してください)
 
 
この时、弾窓コードの基本的な考え方は绍介し终わった.私达は弾窓を完璧にして、ユーザーが弾窓の制御撒子ボタンをクリックする时、私达は弾窓で1から6の选択インターフェースを选んで、目的はユーザーに栓の点数を选ばせることである.
 
ここに直接コードを貼りましょう
class HomeUI$25 {

    
    public void onClick(View view){
        /**
         * ************************
         * **********************
         *                
         * *********************
         * **********************
         */
        m_show(view);//  
        /**
         * ************************
         * **********************
         *                
         * *********************
         * **********************
         */
    }
  
    public boolean m_show(View view) {
        try {
            AlertDialog.Builder builder = new AlertDialog.Builder(LauncherUI.m_instance_LauncherUI);
            builder.setTitle("        ");
            String options[] = new String[]{"   ", "    ", "    ", "   ", "    "};

            builder.setItems(options, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    switch (which) {
                        case 1:
                            dialog.dismiss();
                            ctl_dice();
                            break;
                    }

                }
            });

            builder.setNegativeButton("  ", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });


            builder.show();
        } catch (Exception e) {
            Log.e("FMY=================", "m_show: ");
            e.printStackTrace();
        }
        return true;
    }

    public void ctl_dice() {
        try {
            AlertDialog.Builder builder = new AlertDialog.Builder(LauncherUI.m_instance_LauncherUI);
            builder.setTitle("    ");
            String options[] = new String[]{"1", "2", "3", "4", "5", "6"};
            builder.setItems(options, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    // bi  dice         .                       0-5   
                    //     .               int    dice.         
                    bi.dice = which;
                    Toast.makeText(LauncherUI.m_instance_LauncherUI, "      ", Toast.LENGTH_SHORT).show();
                }
            });

            builder.show();
        } catch (Exception e) {
            Log.e("FMY=================", "m_show: ");
            e.printStackTrace();
        }

    }


}

 
もう一つの考えはどのように完璧にコントロールするかですか?
上の行のコードは次のとおりです.
 
 bi.dice = which;

 
前の文章はbiクラスの中にeF関数があることを説明して、私達はeF関数で栓の点数を返します.
ここでは、このクラスでdiceという変数を作成し、eFを呼び出すと直接diceを結果として返します(もちろん、eFで現在の関数呼び出しがプラグ点数を生成するためであるかどうかを判断する必要があります.この関数は他の目的のために呼び出される可能性があります).
 
 
以上が全体の考え方である.逆コンパイル会apkでよい,非xposed実現点数制御を実現する
今ネット上でどんなvipバージョンの微信を売っています 原理もそうです.もちろん、微信アカウントのパスワード傍受機能を追加することもできますので、気をつけてください.
放すつもりはない