最近暂时比较闲,看到ISCC的CTF比赛(http://www.iscc.org.cn/challenges#),时间还挺长的,就玩了玩android的题,感觉学到了不少~ 1.没有题目的题目 出题的哥哥说,没有描述,想办法弄吧 =。= 题目放在云盘:http://pan.baidu.com/s/1o61J9Zs   key:cibh 2.解题步骤 解压完发现是一个损坏的apk包,用zip命令修复: zip -FF test1.apk --ou...

burningcodes 原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.学习感受 经过这两个多月的Linux内核之旅,对Linux内核有了初步的认识。在这过程之中付出了很多,也收获了很多,尤其是写blog的方式,不仅能记录所学,还能加深对知识的理解。通过这门课,虽然只是认识了内核的很小一部分,但是最主要的是学会了学习源码的方...

今天看到一个CTF训练营,里面东西不错,很适合入门ctf:http://ctf.idf.cn/ 看到一题python自动提交表单的就顺手写了写:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=37 具体题目在这:http://ctf.idf.cn/game/pro/37。 先看看打开页面和提交表单的http请求,打开页面时用的是GET请求: 提交表单时用的是POST请求: 一开始做的时候没添加header部分...

现在市面上一些加固产商在对apk进行加固时基本上都加入了inotify反调试,这篇文章就讲解inotify的原理及如何用inotify来反调试。 1.inotify linux下inotify可以实现监控文件系统事件(打开,读写删除等),inotify最常见的api有以下几个: inotify_init:用于创建一个 inotify 实例的系统调用,并返回一个指向该实例的文件描述符。 inotify_add_watch:增加对文件或者目录的监控,并指定...

burningcodes 原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 在 从迷你型Linux内核理解进程调度的原理  一文中已经介绍过简化版的linux内核进程进程调度,这篇文章将深入linux源码进一步分析linux进程调度的原理。 1.进程调度的时机 进程调度主要有以下几个时机: 中断处理过程中:中断处理包括时钟中断、I/O中断、系...

burningcodes  原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.elf文件格式 目标文件主要分为三种类型: 可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。 可执行文件(Executable File) 包含适合于执行的一个程序。 共享目标文件(Shared Object Fi...

本文通过ptrace和检测/proc/pid/status实现JNI层的基本反调试,实现详细步骤如下: 1.新建一个类 Java package com.example.jnitest; public class JNIClass { static { System.loadLibrary("security"); } public static native void AntiDebug(); public static native int getValue(); } 12...

burningcodes  原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.进程管理中的关键数据结构 在进程管理中用到了几个关键的数据结构,这里先给出关键结构间的大致关系: 最主要的是三个数据结构: thread_union(linux-3.18.6/include/linux/sched.h#2241) thread_info(linux-3.18.6/arch/x86/include/asm/thread_info...

burningcodes  原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 上一篇文章中分析了系统调用的基本原理,通过跟踪源码将应用层系统调用和内核层的系统调用联系在了一起,回顾点这: 理解系统调用的原理(一)。 这篇文章在上文的基础上主要解决两个问题: 进一步分析system_call中做了哪些操作 中断处理与系统调用的区别和...

burningcodes 中科大软件学院 原创内容转载请注明出处 1.什么是RPC RPC(Remote Procedure Call,远程过程调用)是由 James White(1976) 提出的一种编程方式,现在已经广泛用在各种网络应用(比如分布式计算等)中。RPC允许客户端应用程序通过一些函数调用来实现一些功能,但是这些函数的实现是在远程服务器上,客户端发起请求,服务器端返回结果,看起来就像一个本地调用。...

burningcodes  原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.参数传递 系统调用也需要参数,但是它在内核态下的参数传递方式和用户态下不太一样,不是通过栈而是通过寄存器来存放参数(在64位系统中用户程序的参数也变为用寄存器存放),若参数个数不超过6个可以使用ebx, ecx,edx,esi,edi,ebp来存放(eax中存放系...

Linux内核课第三次作业。burningcodes + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.给内核加入调试信息 ubunte32位下要安装 libncurses5-dbg 库,直接apt-get安装即可。 打开图形化内核配置: make menuconfig 1 make menuconfig ...

android加载so库时会调用loadLibrary来完成加载操作。一般情况下,我们将JNI_OnLoad看作so库的入口,但是很多加壳过的so根本无法从JNI_OnLoad处开始分析,那JNI_OnLoad真的是so的入口吗,从android源码中找到答案如下: System.loadLibrary其实只是做了一个中转(System.loadLibrary): public static void loadLibrary(String lib...

手动脱壳步骤较多,时间久了容易忘记,遂将一次完整脱壳步骤记录于此。 1.工具准备 IDA6.6  android_server  adb jdb等 2.运行android_server 用adb连上真机,运行android_server。 ./android_server 1 ./android_server 打开android_server后,它会默认在手机端监听23946端口。...

在脱壳的时候经常见到在dvmDexFileOpenPartial这个函数下断点,但是为什么要在这里下断点呢,这篇文件就从源码的角度跟踪一下Dex的加载流程。 源码可以在这里查看:/dalvik/dexopt/OptMain.cpp OptMain中的main函数就是加载dex的最原始入口,是用c代码写成的native函数: int main(int argc, char* const argv[]) { set_process_name("dexo...

+
跳转到评论