首页 > 其他分享 >【Android 逆向】【攻防世界】Ph0en1x-100

【Android 逆向】【攻防世界】Ph0en1x-100

时间:2023-03-20 11:35:35浏览次数:30  
标签:Ph0en1x getFlag ph0en1x crackme key Android com 100 android

1. apk 安装到手机,老套路需要输入flag

2. jadx 打开apk,没有加壳

......
    public void onGoClick(View v) {
        String sInput = this.etFlag.getText().toString();
        if (getSecret(getFlag()).equals(getSecret(encrypt(sInput)))) {
            Toast.makeText(this, "Success", 1).show();
        } else {
            Toast.makeText(this, "Failed", 1).show();
        }
    }
......

从这里可以看出 getFlag() 应该是等于 encrypt(sInput) ,那么getSecret只是干扰项就不用看了
这两个方法是native方法, 先用objection 看一下 getFlag返回的是什么

com.ph0en1x.android_crackme on (xiaomi: 8.1.0) [usb] # android hooking watch class_method com.ph0en1x.andr
oid_crackme.MainActivity.getFlag --dump-return
(agent) Attempting to watch class com.ph0en1x.android_crackme.MainActivity and method getFlag.
(agent) Hooking com.ph0en1x.android_crackme.MainActivity.getFlag()
(agent) Registering job 0003115686069. Type: watch-method for: com.ph0en1x.android_crackme.MainActivity.getFlag                                                                                                     
com.ph0en1x.android_crackme on (xiaomi: 8.1.0) [usb] # (agent) [0003115686069] Called com.ph0en1x.android_crackme.MainActivity.getFlag()
(agent) [0003115686069] Return Value: "ek`fz@q2^x/t^fn0mF^6/^rb`qanqntfg^E`hq|"

# 那么知道getFlag 返回的是"ek`fz@q2^x/t^fn0mF^6/^rb`qanqntfg^E`hq|"

3. IDA 打开so 看看 encrypt

jstring __fastcall Java_com_ph0en1x_android_1crackme_MainActivity_encrypt(JNIEnv *env, jobject obj, jstring key)
{
  const char *key_chars; // r4
  const char *i; // r5

  key_chars = (*env)->GetStringUTFChars(env, key, 0);
  for ( i = key_chars; i - key_chars < strlen(key_chars); ++i )
    --*i;
  return (*env)->NewStringUTF(env, key_chars);
}

分析可知, 加密算法位相当于每个字符都减一的字符

4. 写出还原算法

key = 'ek`fz@q2^x/t^fn0mF^6/^rb`qanqntfg^E`hq|'

ret = ''
for char in key:
    tmp = ord(char)
    print(tmp)
    tmp += 1
    t_char = chr(tmp)
    ret += t_char

print(ret)

#日志
flag{Ar3_y0u_go1nG_70_scarborough_Fair}

成功获得flag

标签:Ph0en1x,getFlag,ph0en1x,crackme,key,Android,com,100,android
From: https://www.cnblogs.com/gradyblog/p/17235725.html

相关文章

  • android stdio对于xml中列表的展示
    我们需要用到一个控件,ListView如果愿意深度学习,可以观看下方的文章。(11条消息)Android最常用的控件ListView(详解)_androidlistview_撩得Android一次心动的博客-CSDN博......
  • [Android] Android版本 和 SDK / NDK / Qt 版本对应关系
    系统版本与SDK版本平台版本 API级别(SDK版本)版本代号发布时间Android1130R2020.9Android10.029 Q2019.8Android9.028Pie2018.8Android8.1 27 Oreo2017.12Android8.0......
  • android studio里设置 大括号占一行
    看了书《构建之法》里面有说到建议编程时的那个大括号占一行的,今天学android的时候突然想试试设置 一下,上网搜索了一下,方法如下图:  这样就可以了!!!......
  • Android控件TextProgressBar进度条上显文字
    Android系统的进度条控件默认的设计的不是很周全,比如没有包含文字的显示,那么如何在Android进度条控件上显示文字呢?来自Google内部的代码来了解下,主......
  • Android的Handler总结
    <一>Handler的定义:         主要接受子线程发送的数据,并用此数据配合主线程更新UI.         解释:当应用程序启动时,And......
  • Android AsyncTask异步任务的使用
    文章目录​​小结​​​​定义异步任务类​​​​开启异步任务​​​​参考​​小结可以使用androidAsyncTask来执行繁重的后台任务,以避免UI界面无响应,并可以实时在UI界面......
  • Android自定义长按事件
    Android系统自带了长按事件,setOnLongClickListener即可监听。但是有时候,你不希望用系统的长按事件,比如当希望长按的时间更长一点的时候。这时候就需要......
  • [ROC-RK3568-PC] [Firefly-Android] 10min带你了解Ethernet的使用
    ......
  • Android studio
    AndroidStudio是基于IntelliJIDEA的,我们都知道,IDEA是一个很方便很好用的IDE,其中有许多快捷键,但是太多快捷键我们也记不住。  其实,我们可以记住几个常用的快捷键就好......
  • Android studio2
    AndroidStudio提供了更加高级的布局文件编辑器,(1)我们在编写XML文件的时候,能实时查看布局文件。(2)能直接以拖控件的方式编辑布局文件。当然这些Eclipse也有。   只有这......