Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

admin 2025年1月3日13:59:31评论10 views字数 1284阅读4分16秒阅读模式
  • 前言

最近在学习Android,借此机会,在网上找到一个练手的apk,CTF真的是网安各方面入手的一个好比赛,找个找个apk学学对so文件的静态分析。对于我而言,更多的是学习他的思路,以及说是IDA的用法等等

  • 分析

    拖入后发现首先会去调用类com.example.mobicrackndk.CrackMe

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

对代码进行分析后,发现有个onClick,要成功执行的话,需要调用到testFlag()这个方法,这个方法,根据前面声明可以发现是在native层,因此只能通过去分析so文件来查看了

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

    找到动态注册的函数表

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

跟踪进入400C,发现testFlag对应的函数是abcdefghijklmnAndroid 2015 - 海峡两岸 - 一个 APK,逆向试试吧

    进入伪代码中,发现会将输入的字符串转化为Char类型

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

    对代码进行分析,可以发现会对输入的长度进行判断,长度为 16即可进入下一步,接着是取前8位,与seed进行比对,seed的值为QflMn`fH,如果一样的话会去找类,获取方法名.....

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

  回到函数中,发现会去获取GetStaticFieldID,静态函数中string类型key的值,在jadx中全局搜索,发现key值为c7^WVHZ,  还用到了reverse函数,要倒过来.....

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

    然后一样会进行前面的循环

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

    总结整个对比过程:将输入的16字节字符串进行处理,然后使用两个8字节字符串与处理过后的输入数据进行对比,根据网上的WriteUp来看,运行结果是错误的,说是.init_array中有错误,查阅资料后发现,.iniy_array中初始化了一些信息,在程序段中进行跳转

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

    发现执行了一个__init_my函数,跟进

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

    跟进后发现,strlen获取seed的长度,从前面可以看出,strlen的长度为8,也就是说前8位的char值还要减3

Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

    摘自网上的writeup:

#include <stdio.h>#include <cstring>#include <iostream>using namespace std;int main(){  char temp[17] = "QflMn`fH,ZHVW^7c";  for(int i = 0; i < 16; i++)  {    if(i < 8)      temp[i] -= 3;    printf("%c", temp[i] + i);  }  return 0;}//  Pythons = "QflMn`fH,ZHVW^7c"flag = ""for idx,c in enumerate(s):    tmp = ord(c)    if idx<8:        tmp-=3    flag +=chr(tmp+idx)print flag
  • 总结

    不理解为啥最后这个因为初始化的原因,还需要-3,而不是+3,但是从此次静态分析中,学习到了调用的一些jndi结构体,对静态分析有进一步的了解,特别是对native层的分析,静态分析了解完后,希望下次能够对动态分析再次学习!!!需要练手的师傅们,可以点击公众号下方,加群后,拉进知识星球下载APK

原文始发于微信公众号(Undoubted Security):Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月3日13:59:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android 2015 - 海峡两岸 - 一个 APK,逆向试试吧https://cn-sec.com/archives/1834214.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息