iscc2016 mobile1-TurtleShell.apk解题过程

拿到程序先运行,简单的验证输入的flag正确与否。jeb加载apk文件

实在库文件里面验证,所以ida加载之,so文件是加密的,所以看不到关键验证函数,百度搜了下libhackme.so,出来这篇文章:

http://burningcodes.net/so%E5%8A%A0%E5%9B%BA%E7%B3%BB%E5%88%97%E4%B9%8B%E8%BF%90%E8%A1%8C%E6%97%B6%E8%A7%A3%E5%AF%86/

看了下调用的函数,可以确定这个so文件就是文章里面所述的加解密方法,加密修改elf头的e_entry和e_shoff字段分别为要加密section的偏移和大小,然后那个section简单的移位操作,运行时解密通过elf头文件的这两个值定位待解密section,然后恢复section到内存中,所以通过dump程序运行时加载的so文件就能得到解密和的so。具体过程如下:

然后就可以分析so文件的关键函数了:

dump出的文件拿到ida加载可以看到关键函数crackme,里面调用了bingmeiyoushenmeluanyong函数(然而是有用的),算法很简单,前16位已经给出,后16位替换下就行。

时间: 2024-11-04 17:51:26

iscc2016 mobile1-TurtleShell.apk解题过程的相关文章

深度探究apk安装过程

一.先验知识 0.PcakageaManagerService版本变化 1.概述 2.PackageManagerService服务启动流程 3. PackageManagerService入口 二.四种安装方式 1.系统应用安装2.网络下载应用安装3. ADB工具安装 4.第三方应用安装 三.总结 概述 1.1概述 众所周知,Android应用最终是打包成.apk格式(其实就是一个压缩包),然后安装至手机并运行的.APK即Android Package的缩写. Android系统在启动的过程中

Android学习--apk打包过程

1. 使用aapt工具,给所有的res目录下的资源文件生成对应的id,id会被放进R.java文件中 2. JavaC编译器,将所有Java文件转换为Class文件,其中,内部类会分别生成.class文件,命名格式为MainActivity$内部类.class R$String.class等 3. 将class中的公共常量提取出来,生成dex文件 4. aapt将生成的menifest+dex+resource+程序签名打包成zip格式,其实就是apk格式.说明,META-INF是程序签名信息

Android APK安装过程学习笔记

1.什么是APK APK,即Android Package,Android安装包.不同平台的安装文件格式都不同,类似于Windows的安装包是二进制的exe格式,Mac的安装包是dmg格式.APK可以再Android上执行安装,APK的本质是一个Zip压缩包,只是后缀被修改为apk,其中打包了源代码编译出的class.dex.一些图片视屏资源文件和一些Native库文件.APK文件与Zip文件最大的一个不同是APK包含签名文件,用于保证安装包安全不被修改. 2.什么是DEX文件和ODEX文件 J

2019 浙大校赛解题过程及题解

解题过程  开场lfw看J,被孪生素数误导,没有看出水题的本质,byf及时提醒后,lfw忘记N=1的情况要特判.之后byf写E,忘记开long long,wa+1.Shl看出A题思路,告诉lfw开始写A,lfw忘记先排序,WA+1.byf看出B题做法,lfw写java过掉,shl与lfw讨论G,lfw开始写G,byf看出C可以hash暴力,lfwG忘记清空一个值,导致特殊情况会加两次,wa+1,byf使用mp作hash,带logn常数TLE,随后转成long long的hash值,使用unord

Android apk打包过程

概述 android打包过程,下面这张图取自Android开发权威指南,非常清晰. 整个过程使用的工具有 名称 功能介绍 在操作系统中的路径 aapt Android资源打包工具 ${ANDROID_SDK_HOME}/platform-tools/appt aidl Android接口描述语言转化为.java文件的工具 ${ANDROID_SDK_HOME}/platform-tools/aidl javac Java Compiler ${JDK_HOME}/javac或/usr/bin/j

Android APK安装过程介绍

课题路径:从Myfile中点击应用进行安装,到安装完成,过程分析 思想方法:在研究PreloadInstaller的时候我们直接从整个apk的文件结构入手,由整体到部分的分析:但现在整个PMS非常庞大.我们采取抓住某个功能点分析,由点到面,直到掌控全部 目录现象    1log分析    3PackageInstaller 功能的提取    4PackageInstaller/AndroidManifest.xml    4PackageInstallerActivity.java    4In

Android系统启动时的apk安装过程

1.前言 在Android系统启动的过程中,系统会通过PackageManagerService来扫描特定的目录,以便可以对保存在里面的apk进行安装.PackageManagerService主要做两件事情: - 解析这个apk的配置文件AndroidManifest.xml以便获得它的安装信息 - 为这个apk分配Linux用户ID和用户组ID以便apk在系统中可以获取到合适的运行权限 下面我们来开始分析PackageManagerService是如何安装apk并执行上面两件事情的 2.源码

从Android源码到apk——apk打包过程

Android程序是怎么从源码变成可以安装使用的apk的 原文链接http://sparkyuan.github.io/2016/04/01/从源码到APK/ ,转载请注明出处 流程 官方版 详细版 上面就是一个关于构建过程的一个典型的流程图. aapt(Android Asset Packaging Tool)给你的Activity提供所需的资源文件,如 AndroidManifest.xml,XML文件,并编译它们.同时产生R.java文件,使你可以在java代码中引用这些资源. aidl工

android Apk打包过程概述_android是如何打包apk的

最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程. 流程概述: 1.打包资源文件,生成R.java文件 2.处理aidl文件,生成相应java 文件 3.编译工程源代码,生成相应class 文件 4.转换所有class文件,生成classes.dex文件 5.打包生成apk 6.对apk文件进行签名 7.对签名后的apk文件进行对其处理 打包过程使用的工具 名称 功能介绍 在操作系统中的