底层原理
AlwaysBetter
男儿何不带吴钩
展开
-
简单IO多路复用(接收socket输入显示console,并接收标准输入发送socket)
#include <stdio.h>#include <WinSock2.h>#include <corecrt_io.h>#include <conio.h>#include <stdlib.h>#pragma comment(lib,"ws2_32.lib")#define PORT 6666SOCKET s_server;SOCKET s_client;char bigbuf_net[8192];char send_原创 2022-04-05 21:42:33 · 741 阅读 · 0 评论 -
ScllaTest 若干检测调试手段
从ScyllaTest 学习若干64位 反调试手法AntiDbg是一个繁多且深入的领域,前人们的奇思构想,深入研究 诞生了许多经典的反调试方法,常见的已有20几种,若加上各种针对插件,调试器的主动攻击防御,恐有百种. 不过许多方法在最新win10 x64位已经失效,其中思想仍值得学习,目前开源的反反调试工具中十分出色的是ScyllaHide,这里仅针对ScyllaTest用到的反调试手段进行总结Process Environment Block(PEB)最重要的反调试检测手段,几乎所有的反调试器都原创 2021-12-01 09:52:44 · 293 阅读 · 0 评论 -
x64汇编 VS配置
x64 不支持内联汇编了,写汇编稍微麻烦点.新建asm文件,右键该文件选择属性option:casemap:none 是让汇编大小写敏感vs还有汇编高亮插件asmdude原创 2021-07-24 11:27:24 · 211 阅读 · 0 评论 -
Os 并发[未完结]
OS并发并发介绍线程共享数据说开去#include <stdio.h>#include <assert.h>#include <pthread.h>int cnt;void *mythread(void* arg){ for(int i=0;i<100000;i++) cnt++; return NULL;}int main(){ pthread_t p1,p2;原创 2021-07-23 16:22:17 · 71 阅读 · 0 评论 -
VC 创建新段
由于x64强制开启了nx位,dep保护故不能直接执行data全局数据段数据(虽然可以通过修改pe段属性)故创建新段容纳shellcode#include <windows.h>#pragma comment(linker, "/SECTION:hackseg,RWE")#pragma data_seg("hackseg")unsigned char buf[] ="\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00\x41\x51\x41\x50\x5原创 2021-07-22 17:35:28 · 119 阅读 · 0 评论 -
Fllow Let‘s build a interpreter [part6]
PLUS,MINUS,MULTIPLY,DIVIDE,INTEGER,EOF = 'PLUS','MINUS','MULTIPLY','DIVIDE','INTEGER','EOF'class Token: def __init__(self,type,value): self.type = type self.value = value def __str__(self): return '({},{})'.format(self.typ原创 2021-06-03 15:34:32 · 81 阅读 · 0 评论 -
枚举内核对象Filefile
最近分析了冰蝎的jni库,发现其中的freeFile函数写的很底层,学习了一下:#include <windows.h>#include <stdio.h>#define _DWORD DWORDtypedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation,// 0 Y N SystemProcessorInformation,// 1 Y N SystemPerformanceInformation,原创 2021-05-18 14:39:29 · 168 阅读 · 0 评论 -
Simple MiniCRT
学习了程序员的自我修养这本书,对着示例CRT代码敲了一遍,收获还是颇丰的。源码string.c#include <windows.h>char* itoa(int n, char* str, int radix){ char digit[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char* p = str; char* head = str; if (!p || radix < 2 || radix > 36)原创 2021-05-10 19:41:53 · 139 阅读 · 2 评论 -
MiniCRT PLUS
后续跟进学习了c++ runtime libarary,不幸的是vs2019 msvc工具不允许我重载库函数,故编译无法通过,不过学习MiniCRT PLUS还是学习到了很多知识,也熟悉了c++ 的string库,io库实现原理。由于是基于MiniCRT的PLUS版本,故只贴上新增源码:iostream.h#include "minicrt.h"namespace std{ class ofstream { protected: // protect : can be原创 2021-05-17 09:41:01 · 134 阅读 · 0 评论