随笔分类 -  逆向学习

摘要:思路 在ring3: 我们需要注册和卸载驱动 找到User32的基址,传给0环 编写shellcode注入进user32 打印使用Messagebox的程序 在ring0: 与3环通信,并接受user32的地址,修改其PTE与PDE的属性 修改完后给3环发送信息,告知ring 3可以开始inline 阅读全文
posted @ 2021-02-08 16:19 PYozo_free 阅读(152) 评论(0) 推荐(0)
摘要:内存搜索 特征码搜索 阅读全文
posted @ 2021-02-06 13:39 PYozo_free 阅读(37) 评论(0) 推荐(0)
摘要:前缀指令 一、LOCK和REPEAT指令 Lock F0h repne/repnz F2h rep/repz F3h 二、段前缀指令 CS:2Eh SS:36h DS:3Eh ES:26h FS:64h GS:65h 三、操作数宽度前缀指令与地址宽度前缀指令 66h 67h 操作数宽度前缀指令主要是 阅读全文
posted @ 2021-02-03 12:50 PYozo_free 阅读(124) 评论(0) 推荐(0)
摘要:真的看的我自闭,太绕了太绕了太绕了,还没有全部看完目前,准备画一个详细的流程图 阅读全文
posted @ 2021-02-02 18:01 PYozo_free 阅读(40) 评论(0) 推荐(0)
摘要:前言 int3和int 0的流程如果只是简单分析其实相当类似,唯一的差别就是int 3的dec操作差点给我整蒙了,所以我们先分析int 3 再次之前先来了解一个结构体 _EXCEPTION_RECORD kd> dt _EXCEPTION_RECORD ntdll!_EXCEPTION_RECORD 阅读全文
posted @ 2021-02-01 15:32 PYozo_free 阅读(464) 评论(0) 推荐(0)
摘要:wherekey 废话 看懂了wp后,感觉逆向真的很吃真相,在比赛的时候还不知道有sig签名这玩意,后面又看到一个静态链接的题目,发现有sig文件,然后在跟着天璇的wp逆了一遍后,发现自己的不足,需要每天都补一点网络编程了 流程分析 首先用ida静态分析一下,发现输出"Please enter th 阅读全文
posted @ 2021-01-28 23:42 PYozo_free 阅读(209) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/from-zero/p/13300396.html 阅读全文
posted @ 2021-01-28 21:47 PYozo_free 阅读(105) 评论(0) 推荐(0)
摘要:看了别人博客里的WRK代码,也看了逆向代码,WRK帮我把逆向没搞清楚的 搞清楚了,所以不说细节了,直接说怎么调用的 首先函数调用了NtReadVirtualMemory(HANDLE ProcessHandle, PVOID BaseAddress, PVOID Buffer, SIZE_T Num 阅读全文
posted @ 2021-01-25 18:08 PYozo_free 阅读(358) 评论(0) 推荐(0)
摘要:首先要下载wdk和vs2010 首先打开配置管理器 点击生成,设置一个新模式Driver,模式选Debug 然后点击视图里的属性管理器 在我们添加的Driver模式中添加属性表 输入记得修改你的wdk的路径 <?xml version="1.0" encoding="utf-8"?> <Projec 阅读全文
posted @ 2021-01-22 14:56 PYozo_free 阅读(235) 评论(0) 推荐(0)
摘要:基本的寄存器 NTPPC.h头文件中 包含内核API等 NT.h 位置F:\Windows_about_code\WinXPSourceWithPass\Windows_XP_Source\NEPTUNE\SDK\INC 包含常见结构体例如PEB_LDR_DATA与一些常见API的申明 NTPSAP 阅读全文
posted @ 2021-01-19 17:12 PYozo_free 阅读(636) 评论(0) 推荐(1)
摘要:句柄 句柄可以说是Windows编程的核心,当一个进程创建或者打开一个内核对象时,就会获得一个句柄,通过这个句柄可以访问内核对象 为什么要有句柄 句柄存在的目的是为了避免在应用层直接修改内核对象,句柄也就是内核对象中的一个索引,而内核对象存放在句柄表中 句柄表的位置 在_EPROCESS中,有一个成 阅读全文
posted @ 2021-01-14 15:05 PYozo_free 阅读(308) 评论(0) 推荐(0)
摘要:这个先摸了,明天和句柄表作业一起写了 阅读全文
posted @ 2021-01-12 18:09 PYozo_free 阅读(64) 评论(0) 推荐(0)
摘要:上一篇篇幅有点长,所以补一篇 上一篇我们说道,时间片中断会导致线程切换,但并不是说只要有时钟中断就一定切换线程,时钟中断时,会有两种情况导致线程切换: 当前线程的CPU时间到期 有备用线程(KPCR.PrcbData.NextThread) CPU时间片 线程时间片存储在_KTHREAD.Quant 阅读全文
posted @ 2021-01-12 18:03 PYozo_free 阅读(851) 评论(0) 推荐(0)
摘要:线程切换的几种条件 如果学过操作系统,那么很容易就知道会有以下方法 时间片用完 强制切换 异常处理 时间片切换 其实也叫轮转调度算法,顾名思义当时间到达一定的时候,就会切换一个线程,接着运行,这样就可以让我们感受到我们的只有单核使用的程序却没有断过。 而在Windows中,当时间片到达时候,会引起中 阅读全文
posted @ 2021-01-12 17:57 PYozo_free 阅读(1363) 评论(0) 推荐(0)
摘要:由于KiSwapContext函数是由函数KiSwapThread函数调用的,所以我们可以先逆向一下这个函数 KiSwapThread 这里只是简单的逆了一下,可以知道这个函数在执行KiSwapContext函数时,会把做一些准备操作 .text:0040AB8A ; _DWORD __cdecl 阅读全文
posted @ 2021-01-11 16:56 PYozo_free 阅读(751) 评论(1) 推荐(0)
摘要:在进程结构体Eprocess(offset 0x50和offset 0x190)是两个链表,里面圈着当前进程所有的线程 如下图 线程的三种状态:就绪、等待、运行 正在运行中的线程就存储在KPCR中,就绪和等待的线程全存在另外的33个链表中。其中一个等待链表,32个就绪链表 这些链表都是用了_KTHR 阅读全文
posted @ 2021-01-11 16:13 PYozo_free 阅读(191) 评论(0) 推荐(0)
摘要:_KPCR 介绍 当线程进入0环时,FS:[0]指向KPCR 每个CPU都有一个KPCR结构体(一个核一个) KPCR中存储了CPU本身要用的一些重要数据:GDT、IDT以及线程相关的一些信息 结构体成员 nt!_KPCR +0x000 NtTib : _NT_TIB +0x01c SelfPcr 阅读全文
posted @ 2021-01-11 14:59 PYozo_free 阅读(880) 评论(0) 推荐(0)
摘要:晚上 加会班写完进程与线程 阅读全文
posted @ 2021-01-10 17:46 PYozo_free 阅读(98) 评论(0) 推荐(0)
摘要:ETHREAD结构体 ntdll!_ETHREAD +0x000 Tcb : _KTHREAD +0x1c0 CreateTime : _LARGE_INTEGER +0x1c0 NestedFaultCount : Pos 0, 2 Bits +0x1c0 ApcNeeded : Pos 2, 1 阅读全文
posted @ 2021-01-09 22:51 PYozo_free 阅读(292) 评论(0) 推荐(0)
摘要:PEB结构体 在fs寄存器所指的地址再偏移0x30就是该程序的PEB地址。其结构为 typedef struct _PEB { BYTE Reserved1[2]; BYTE BeingDebugged; BYTE Reserved2[1]; PVOID Reserved3[2]; PPEB_LDR 阅读全文
posted @ 2021-01-09 20:19 PYozo_free 阅读(533) 评论(0) 推荐(0)