XCTF 安卓逆向-RemerOther app1 反编译工具使用学习

最近事情比较多,很(其)久(实)没(是)更(自)新(已)了(懒) shoudongdoge!
正好稍微学了点安卓反编译的知识,自己动手操作下。

目录

工具

RemerOther

app1


工具

夜神模拟器

AndroidKiller ⭐⭐⭐

jeb-1.5反编译工具 ⭐⭐⭐⭐⭐

RemerOther

下载拖入到夜神模拟器

 

其实点击这跳出了一个MD5 直接解密就能获取到一部分flag了

AndroidKiller 打开

首先查看xml配置文件 通过查看 activity 配置文件即可发现首页面代码

com.droider.crackme0201.MainActivity

 点击圈起来的jar按钮 即可将 smali语言转化为我们常见的java语言。

 

 和这个MD5文件有关 在res文件夹找到

 MD5 解密为:YOU_KNOW_

这个是不对的,实际上还需要加上一个ANDROID(需要点脑洞,不过我都是看write up的哈)

YOU_KNOW_ANDROID 

app1

同样操作 ,不过这次用的是jeb 功能其实更强

模拟器情况

 反编译  继续查看xml文件 得到首页面(activity)类

查看

<activity android:name="com.example.yaphetshan.tencentgreat.MainActivity">

ps 在jeb 按teb键查看源码

关键代码

 public void onClick(View v) {
                try {
                    String v1 = MainActivity.this.text.getText().toString();
                    PackageInfo v2 = MainActivity.this.getPackageManager().getPackageInfo("com.example.yaphetshan.tencentgreat", 
                            16384);
                    String v3 = v2.versionName;
                    int v4 = v2.versionCode;
                    int v0 = 0;
                    while(v0 < v1.length()) {
                        if(v0 >= v3.length()) {
                            break;
                        }

                        if(v1.charAt(v0) != (v3.charAt(v0) ^ v4)) {
                            Toast.makeText(MainActivity.this, "再接再厉,加油~", 1).show();
                            return;
                        }
                        else {
                            ++v0;
                            continue;
                        }
                    }

                    if(v1.length() != v3.length()) {
                        goto label_39;
                    }

                    Toast.makeText(MainActivity.this, "恭喜开启闯关之门!", 1).show();
                    return;
                }
                catch(PackageManager$NameNotFoundException v5) {
                }

 我自己还是比较菜,还是花了一点时间才看懂了代码,简单点说:

  1. PackageInfo 是为了获取 一个Andriod的版本信息 赋值给v2
  2. 然后 v3,v4 分别为这个版本信息的2个参数 versionName versionCode
  3. 之后让 v3 和v4 两者异或 与我们输入的值(v1)进行比较。

在config文件夹中查看到了versionName versionCode

 大佬的脚本,(我自己练了一下,还是没大佬写得好 ovo)

ss='X<cP[?PHNB<P?aj'
flag=''
for i in ss:
    flag+=chr(ord(i)^15)
print(flag)

 W3l_T0_GAM3_0ne

 


 总结,因为自己菜,所以学到的东西才多。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值