阿里移动安全挑战赛第二题研究小结

1、取巧的方法

因为不太会看汇编指令,所以看了别人的解题思路后,自己想了个取巧的方法。o(╯□╰)o

之前学习的过程中学会了不少指令,例如strings,列出文件中所有字符串。突然想起来可以导出apk运行时so文件的内存(其实也是现学的- -‘),

验证了一次后被比较的字符串就存放在内存中了,于是使用dd命令将内容导入SD卡:

[email protected]:/ # dd if=/proc/2829/mem of=/sdcard/hah.mem bs=1 skip=1750364160 count=28672

对小白来说,查pid啊,dd命令的格式啊都是现查的。虽然很白痴,但是用几次就熟悉了,慢慢积累。

skip是so文件的起始位置,count是拷贝的blocks 个块,其实拷贝so文件的起始位置之差最好吧。

然后使用strings命令:

 strings -n 4 -o hah.mem | grep -v _ | grep -v .so | grep -v /

打印出的字符串如下,附带了所在位置:

  3577 jolin
  3702 free
  3707 dlsym
  3715 malloc
  4321 raise
  4702 abort
  4732 memcpy
 13754 u,bucuoo
 15477 Qffffff
 42120 aiyou,bucuoo
 42170 s!#L
 42226 9X,+(X=!)
 42247 cOXt
 42263 .6gq
 42356 LNAt
 42404 9HbB
 42420 BMAE
 42425 3:*8(-&
 42435 "@%%7)B
 52120 wojiushidaan
 52170 s!#L
 52226 9X,+(X=!)
 52247 cOXt
 52263 .6gq
 52356 LNAt
 52404 9HbB
 52420 BMAE
 52425 3:*8(-&
 52435 "@%%7)B
 57722 [email protected]‘@e
 57736 [email protected]=P
 57756 [email protected]@a%@
 61224 XO%@9
 61242 %@}5&@
 61252 %@$b%@
 61271 O%@|`%@
 61314 kill
 61321 %s %d
 61327 dlsym
 61335 fopen
 61343 fgets
 61351 sleep
 61357 getpid
 61366 strstr
 61375 sscanf
 61404 yaotong
 61414 sprintf
 61424 lrand48
 61434 mprotect
 61445 TracerPid
 61457 cacheflush
 61554 SecurityCheck Started...

当然,是出了答案才去研究的,所以过滤的“_”,“/”,“.so”字符串可能并不具有通用性。

用肉眼看,以及对密码内容可能性的猜解,即使挨个试也不算太耗时间。嗯嗯。就是这么简单粗暴。

2、貌似冠军给出的另类解法:

  参考:http://drops.wooyun.org/tips/5409

  修改so文件中的比较部分,利用之前的日志打印函数,将被比较的字符串打印出来。自己试了下,可行,也简单高效。

3、某师兄写的解题思路,绕过调试,然后改so文件。由于刚开始连ida如何attach 手机apk都不懂,后来attach上了因为反调试也没能正常加载。

所以只是看了看。日后学得更多了,再回头研究。

  参考:http://secauo.com/2015-Mobile-Security-Challenge-2.html

4、某同仁提供的思路,使用adbi框架,hook程序读取状态信息的操作函数fopen,这样就能正常attach到程序上。

其实对于小白来说,接受一种新的解题思路,比做出来题目还要有意义。所以自己编译了下adbi框架(幸好之前装了ndk编译环境T.T)。

基本学会了这个框架的使用方法,看了看原理,内联hook,虽然到现在还是云里雾里的,至少会简单使用了。

  因为至今还未attach到程序上过,也不知道attach之后如何操作、查看变量内容。但至少通过这一研究过程学习咯:

    ida attach程序的方法

    修改so文件的方法(使用010或ida)

    adbi框架的使用方法

    strings指令的使用

    dd命令的使用

    查看pid的方法

  虽然一直以来都没真正接触过逆向,相信慢慢的,也会越懂越多,越深入的。加油(^ω^)

    

时间: 2024-11-09 00:32:35

阿里移动安全挑战赛第二题研究小结的相关文章

阿里2014移动安全挑战赛第二题调试笔记

0x00前言 最近在学习安卓安全,看到52破解上面有分析2014年阿里安全挑战赛的第二个crackme的文章.勾起了我的回忆,那是我第一次参加安全比赛,在安卓安全也没有做多深入的学习.第一题比较简单,直接在logcat里面就可以看到输出的信息,只要将数字和文字的关系对应关系搞明白就可以解出来.第二题我就遇到困难了,虽然临时学会了怎么用ida调试so,但只要ida附加到进程上去,程序就退出了,屡试不爽.心里也有往反调试那边想,但是功力不足没有能把反调试干掉,最后止步于这一题.现在又看到基于这道题的

“金山杯2007逆向分析挑战赛”第一阶段第二题

注:题目来自于以下链接地址: http://www.pediy.com/kssd/ 目录:第13篇 论坛活动 \ 金山杯2007逆向分析挑战赛 \ 第一阶段 \ 第二题 \ 题目 \ [第一阶段 第二题] 题目描述: 己知是一个 PE 格式 EXE 文件,其三个(section)区块的数据文件依次如下:(详见附件)  _text,_rdata,_data 1. 将 _text, _rdata, _data合并成一个 EXE 文件,重建一个 PE 头,一些关键参数,如 EntryPoint,Imp

MSC阿里比赛第二题详解

Ali第二题相关思路 图/文 听鬼哥说故事 晚上8点等了会儿,大家都登录不上,于是带着群里的小伙伴愉快的去打游戏了,早上醒来发现可以正常登录了,就开始分析吧. 0x1:开始查看 安装到手机上测试,知道是通过输入一个密码去解开的,所以开始分析apk. 拿到第二题的apk,反编译查看主类: 详细查看文档吧,比较详细的: 链接:http://pan.baidu.com/s/1bnpkWzl 密码:roii

LeetCode 第二题,Median of Two Sorted Arrays

题目再现 There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)). 题意解析 题目意思是给两个大小为m,n的有序数组(m,n可能为0),要求找出这两个数组的中位数.并且程序的时间复杂度必须不能超过O(log(m+n)). 这道题的

智力题研究二

[IT思想类] 1. 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒?(中级) 2. 共有三类药,分别重1g,2g,3g,放到若干个瓶子中,现在能确定每个瓶子中只有其中一种药,且每瓶中的药片足够多,能只称一次就知道各个瓶子中都是盛的哪类药吗? 如果有4类药呢?5类呢?N类呢(N可数)?(高级) 如果是共有m个瓶子盛着n类药呢(m,n为正整数,药的质量各不相同但各种药的质量已知)?你能只称一次就知道每瓶的药是什么吗?

2016/1/12 第一题 输出 i 出现次数 第二题 用for循环和if条件句去除字符串中空格 第三题不用endwith 实现尾端字符查询

1 import java.util.Scanner; 2 3 4 public class Number { 5 6 private static Object i; 7 8 /* 9 *第一题 mingrikejijavabu中字符“i” 出现了几次,并将结果输出*/ 10 public static void main(String[] args) { 11 12 String r ="imingrikejijavabi"; 13 14 15 //第一种 截取 16 int a=

IE内存泄露与无法回收研究小结

IE内存泄露与无法回收研究小结 一.内存泄露    之前确实看了很多资料,但这位大哥的话可谓画龙点睛,不是奉承他,一下子就打通了我的任督二脉,请看: trarck 写道 IE下的内存泄露原因就是循环引用,IE的垃圾回收器不能很好处理这种引用. 会产生泄露的循环引用,只有孤立的DOM对象(脱离DOM树). 孤立的DOM对象间的循环引用,孤立的DOM对象与JS对象的循环引用. 为什么是孤立的DOM对象呢?在离开页面时(刷新,跳转)会删除整个DOM树,在DOM树上的对象也会被删除,就算有循环引用,此时

最后一周第二天训练赛之第二题

试题: B - B Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice SPOJ ICODER Description Mathews uses a brand new 16-bit instruction processor. (Yeah i am being sarcastic!). It has one register (say R) and it su

Learning Perl 第九章习题第二题

把输入文件中的所有Fred换成Larry, 不区分大小写. 知识点 1. 文本文件读写 2. 简单的正则替换 3. unless 的用法 4. $_ 的用法 Learning Perl 第九章习题第二题,布布扣,bubuko.com