S3c_r3v3rs3r

HarmonyOS内存模块分析

内存初始化过程分析

前言 HMOS系统初始化过程主要在OsMain函数中,内存初始化的过程在OsMain函数中OsSysMemInit函数中完成。本文将作为《HarmonyOS内存管理——内存分配》文章的延续,对内存初始化过程进行分析。 正文 内核中Vaddr与Paddr的关系   由于HMOS代码仅开源了C代码,一些启动的汇编代码并没有开源,所以系统初始化时使用汇编对内存的设置操作没有办法通过源码的方式进行...

HarmonyOS内存模块分析

内存分配函数分析

前言 当前HarmonyOS开源的源码适用于小型IOT设备,从开源仓代码分析,内核使用的是LiteOS,但与现有的 开源LiteOS有着较大的不同。其中与开源版本LiteOS最大的不同之处当数内存管理模块。HarmonyOS支持Arm Cortex-A7 并且可以通过使能MMU对虚拟内存进行管理。该系列文章将对HarmonyOS内存模块进行详细的代码剖析讲解, 该篇文章的分析内容主要侧重与内...

浅谈内存检测工具与IOT系统

浅谈Kasan、Hwasan、Valgrind和MTE在IOT系统的应用

前言 在现有的IOT设备和系统中进行开发时踩内存是最容易产生的现象之一,同样有着很大的安全隐患。 与现在复杂操作系统Linux,Windows相比,rtos系统同常运行在资源相对受限的单板上。 本文将很对现有的内存检测技术进行简短的分析和介绍。 正文 Valgrind Memcheck Valgrind Memcheck应该是最早一款带有运行时内存检测的工具。Valgrind拥有一系列工...

pwntools使用入门教程

pwntools常用模块和函数

前言 PWN tools是 python2 平台上十分好用的二进制分析解决CTFpwn问题的工具。 package中集成的功能十分强大,包含程序交互,socket交互,进程调试,和ELF二进制文件分析等内容。 正文 安装pwntools $ apt-get update $ apt-get install python2.7 python-pip python-dev git libss...

ROP漏洞利用CTF实例

Return-Oriented Programming 漏洞CTF利用实例

前言 题目来自于pwnable.kr平台的horcruxes题目。 ROP全程是Return-oriented Programming,该漏洞是利用buffer overflow实现的攻击。 但是于传统的buffer overflow不同之处在于ROP攻击可以绕过NX保护机制。NX保护机制是 通过设置栈所处的内存为不可执行区域从而实现的shellcode不可在栈中被执行。 然而ROP是通...

GDB常用指令

Linux平台gdb调试程序常用指令

前言 gdb是linux平台必用的调试CLI软件,它不但支持程序员对可读源代码的 调试,同样也支持对程序的逆向汇编和动态调试。 gdb所支持的调试功能十分强大,通过help查看可支持的指令很多。 本片文章总结一些在逆向时常用的一些指令。 正文 1. 运行gdb加载程序 gdb [elf_filename] 2. 运行程序: run(r) [args] 注: [args]可接收多个参...

uaf漏洞原理浅析

Use after free漏洞原理浅析实例

前言 uaf 漏洞全称是use after free,free是指函数是在堆上动态分配空间后不再使用该改数据从而被回收。但是由于程序员的一些不适当的操作,会导致攻击者能够操控已经被释放的区域,从而执行一些byte codes。本文简述了uaf的基本原理,并使用一个简单的例子进行讲解。 正文 首先让我们看一下存在漏洞程序的源码: #include <err.h> #includ...

buffer overflow执行shellcode基本原理

Linux平台下经典buffer overflow原理介绍

前言 虽说针对buffer overflow的防御机制已经很多了,为了防止指针地址被控制, 操作系统强制开启了了ASLR,随机分布地址,使得攻击者难以控制返回地址。 与之类似的防止栈溢出的方法还有NX不可执行栈, 和Canary即在return address前放置一个随机的值,在callee返回之前caller之前先要检测该值是否 被修改。接下来就简单讲一讲最基本的栈溢出是怎么实现发生的...

使用Windbg&OllyDbg从头调试windows服务

Windows平台使用Windbg&OllyDbg从头调试服务

前言 在分析恶意软件时,恶意软件通常会创建服务,然后拉起服务删除自身文件,结束进程。很多关键的操作都在恶意软件新创建的服务之中,当然可以使用IDA进行静态的调试,但同时需要OD对服务进行动态的调试。 正文 对于绝大多数的服务可以直接attach到OD或者windbg上进行调试,但是如果想从启动就开始就调试该服务,这种attach的方法就不是很适用。网上有一些多年前的文档教程,但是在亲身尝试...

使用fuzzer实现anti-debugging的趣味实验 XD

Linux平台下使用fuzzer实现anti-debugging的实验

前言 在youtube和国外论坛上看到了一种比较有趣的使用fuzzing实现反调试的思路. 方法的原理很简单,通过循环修改源文件的一个byte使得该文件正常共能能够实现,但是能够对gdb和radare2这累调试软件进行一定程度上的干扰。通过实验之后发现,该方法不一定适合实战,但是可能会在对于反调试这一部分开拓新思路上面会有所帮助。 正文 首先使用C语言写一个类似于Crackme的简单...