摘要:
0x01. 如何让线程停下来 让自己停下来: Sleep() 函数 当程序执行到某段代码的时候可以使用sleep() 函数进行暂停 使用sleep()函数挂起的时候会自动恢复过来的 让别人停下来: SuspendThread() 函数 使用这个函数挂起,也就是阻塞的时候,必须使用ResumeThre 阅读全文
摘要:
0x01.什么是线程? 1、线程是附属在进程上的执行实体,是代码的执行流程 进程 本身是空间上的概念,代表4GB的虚拟内存,线程代表着时间概念,也就是说,线程是当前运行的代码 在某个时间点只能有一段代码执行,但是cpu切换的快,所以看着像同时运行,这是单核的,所以单核的情况下并不是真正的多线程 因为 阅读全文
摘要:
0x01. ID与句柄 如果我们成功创建一个进程之后,CreateProcess会返回四个数据,id和句柄 句柄的话就是 当前进程私有的句柄表索引(这是当前进程,给别进程也没用) 每个进程都有一张自己的句柄表,这是私有的句柄表; 而操作系统也有一张,叫全局句柄表,里面包含了所有的正在运行的进程和线程 阅读全文
摘要:
前言 因为创建进程的时候提到了PROCESS_INFORMATION这个结构体 这个结构体里面存在两个值,一个是句柄一个是id 什么是句柄?什么是id?就得深入学习句柄表了 0x01. 什么是内核对象? 像进程、线程、文件、互斥体、事件等在内核中都有一个对应的结构体,由内核负责管理。我们管这样的对象 阅读全文
摘要:
CreateProcess函数介绍 BOOL CreateProcessA( LPCSTR lpApplicationName, //可执行文件的名称完整的路径+程序名字) LPSTR lpCommandLine, //指定了要传递给执行模块的参数 LPSECURITY_ATTRIBUTES lpP 阅读全文
摘要:
0x01. 什么是进程? 进程提供程序所需要的资源,如:数据、代码等等 进程扮演的角色仅仅是为当前程序提供资源,或者代码,这就是进程所提供的,当时程序运行的状态和进程没有关系,进程可以看做空间的概念 例子: 进程相当于一个房子,房子里面的东西,这些东西就是进程提供的;房子里面走来走去的人,和使用东西 阅读全文
摘要:
0x01.Windows编程入门 windows编程是在软件开发的时候必须要调用到的api,微软官方已经打包好的 可以在c,c++等其他程序开发调用api,也可以使用单独的创建win32项目 #include <stdio.h> #include <windows.h> //这是win32的入口程序 阅读全文
摘要:
0x01. declspec(dllexport)创建导出dll 笔者这边使用vs 2015,但是性质都一样的 新建项目 -》 Win32控制台应用程序 -》 dll 这时候就创建了一个项目 我们在头文件和源文件创建下文件 头文件 test.h extern "C" _declspec(dllexp 阅读全文
摘要:
前言 学pe的时候被困扰了很久,终于在某处给我找到了,打算打出来读一读代码 这边我们是从文件中的pe转到运行中的pe,然后再缩小存储到文件的pe 这边我们需要知道内存中对齐是0x1000,文件对齐是0x200(这边是16进制的,误踩坑) 我们第一步是先要把pe文件读出来,存储起来 1、根据SizeO 阅读全文
摘要:
0x01.指针的声明 char x; char* x; short y; short* y; int z; int* z; float f; float* f; double d; double* d; Struct st; Struct* st; 从这边可以总结出来 1、带有 * 的变量标准写法: 阅读全文