zoukankan      html  css  js  c++  java
  • 阿里移动安全挑战赛第二题研究小结

    1、取巧的方法

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

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

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

    root@android:/ # 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 !@Kx'@e
     57736 $@=P
     57756 $@@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的方法

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

        

    __________________________________________________________ shoobie do lang lang ^^
  • 相关阅读:
    mexHttpBinding协议 【发布元数据终结点】
    Revit API创建一个拷贝房间内对象布局命令
    Revit API判断是不是柱族模板
    Revit API封装一个通用函数“过名称找元素”
    Revit手工创建族
    Revit API根据参数类型取得参数的值
    Revit Family API 创建参考平面
    Revit Family API 添加参数与尺寸标注
    osgearth earth文件规范-符号参考
    Revit API创建几何实体Solid并找到与之相交的元素
  • 原文地址:https://www.cnblogs.com/annaivsu/p/4690070.html
Copyright © 2011-2022 走看看