1. 程式人生 > 實用技巧 >安卓逆向神器_JEB的配置

安卓逆向神器_JEB的配置

JEB

吾愛愛盤 jeb3.0 下載地址

java 環境

jeb 需要靠 java 環境才能執行

直接安裝,

安裝成功後,命令列可以顯示這個(預設安裝, 直接下一步下一步)

因為環境變數沒有配置,所以 jdk 無法正常使用, 但是 jeb 並不需要 jdk ,所以配不配置 都一樣
然後就可以 啟動 jeb 和 apk 愉快的玩耍了

配置過程


下載下來,解壓後,會有一個這樣的資料夾 ,
windows下 執行jeb_wincon.bat 開始進行安裝, 命令列視窗輸入密碼 ilbtcdnwiuypbzeo 即可

開啟軟體後, 會提示 未註冊, 讓你去註冊, 找到 License Data

執行附件 工具,
jebkeygen.exe , 輸入 Lincense Data , 回車獲得 sn
將 sn 輸入jeb 註冊視窗
大功告成

吾愛破解的這個是 中文版的, 感謝各位大神的無私貢獻

簡單 apk 逆向演示, 以及 jeb 基本操作

buuoj_findit

題目地址
開啟 jeb , 將下載下來的 apk 檔案 拖動到 jeb 裡面

直接點選確定, 反正我也看不懂

開啟後的樣子

尋找按鈕點選事件,

右鍵解析, 將 什麼什麼語言 轉換成 java 語言

package com.example.findit;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;
import android.view.View.OnClickListener;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {
    @Override  // android.support.v7.app.ActionBarActivity
    protected void onCreate(Bundle arg8) {
        super.onCreate(arg8);
        this.setContentView(0x7F030018);  // layout:activity_main
        ((Button)this.findViewById(0x7F05003D)).setOnClickListener(new View.OnClickListener() {  // id:widget3
            @Override  // android.view.View$OnClickListener
            public void onClick(View arg13) {
                char[] x = new char[17];
                char[] y = new char[38];
                int i;
                for(i = 0; i < 17; ++i) {
                    if(new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] < 73 && new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] >= 65 || new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] < 105 && new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] >= 97) {
                        x[i] = (char)(new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] + 18);
                    }
                    else if(new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] >= 65 && new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] <= 90 || new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] >= 97 && new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] <= 0x7A) {
                        x[i] = (char)(new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] - 8);
                    }
                    else {
                        x[i] = new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i];
                    }
                }

                if(String.valueOf(x).equals(((EditText)this.findViewById(0x7F05003E)).getText().toString())) {  // id:widget2
                    int v0_1;
                    for(v0_1 = 0; v0_1 < 38; ++v0_1) {
                        if(new char[]{'p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5', '2', '6', '2', '0', '3', '3', 'l', '4', 'm', '4', '9', 'l', 'n', 'p', '7', 'p', '9', 'm', 'n', 'k', '2', '8', 'k', '7', '5', '}'}[v0_1] >= 65 && new char[]{'p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5', '2', '6', '2', '0', '3', '3', 'l', '4', 'm', '4', '9', 'l', 'n', 'p', '7', 'p', '9', 'm', 'n', 'k', '2', '8', 'k', '7', '5', '}'}[v0_1] <= 90 || new char[]{'p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5', '2', '6', '2', '0', '3', '3', 'l', '4', 'm', '4', '9', 'l', 'n', 'p', '7', 'p', '9', 'm', 'n', 'k', '2', '8', 'k', '7', '5', '}'}[v0_1] >= 97 && new char[]{'p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5', '2', '6', '2', '0', '3', '3', 'l', '4', 'm', '4', '9', 'l', 'n', 'p', '7', 'p', '9', 'm', 'n', 'k', '2', '8', 'k', '7', '5', '}'}[v0_1] <= 0x7A) {
                            y[v0_1] = (char)(new char[]{'p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5', '2', '6', '2', '0', '3', '3', 'l', '4', 'm', '4', '9', 'l', 'n', 'p', '7', 'p', '9', 'm', 'n', 'k', '2', '8', 'k', '7', '5', '}'}[v0_1] + 16);
                            if(y[v0_1] > 90 && y[v0_1] < 97 || y[v0_1] >= 0x7A) {
                                y[v0_1] = (char)(y[v0_1] - 26);
                            }
                        }
                        else {
                            y[v0_1] = new char[]{'p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5', '2', '6', '2', '0', '3', '3', 'l', '4', 'm', '4', '9', 'l', 'n', 'p', '7', 'p', '9', 'm', 'n', 'k', '2', '8', 'k', '7', '5', '}'}[v0_1];
                        }
                    }

                    ((TextView)this.findViewById(0x7F05003F)).setText(String.valueOf(y));  // id:widget1
                    return;
                }

                ((TextView)this.findViewById(0x7F05003F)).setText("答案錯了腫麼辦。。。不給你又不好意思。。。哎呀好糾結啊~~~");  // id:widget1
            }
        });
    }

    @Override  // android.app.Activity
    public boolean onOptionsItemSelected(MenuItem arg3) {
        return arg3.getItemId() == 0x7F050040 ? true : super.onOptionsItemSelected(arg3);  // id:action_settings
    }
}

看了 大佬的 wp 之後, 發現是 凱撒加密 , 這就好辦了

編寫 python 指令碼解密

#coding = utf-8
x = ['p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5', '2', '6', '2', '0', '3', '3', 'l', '4', 'm', '4', '9', 'l', 'n', 'p', '7', 'p', '9', 'm', 'n', 'k', '2', '8', 'k', '7', '5', '}']
s = "".join(x)
# print(s)
# 凱撒加密的特徵
#pvkq{m164675262033l4m49lnp7p9mnk28k75}


# print((ord(s[0]) - ord("f")))   # 拿到key

def ksdecode(s,key):
    m = 'abcdefghijklmnopqrstuvwxyz'
    flag = ""
    for i in s:
        if i.isalpha():     #當是字母時
            n = m.find(i)   #尋找 i 的下標
            i = m[n - key]  # i 的下標 - key  才是真正的字母
        flag += i
    return flag

print(ksdecode(s,ord(s[0]) - ord("f")))

# flag{c164675262033b4c49bdf7f9cda28a75}

總結

  1. java 語言 是 玩轉 jeb 的關鍵, 我也學了幾天的 java
  2. 我也想擁有快速識別通用加密演算法的能力
  3. jeb 只是需要 java 執行環境, 而不需要 jdk