tinytracer

  • 实践
    • CTF
    • 项目实践
  • 技术
    • C++
    • 逆向与汇编
    • 区块链安全
  • 探索
    • OWASP汉化
    • SQL
    • Kali
逆向与汇编
逆向与汇编

基于异常的反调试实践

前言 最近在学习软件调试相关的内容,顺便举一反三找找反调试以及反反调试的相关方法。逛着逛着找到了这个网站:2种基于异常机制的反调试方法,虽然一看就知道不知道从哪转载的,而且搜索引擎有很多这篇文章一模一样的重复结果,但是代码倒是挺有趣的,研究玩玩。 第一题 第一段代码是基于IsDebugPresent()类似实现的反调试,代码如下 #include <windows.h> int AntiDebugInSEH(EXCEPTION_POINTERS* ExceptionInfo) { DWORD state…

2019年2月3日 1条评论 2230点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

硬件断点探幽

硬件断点 调试寄存器 IA-32处理器定义了8个调试寄存器,分别是DR0\~DR7。在32位模式下,它们都是32位的;在64位模式下为64位。 在32位模式下,DR4与DR5是保留的,当调试扩展(DE)功能被启用,即CR4的DE位为1时,任何对DR4与DR5的引用都会导致一个非法指令异常;当DE被禁用时,DR4和DR5分别是DR6与DR7的别名寄存器,等价于访问后者。寄存器的内容图示如下: DR0\~DR3为调试地址寄存器,长度与CPU位数一致 DR6为调试状态寄存器,64位时高32位保留未用 DR7为32位的调试…

2019年1月31日 0条评论 1979点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

软件断点探幽

软件断点 x86系列的处理器支持一条专门用来调试指令INT 3,也即是通常所说的“软件断点”,这条指令的目的是使CPU中断到调试器,以供调试者对执行现场进行分析。调试程序时,可以在可能有问题的地方插入INT 3指令。 INT 3 无论是Visual C++亦或是GCC都支持内联汇编指令,VC++示例如下: #include<iostream> int main() { int a = 0; __asm INT 3; std::cout << a << std::endl; std…

2019年1月29日 0条评论 2081点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

Windows x64 内存dump分析

前言 今天上午去上课前在虚拟机配置生产环境,没锁屏离开了宿舍。由于插着电源,电脑并不会自动进入休眠超时锁定账户。但是下课回来发现需要登陆——电脑重启了。重启的原因是什么?~~不会是被人日了吧~~,以后该如何避免这种蛋疼的情况呢? 信息收集 日志信息获取 系统的重启、程序的执行、警告等信息都会被系统日志所记录,先去系统日志看看情况。由于重启发生于上课时间,所以日志的记录时间区间很好确定,大约一个半小时。首先设置下筛选器,将该时间段内来自系统事件的信息呈现出来。 在事件列表中,确定了计算机关闭的时间,且计算机非正常关闭…

2018年12月20日 0条评论 2648点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

ROOTKIT初探——进程隐藏与混淆

预备知识请参阅RootKit 初探——文件隐藏与混淆 原理分析 概述 本次Rootkit教程 核心是Hook系统获取进程信息的函数ZwQuerySystemInformation。该函数未公开实现,官方文档所信息十分有限。通过RootKit修改系统调用该函数的函数指针,在获取进程信息时进行截流和修改。嗯,核心思想和上一期一样简单。 入口 ZwQuerySystemInformation的函数原型为: NTSTATUS NewZwQuerySystemInformation ( IN ULONG SystemInfo…

2018年10月22日 0条评论 1870点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

RootKit 初探——文件隐藏与混淆

RootKit 初探——文件隐藏与混淆 什么是Rootkit? Rootkit一词最早出现在Unix系统上。系统入侵者为了获取系统管理员级的root权限,或者为了清除被系统记录的入侵痕迹,会重新汇编一些软件工具(术语称为kit),例如ps、netstat、w、passwd等等,这些软件即称作Rootkit。其后类似的入侵技术或概念在其他的操作系统上也被发展出来,主要是文件、进程、系统记录的隐藏技术,以及网络数据包、键盘输入的拦截窃听技术等,许多木马程序都使用了这些技术,因此木马程序也可视为Rootkit的一种。 在…

2018年7月23日 0条评论 1718点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

C++与汇编——段与寄存器

段与寻址 段是在程序中专门定义的一个区域,它是一个包括代码、数据以及堆栈的区域。比如,用ida打开一个exe程序,在反汇编窗口中可以看到程序分成了如下几段: 0x00000----------- 代码段 0x10000----------- 数据段 0x20000----------- 堆栈段 0x26000----------- 段是从小段边界,即能够被16除尽的单元开始的。因此,当一条指令往一个段寄存器装入段地址时,会自动移去最右边的4位。你可以定义任何数据的段,想要访问特定的段,只需要改变适当段寄存器中的地址…

2018年7月19日 0条评论 2043点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

C++与汇编——四则运算

表达式求值 算数运算和赋值 算术运算又称四则运算,计算机中的四则运算和数学上的有些不同。 赋值 赋值运算类似于数学中的“等于”,是将一个内存空间中的数据传递到另一个内存空间中。该操作必须经过处理器访问并中转,以实现两个单元的数据传输。 在C++中,算数运算与其他传递计算结果的代码组合后才被视为一条有效的语句,因为只进行计算而没有传递结果的运算不会对程序结果产生任何影响,编译器将忽略该语句。如 6+4; int tmp = 0; 对应的汇编语句为 00401020 mov dword ptr [epb-4], 0 加…

2018年7月11日 0条评论 2253点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

IDA基本介绍

简介 交互式反汇编器专业版(Interactive Disassembler Professional),简称为IDA,由Hex-Rays公司推广和销售。就其本质而言,IDA是一种递归下降反汇编器,但效率相比普通的反汇编器要高得多,原因如下 IDA应用大量启发式代码来识别递归下降过程中遗漏的代码。IDA在区分数据与代码的同时还会设法确定数据的类型。IDA的目标之一是呈现尽可能接近源代码的代码。 IDA不仅使用数据类型信息,而且通过派生的变量和函数名称来尽其所能地注释生成的反汇编代码。 IDA的反盗版策略 水印 每一…

2018年4月26日 0条评论 1945点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

逆向与反汇编工具

分类工具 通常,在初次遇到一个不熟悉的文件时,不要通过文件的扩展名来确定文件的类型。可以通过以下几个工具来判断文件类型 file file命令是一个标准的实用工具,大多数*NIX风格的操作系统和Windows下的Cygwin或MinGw工具都带有该工具。 file通过两种方式来判断文件类型 通过检查文件中的某些特定字段来确认文件类型,如#!bin/bash识别为脚本文件,<html>识别为HTML文档 通过判断文件的结构是否符合某种已知的文件格式。多数情况下,它会搜索某些文件类型特有的标签值。 file…

2018年4月25日 0条评论 1779点热度 0人点赞 Chernobyl 阅读全文
12

COPYRIGHT © 2024 tinytracer. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang