阿里ctf-2014 android 第三题——so动态调试及破解加固

通过做题来学习android逆向是一个比较不错的方法。

虽然有投机取巧的方法解决这题,但是对这个题目的深入研究,学习到了dex的动态调试、破解加固等技术。

要感谢各位android大牛对此题的详细介绍。我只是照着做了一遍,对有些不明确的地方自己演练了一下,并对android的so调试进行了一下简单的归纳。

从零开始进行android的so代码调试:

一、工具准备:

jre——java runtime enveroment    //下面的一切工具都要这个支持

jdk——java development kits    //需要用到里面的jdb程序

Android SDK Manager    //包括adb、ddms等各种工具,及各种SDK版本下载管理

Android AVD Manager    //用来建立各种SDK版本和相应API级别的android虚拟机

为了方便,将包含以上各种实用工具的目录如sdk\platform-tools,sdk\tools等路径加入Path环境变量。

新建一个虚拟机:见我的前一篇文章

我使用的是SDK 4.0.3、API level 15。

安装apk:adb install 3.apk

二、调试

这个还是参考大牛的文章。我这里只把我参照大牛文章后自己做的截图贴出来。

三、分析

因为不会使用idc脚本,所以我的dump内存方法是利用Edit菜单,导出rawdata。(看来是要好好学习一下IDA的高级功能了)

导出的dex,使用dex2jar转换成jar包,jd-gui查看,没有看到完整的内容。

使用dexdecompile完整反编译出了具体的内容。这个有可能是dump出的是odex格式的,dex2jar可能只支持dex格式。

直接找addJavascriptInterface函数,发现其导出的接口对象名是加密的。

当然就这个题目来说,接口对象名可以使用wooyun的那个链接来枚举出来,或者再次利用上面的方法调试出来。或者根本不用管直接找Toast.MakeText函数里面的参数,就是答案了。(见上图)

作为一个喜欢刨根问底的人,自然那个translate.so和decrypt_native函数也要研究一番。一方面是强化一下so的调试技术,另一个方面是锻炼一下ARM指令集的逆向能力。

最后感谢共享IDA6.6的大牛,全国人民的逆向水平又可以上一个新台阶了。

时间: 2024-10-10 22:07:49

阿里ctf-2014 android 第三题——so动态调试及破解加固的相关文章

USACO翻译:USACO 2014 DEC Silver三题

USACO 2014 DEC SILVER 一.题目概览 中文题目名称 回程 奶牛IDs 搬家 英文题目名称 piggyback cowids relocate 可执行文件名 piggyback cowids relocate 输入文件名 piggyback.in cowids.in relocate.in 输出文件名 piggyback.out cowids.out relocate.out 每个测试点时限 1秒 1秒 1秒 测试点数目 10 10 10 每个测试点分值 10 10 10 比较

USACO翻译:USACO 2014 MARCH Silver三题

USACO 2014 MARCH 一.题目概览 中文题目名称 农田灌溉 懒牛 牛叫 英文题目名称 irrigation lazy mooomoo 可执行文件名 irrigation lazy mooomoo 输入文件名 irrigation.in lazy.in mooomoo.in 输出文件名 irrigation.out lazy.out mooomoo.out 每个测试点时限 1秒 1秒 1秒 测试点数目 10 10 10 每个测试点分值 10 10 10 比较方式 全文比较 全文比较 全

USACO翻译:USACO 2014 US Open 三题

USACO 2014 US Open 一.题目概览 中文题目名称 牧场装饰 里程表 牛像展览 英文题目名称 decorate odometer fairphoto 可执行文件名 decorate odometer fairphoto 输入文件名 decorate.in odometer.in fairphoto.in 输出文件名 decorate.out odometer.out fairphoto.out 每个测试点时限 1秒 1秒 1秒 测试点数目 10 10 10 每个测试点分值 10 1

USACO翻译:USACO 2014 NOV Silver三题

USACO 2013 NOV SILVER 一.题目概览 中文题目名称 未有的奶牛 农场航线 贝西洗牌 英文题目名称 nocow vacation shuffle 可执行文件名 nocow vacation shuffle 输入文件名 nocow.in vacation.in shuffle.in 输出文件名 nocow.out vacation.out shuffle.out 每个测试点时限 1秒 1秒 1秒 测试点数目 10 10 10 每个测试点分值 10 10 10 比较方式 全文比较

NOIP 2014 day1第三题 飞扬的小鸟

题目描述:Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. 为了简化问题,我们对游戏规则进行了简化和改编: 1.  游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度). 2.  小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成. 3.  小鸟每个单位时间沿横坐标方向右移

2014马哥Linux0217中对0214三题的解答

前几天在做2014马哥Linux0214的作业的时候,发现其实这三题在0217中有解答,当然觉得马哥比自己写得好太多,所以忍不住要把马哥的答案贴出来,以供自己学习. 第一题:写一个脚本,用for循环实现显示/etc/init.d/functions./etc/rc.d/rc.sysinit./etc/fstab有多少行 #!/bin/bash for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do line

2014百度之星资格赛第三题

Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total Submission(s): 7837    Accepted Submission(s): 3350 Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Z

MSC阿里比赛第三题详解

第三题的分析过程 图/文 听鬼哥说故事 这道题想起来上次阿里的比赛的ali400.apk,虽然没参加,不过看到过网上的几篇分析文章. 第三题主要是壳子方面的问题,脱壳,再分析看看核心代码在java层还是so层即可. 文章写的详细了点,可以留给初学者参考使用. 详细还是查看文档吧,非常详细的调试过程和思路: 链接:http://pan.baidu.com/s/1bnpkWzl 密码:roii

2014 百度之星第三题

Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total Submission(s): 0    Accepted Submission(s): 0 Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包括了N个正整数,随后 Prometheus 将向 Zeus 发起