吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4540|回复: 71
收起左侧

[Android CTF] 记一到简单的安卓逆向

  [复制链接]
cheng_sr 发表于 2021-11-11 22:26

几个常用函数的用法

substring(v1,v2)取 v1-v2的字符
m.equals(n) 比较m,n相同返回ture
str.charAt(1)表示从str中取第一个字符

程序用了三个函数进行加密

secodeStr()是flag的前半段

thirdstr()是flag的后半段

    private boolean getFlag(String arg8) {
        String v0 = first.firstStr(arg8);
        int v2 = 15;
        if(v0.length() < v2) {
            return 0;
        }

        int v1 = 5;
        if(v0.substring(0, v1).equals("flag{")) {
            if(!v0.substring(v0.length() - 1).equals("}")) {
            }
            else {
                String v1_1 = v0.substring(v1, v2);
                String v2_1 = v0.substring(v2, v0.length() - 1);
                if(!v1_1.equals(second.secondStr())) {
                    return 0;
                }
                else if(!third.thirdStr(v2_1)) {
                    return 0;
                }
                else {
                    return 1;
                }
            }
        }

firststr()函数是将字符串中的某些字符做一些替换

    public static String firstStr(String arg2) {
        return arg2.replace("B1", "dN").replace("_", "8").replace("!", "P").replace("rea", "hwl").replace('1', 'u').replace("m", "+");
    }

secondStr()函数是将字符串进行AES解密输出,直接用Java复写就可以,注意base64解密函数的用法

   public static String secondStr() {
        String v0 = "";
        String v1 = "9z2ukkD3Ztxhj+t/S1x1Eg==";
        byte[] v2 = "1234567890123456".getBytes();
        String v3 = "AES/ECB/NoPadding";
        String v4 = "AES";
        try {
            byte[] v5_1 = Base64.decode(v1, 0);
            SecretKeySpec v6 = new SecretKeySpec(v2, v4);
            Cipher v7 = Cipher.getInstance(v3);
            v7.init(2, ((Key)v6));
            return new String(v7.doFinal(v5_1)).replace(" ", ((CharSequence)v0));
        }
        catch(Exception v5) {
            v5.printStackTrace();
            return v0;
        }
    }

第三个函数对每个字符进行了判断,只有8个字符,手撕即可,得到的结果如下

v12=80
v10=84
v9=108
v8=119
v6=104
v5=57
v4=104

public static boolean thirdStr(String arg14) {
        int v1 = 8;
        if(arg14.length() != v1) {
            return 0;
        }

        int v0 = arg14.charAt(0);
        int v4 = arg14.charAt(1);
        int v5 = arg14.charAt(2);
        int v6 = arg14.charAt(3);
        int v7 = 4;
        int v8 = arg14.charAt(v7);
        int v9 = arg14.charAt(5);
        int v10 = arg14.charAt(6);
        int v12 = arg14.charAt(7);
        if(v0 % 8 == 7) {
            if(v0 % 9 != v1) {
            }
            else {
                int v11 = 100;
                if(v4 - 3 != v11) {
                    return 0;
                }
                else if((v5 ^ 93) != v11) {
                    return 0;
                }
                else if(v5 * 2 - 10 != v6) {
                    return 0;
                }
                else if(v8 + 1 != 120) {
                    return 0;
                }
                else if((v9 ^ v10) != 56) {
                    return 0;
                }
                else {
                    if(v9 - v10 == 24) {
                        if(v10 - v12 != v7) {
                        }
                        else if(v12 != 80) {
                            return 0;
                        }
                        else {
                            return 1;
                        }
                    }

                    return 0;
                }
            }
        }

第二个函数解除的字符串为  0dNlE8us8

第三个函数解除的字符串为  Gh9hwlTP

然后再用第一个函数进行替换  得到的字符串为 0B1lE_1s_Gh9reaT!

replace("B1", "dN").replace("_", "8").replace("!", "P").replace("rea", "hwl").replace('1', 'u').replace("m", "+")

image-20211011231825333

mobileEasy1.apk.zip

1.21 MB, 下载次数: 13, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 16威望 +1 吾爱币 +29 热心值 +13 收起 理由
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
宾鹏博 + 1 谢谢@Thanks!
123456bbk + 1 感谢您的宝贵建议,我们会努力争取做得更好!
wailijxy + 1 + 1 用心讨论,共获提升!
sivyer123 + 1 我很赞同!
chuohaogulang + 1 我很赞同!
f22 + 1 + 1 用心讨论,共获提升!
thams + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
crazy.wei + 1 我很赞同!
timeni + 1 我很赞同!
移情√似水 + 1 + 1 用心讨论,共获提升!
魔王王中王 + 1 + 1 热心回复!
hahs + 1 用心讨论,共获提升!
OYyunshen + 1 + 1 用心讨论,共获提升!
Lu2680 + 1 谢谢@Thanks!
fengxu + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| cheng_sr 发表于 2021-11-29 22:44
Amirliu 发表于 2021-11-12 12:02
大佬逆向从哪里学起比较好

从c语言学起,哈哈能看懂代码就行
sototo 发表于 2021-11-12 00:19
nc6 发表于 2021-11-12 00:35
低调灬厚道 发表于 2021-11-12 07:42
这是用来干什么的呢?
宾鹏博 发表于 2021-11-12 08:02
感谢楼主的无私奉献!受教了!
骑行吧 发表于 2021-11-12 08:16
感谢分享,但是看不懂
asdfgh2011 发表于 2021-11-12 08:17
程序挺简洁!
yanfengzhe 发表于 2021-11-12 08:19
没基础,看不懂
ITai 发表于 2021-11-12 08:21
感谢分享
peanut98 发表于 2021-11-12 08:22
哈哈,楼主加油,看好你
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表