自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

谈成(C/C++)

以吾之所学,创吾之所思

  • 博客(26)
  • 资源 (2)
  • 收藏
  • 关注

原创 以URL的方式启动进程、可执行文件、命令行。

以URL方式打开指定命令行。

2022-11-10 13:58:19 710 1

原创 Windows—进程

一、概念想要理解进程,首先要知道什么是进程。举一个简单的例子。当我们打开任务管理器时,会看到列表中有很多的条目,如下:而这一行行的数据就是windows的进程。同时,我们可以发现这些进程都是以exe来命名的。事实上,当我们鼠标双击exe时,系统就会为这个exe创建一个对应的进程。现在,我们已经知道进程是什么了。那么接下来开始讨论“进程的本质是什么”。二、进程的本质关于进程的本质,其实就是理解进程在windows中扮演的角色是什么,并且如何存在于系统中的。1)进程的角色当我们想要在系统中做一件

2021-07-18 11:26:43 2823

原创 线程同步—线程锁

一、原子访问:Interlocked系列函数可以保证一个值的操作是一个原子操作。实际的代码执行过程如下://C++代码:g_x++;//汇编:MOV EAX, [g_x]INC EAXMOV [g_X], EAX从上面的代码可以看出,即便是单挑C++代码,编译为汇编后也会变成多调汇编指令。所以g_x++并非原子操作,也会出现多线程同步问题。Interlocaked系列函数就是用来保障一次赋值操作是一个原子操作的。LONG InterlockedExchangeAdd( PLO

2021-07-04 10:34:54 539

原创 Windows进程创建过程详解(含PE文件加载)

1.调用CreateProcessW打开指定可执行文件,并创建一个内存区对象。这里仅仅是打开exe文件,并没有将文件映射到内存中。打开exe是为了在后续创建进程的过程中从exe头部中读取一些环境配置。2.调用ntdll.dll中的NtCreateProcessEx系统服务。该函数仅仅是一个内核层对外的门户,其实ntdll.dll中几乎所有的API都是一个空壳,ntdll.dll的本质就是用户层和内核层之间的一道屏障。而这道屏障就是负责保护内核层的,防止用户层直接控制内核层。ntdll.dll中的API会对

2021-05-18 18:07:56 1688

转载 Wannacry勒索病毒样本分析

一、病毒简介:WannaCry(又叫Wanna Decryptor),一种“蠕虫式”的勒索病毒软件,大小3.3MB,由不法分子利用NSA(National Security Agency,美国国家安全局)泄露的危险漏洞“EternalBlue”(永恒之蓝)进行传播 。勒索病毒肆虐,俨然是一场全球性互联网灾难,给广大电脑用户造成了巨大损失。最新统计数据显示,100多个国家和地区超过10万台电脑遭到了勒索病毒攻击、感染。勒索病毒是自熊猫烧香以来影响力最大的病毒之一。WannaCry勒索病毒全球大爆发,至少15

2021-05-14 17:13:50 11784

原创 计算机的启动原理

1.开启电源2.启动自检3.初始化所有寄存器,其中的CS:0xF000、IP:0xFFF04.如果存在异常,则将异常写入EAX中。5.检测EAX的值是否正常。如果不为0,则发生错误。6.CPU开始执行CS:IP处代码。注意:在64位CPU环境下,平时的工作都是在保护模式下进行的。使用的都是虚拟地址来访问内存。由内存管理单元MMU负责做地址转换(虚拟地址->物理地址)。但在开机时,虚拟地址转换所需的页目录、页表等数据都尚未加载,所以MMU暂时无法使用。因此开机时使用的都是16位寄存器。在实地

2021-05-06 17:09:24 694

原创 PE文件结构

PE文件是Windows操作系统下使用的可执行文件格式。它是微软在UNIX平台的COFF(Common Object File Format,通用对象文件格式)基础上制作而成的。最初(正如Portable这个单词所代表的那样)设计用来提高程序在不同操作系统上的移植性,但实际上这种文件格式仅用在Windows系列的操作系统下。PE文件是指32位的可执行文件,也称为PE32。64位的可执行文件称为PE+或PE32+,是PE文件的一种扩展形式(请注意不是PE64)。下图是PE文件的整体结构:大致包含:DO

2021-05-04 13:44:51 335 1

原创 python脚本——m3u8视频流下载

测试环境:python 3.7部分m3u8文件样本:#EXTM3U#EXT-X-PLAYLIST-TYPE:VOD#EXT-X-TARGETDURATION:60#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:0#EXT-START-TIME:1080#EXT-X-PROGRAM-DATE-TIME:2021-04-27T14:01:15+08:00#EXTINF:1,612048020_1773822331_1.ts?start=0&end=1855

2021-04-30 22:18:52 1682 1

原创 漏洞学习笔记——UAF漏洞

UAF即为Use After Free。也就是使用了已经被释放的内存,最终导致内存崩溃或任意代码被执行的漏洞。UAF漏洞常见于浏览器中,如IE、Chrome、Firefox等。当分配有内存的指针被释放后,如果指针没有及时置空。那么此时的指针就被称为“悬挂指针”,也就是俗称的野指针。引用此类指针就会出现各种意外情况。举例以下代码。#include "stdafx.h"#include <stdlib.h>#include <tchar.h>#include <windo

2021-04-30 21:48:08 1404 1

原创 漏洞学习笔记——格式化字符串溢出

格式化字符串溢出指的是调用类似sprintf函数时,没有限定长度而产生溢出。printf中的%s是直接在后面的参数栈中搜索字符串的,直到遇到’\0’。以下代码就可以产生简单的格式化溢出效果。#include "stdafx.h"#include <stdlib.h>#include <windows.h>#pragma runtime_checks( "[runtime_checks]", off)void Overflow(char* pData, unsigned

2021-04-30 16:43:47 885 1

原创 漏洞利用—堆喷

1.堆喷的原理主要在于申请大量内存,直到跨过0x0C0C0C0C地址为止。0x0C0C0C0C地址的总长为19210241024大小。所以只要申请的内存超过200MB,即可将0x0C0C0C0C地址包含在我们自己的内存之中。2.当0x0C0C0C0C地址被包含在我们申请的堆中时,我们就可以将栈溢出的返回地址覆盖为0x0C0C0C0C。3.此时发生溢出后,系统的eip就会去执行0x0C0C0C0C处的代码。而此时,我们的最终目的是执行shellcode代码。执行0x0C0C0C0C是不可能刚好命中sh

2021-04-28 23:17:27 851

原创 漏洞利用—栈溢出

下面的代码可以在xp sp3系统上运行测试:int vulnfun(char* str){ char stack[10]; strcpy(stack, str); return 0;}int main(){ unsigned char shellcode[] = "\x55\x8B\xEC\x33\xC0\x50\x50\x50\xC6\x45\xF4\x4D\xC6\x45\xF5\x53" "\xC6\x45\xF6\x56\xC6\x45\xF7\x43\xC6\x45\

2021-04-28 22:33:35 451 2

原创 shellcode样本—弹出计算器

该样本弹出计算器的原理为:1)先加载MSVCRT.DLL。2)再使用system()函数调用calc命令。该shellcode脚本只在xp下通过实验,仅适合用来研究和验证漏洞。其中的函数地址采用的都是固定地址。win7以上不适用。该样本特点:没有任何0x00,可以参与字符串类溢出。比如strcpy等。unsigned char shellcode2[] = "\x55\x8B\xEC\x33\xC0\x50\x50\x50\xC6\x45\xF4\x4D\xC6\x45\xF5\x53"

2021-04-28 21:26:11 1754

原创 pywebsocket的搭建及使用

一、搭建pywebsocket服务1.下载pywebsocket:git clone https://github.com/googlearchive/pywebsocket这里将代码下载到了/usr/local/pywebsocket该目录,但git时会自动创建pywebsocket。所以这里就变成了两个相同的目录。由于比较懒,就懒得挪了。2.安装pywebsocket进入pywebsocket主目录中,输入以下命令:python setup.py buildsudo python set

2021-04-27 21:48:55 1697

原创 shellcode样本—弹出MessageBox

shellcode是一段可独立运行的汇编代码,常出现在漏洞利用中。当我们利用漏洞控制了eip后,就需要shellcode来执行我们想要做的任何事。shellcode用到的api都是通过动态加载而来的,可以通过fs:[30h]找到PEB中的Ldr结构。在Ldr中记录有dll加载链,从而找到Kernel32。然后通过LoadLibraryA加载任何你想要加载的dll模块。所有API均通过dll中的EAT导出表查询获得。以下面就是一个用来生成弹出MessageBox的shellcode样本,可以用来测试漏洞利

2021-04-26 23:23:23 894

原创 WinDbg+VMware 调试驱动

一、环境准备1.WinDbg2.VMware虚拟机(这里使用xp系统)二、配置VMware1.首先选择windows XP的虚拟机,要处于关机状态。2.然后“编辑虚拟机设置”->“添加”->“串行端口”->“输出到命名管道”。在命名管道这里需要选择“另一端是应用程序”,并且勾选“启动时连接”。详细如下图:最后点击“完成”。3.此时的VMware硬件配置完成,但还需要在系统中配置调式模式。这样在系统启动时,才可以被WinDbg连接。三、配置Windows XP系统,开

2021-04-25 12:40:29 690 1

原创 x64dbg调试器使用vs2015进行编译

首先x64dbg调试器默认是使用vs2013的。这里我选择使用的是vs2015进行编译,区别就是QT使用的是5.9.0版本。x64dbg项目构成1)主体:x64dbg-development(GitHub:https://github.com/x64dbg/x64dbg)2)附属开源库:1>x64dbg-development\deps(GitHub:https://github.com/x64dbg/deps/tree/3b911145d643a54475c8ec1bcdf29258

2021-04-16 16:39:57 1596 1

原创 漏洞学习笔记——栈和整数溢出原理

1.栈溢出原理栈溢出之所以可以修改EIP,是利用局部变量和返回地址是同时保存在栈中的。当调用call命令时,会将下一条指令的地址push到栈中,然后进入call函数。而在call函数中,局部变量也会继续在同一个栈中保存。所以当复制字符串时,就有可能向下溢出,将返回地址给覆盖了。这就导致retn时,将被覆盖的返回地址pop到EIP中执行。2.整数溢出原理整数溢出其实是利用了整数存在上限的问题。比如一个USHORT类型的数据,他的上限就是65535,当你给他输入65536..

2021-04-15 14:48:11 553

原创 漏洞学习笔记——堆溢出原理

最近在学习堆的溢出原理,但是查了网上和书上的一些讲解,总是感觉缺少一些关键点。所以理解起来总是有点晕,经过努力的调试分析后,总结了下面的更为详细的堆溢出原理。如果不准确的地方,希望大佬可以提醒一哈~1.堆的结构:struct _LIST_ENTRY{ DWORD Flink; DWORD Blink;}//空闲堆头结构struct _HEAP_FREE_ENTRY{ union{ struct{ union{ struct { WORD Size;

2021-04-14 18:31:10 3636 2

原创 SEH异常处理机制

1.SEH是windows操作系统提供的异常处理机制。2.在程序中可以使用__try、__except、__finally关键来实现异常处理。3.SEH属于系统级的异常处理,是不同于C++中try、catch的。SEH诞生的更早一些。4.异常处理过程:正常情况:程序执行->抛出异常->程序SEH处理函数->系统默认SEH处理函数。调试情况:程序执行->抛出异常->调试器中断处理->程序SEH异常处理->系统默认异常处理如果程序没有异常处理函数

2021-04-12 14:45:09 1791

原创 逆向学习笔记(5)——高级反调试技术

1.垃圾代码向程序添加大量无意义的代码来增加代码调试的难度,这就是“垃圾代码”反调试技术。尤其是,这些垃圾代码中还含有真正有用的代码或者应用其他反调试技术时,调试程序会变得更加困难。1)一些指令(PUSH/POP、XCHEG、MOV)拥有相同的操作数,最终执行的是一些无意义的运算。(命令执行后没有什么变化)2)将一些简单的指令复杂化实现,增加分析难度。2.扰乱代码对齐(花指令)通过巧妙的编写汇编代码,实现干扰调试器反汇编的结果,让反汇编看上去一团乱。在正常的汇编中插入多余的call、

2021-04-12 14:38:34 294

原创 逆向学习笔记(4)——动态反调试技术

1.SEH异常处理windows中存在许多的异常处理类型,如下:EXCEPTION_DATATYPE_MISALIGNMENT (0x80000002)EXCEPTION_BREAKPOINT (0x80000003) 断点异常EXCEPTION_SINGLE_STEP (0x80000004) 单步执行EXCEPTION_ACCESS_VIOLATION (0x8000000

2021-04-12 14:31:09 852

原创 逆向学习笔记(3)——静态反调试技术

1.PEB结构+0x002 BeingDebugged : UChar+0x00c Ldr : Ptr32 _PEB_LDR_DATA+0x018 ProcessHeap : Ptr32 Void+0x068 NtGlobalFlag : Uint4B...1)BeingDebugged(+0x002)当进程处于调试状态时,该标识为1,反之为0。对应的API是IsDebuggerPresent(),用于获取当前进程的调试状态

2021-04-12 14:22:25 396

原创 逆向学习笔记(2)——注入技术

1.windows消息钩子使用API SetWindowsHookEx()进行dll注入,在dll中可以截获GUI界面消息。函数定义:HHOOK SetWindowsHookEx( int idHook, // hook type HOOKPROC lpfn, // hook procedure HINSTANCE hMod, // hook procedure所属的DLL句柄(Handle) DOWORD d

2021-04-12 14:12:19 194

原创 逆向学习笔记(1)

1.TLS回调函数1)TLS回调会在线程的创建和销毁时被调用,常用来做反调试。2)TLS回调函数位于IMAGE_DATA_DIRECTORY[9](数据目录)的位置,即TLS table,与导入导出表类似。3)其中TLS table结构是IMAGE_TLS_DIRECTORY。而其中的AddressOfCallback则表示回调函数地址的数组,也就是说可能会有多个TLS回调函数。4)TLS回调函数定义:typedef VOID(NTAPI *PIMAGE_TLS_CALLBACK)(

2021-04-12 14:04:36 268

原创 追求理想。。。

我从小就喜欢玩电脑。可是,我莫名其妙的就非常喜欢编程,只要看见代码就兴奋。。。我希望在CSDN上能够学到我想要的东西。另外,谁能给我说下那有Window c语言的编程视频?谢谢!主要是老师讲的慢,而且简单。顺便说下,有没有那个黑客级的人物愿意加我为好友啊,没事干也指导指导我,我是很崇拜黑客的*-*。我一定会成为一名高手的。。。加油&努力!!!

2010-11-02 15:05:00 313 1

相对地址转换器.exe

解决两个不同基址的同一个程序,进行相对地址转换。例如:OD与IDA同时调试时,OD的加载基址与IDA的不同,这是定位同一段代码时,就需要进行相对地址转换。

2021-04-12

OllyDbg插件开发SDK

此为OllyDbg1.0插件API,其中包含帮助文档,及vs2008可用lib库文件。

2021-04-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除