zoukankan      html  css  js  c++  java
  • 安卓逆向神器_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
  • 相关阅读:
    控制器的设计与实现(五)
    综述(一)
    需求分析与数据库设计(二)
    对MVC架构简单概述设计(三)
    排球计分规则——记分员
    Java程序员必看书籍
    java面试必背知识点
    深入浅出UML
    从svn检出的项目缺少.project和.classpath文件解决办法
    打印函数 lodop
  • 原文地址:https://www.cnblogs.com/shenshuoyaoyouguang/p/13544607.html
Copyright © 2011-2022 走看看