7.18生产实习日志
7.18生产实习日志1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992 ...
7.17生产实习日志
7.17生产实习日志上线工具与代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485#include<fstream>#include<iostream>#include<Windows.h>#include <tlhelp32.h>using namespace std;// 函数用于创建远程线程执行 shellcodetypedef HANDLE(WINAPI* fn_OpenProcess)( _In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_ DWORD dwProcessId);typedef LPVOID(WINAPI* fn_VirtualAllocEx)( _In_ ...
7.16生产实习日志
7.16生产实习日志内存注入12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485#include<fstream>#include<iostream>#include<Windows.h>#include <tlhelp32.h>using namespace std;// 函数用于创建远程线程执行 shellcodetypedef HANDLE(WINAPI* fn_OpenProcess)( _In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_ DWORD dwProcessId);typedef LPVOID(WINAPI* fn_VirtualAllocEx)( _In_ HAN ...
7.15生产实习日志
7.15生产实习日志如何对传递多个参数使用结构体通过结构体传递多个参数到线程函数中,示例代码展示了如何创建一个结构体并将其作为参数传递给线程函数。
123456789101112131415161718192021222324#include<stdio.h>#include<Windows.h>typedef struct ThreadArgs { const char arg1[100]; const char arg2[100];};DWORD WINAPI ThreadProc(LPVOID lpParam) { struct ThreadArgs* myArgs = (struct ThreadArgs*)lpParam; printf("%s %s", myArgs->arg1, myArgs->arg2); return 0;}int main() { struct ThreadArgs string = { 0 }; strcpy(string. ...
7.14生产实习日志
7.14生产实习日志Windows API 与指针练习测试窗口12345#include<stdio.h>#include<Windows.h>int main() { MessageBox(0,L"1234",0,0);}
创建线程12345678910111213#include<stdio.h>#include<Windows.h>DWORD WINAPI ThreadProc(LPVOID lpParameter) { MessageBox(0,0, 0, 0); return 0;}int main() { HANDLE thread=CreateThread(0, 0, ThreadProc, 0, 0, 0); WaitForSingleObject(thread,-1); return 0;}
指针练习1234567891011121314151617181920212223242526272829#include<stdio.h ...
7.13生产实习日志
7.13生产实习日志一、免杀技术初阶介绍1. 网络结构表层网络 (Surface Web)
占比:4%
例子:Google, Bing, Wikipedia
深网 (Deep Web)
占比:90%
描述:不被表层网络爬虫访问
内容:医疗记录、法律文件、科学报告、订阅信息、竞争者网站、学术信息、多语言数据库、财务记录、政府资源、组织特定报告
暗网 (Dark Web)
占比:6%
描述:通过特定浏览器(如TOR)访问
内容:毒品贩卖、私人通信、政治抗议、非法信息、TOR 加密网站
2. 产业分类白色产业:正规产业 灰色产业:介于黑白之间 黑色产业:被抓100%进入
重要声明: 本次实训内容与技术仅用于学习与测试,切勿用于非法用途,否则后果自负。
3. 网络安全中的代码应用基于 Python:爬虫,脚本 基于 Java:代码审计,构造恶意 POC,挖掘逻辑漏洞 基于 C:挖掘二进制漏洞,杀毒软件绕过,病毒编写
4. 实训最终项目目标
免杀火绒安全软件连接远控
免杀 Windows Defender 连接远控
免杀 360 安全软件连接远控
卡巴斯基:全国范围内的一线
5. ...
类中的关系
对象之间的关系依赖依赖:表示一个类依赖另一个类,比如说驾驶员类Driver需要依赖汽车类Car才能行使。其中Car可以通过构造函数参数,方法参数,方法返回值,方法内局部变量的形式存在于Driver类中。
123456789public class Car{ public void startUp(){};}public class Driver{ public Driver (Car car){ car.startUp(); }}
类图
关联关联:表示一个类A与另一个类B之间的联系,它使类A知道类B的属性和方法。通常类B会以私有成员变量的形式存在于类A中。
关联关系有:
一对一
一对多
多对多类图
聚合聚合:是关联关系的一种,是强关联关系。聚合关系是整体和个体的关系。
一般关联关系的两个类处于同一层次上,聚合关机中的两个类处于不同层次,一个是整体,一个是部分
组合组合:是关联关系的一种,是比聚合关系更强的关系。要求普通的聚合关系中代表整体的对象负责代表个体的对象的生命 ...
单例模式
单例模式概述单例模式,顾名思义就是在整个运行是域,一个类只有一个实例对象
为什么需要单例模式呢?因为,有的类的实例对象的创建和销毁对资源来说消耗不大,
然而有的类比较庞大和复杂,如果平频繁的创建和销毁对象,并且这些对象完全是可以复用的话,那么将造成一些不必要的性能的浪费
比如:
现在需要访问数据库,创建数据库链接对象是一个耗资源的操作,并且数据库连接完全是可以复用的,那么就可以将这个对象设计成单例的,这样只需要创建依次并且重复使用这个对象就行了。
而不需要每次访问数据库都创建一个链接对象,如果那么做将是一个非常恐怖的事情
Java中的实现实现单例模式,需要考虑三点
是否线程安全
是否懒加载
是否反射破坏
懒汉式,线程不安全1234567891011public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { i ...
Java锁机制
Java锁机制概述在并发环境下,多个线程可能会对同一资源进行争抢,那么可能会导致数据不一致的问题,为了解决这个问题,从而引入锁机制
通过抽象的锁,对资源进行锁定
在Java中,每个object,也就是每个对象都拥有一把锁,这把锁记录在对象头中,锁中记录了对象被哪个线程所占用
Java对象Java对象包括了三个部分
对象头
实例数据
填充字节(其中对其填充字节是为了满足Java对象的大小必须是8比特的倍数这一条件设计的)
对象头包含两部分
Mark Word,存储了很多和当前对象运行时状态有关的数据
Class Point,一个指针,指向了当前对象类型所在方法区中的类型数据
Synchronizedsynchronized通过javac编译后会生成monitorenter和monitorexit,依赖这两个字节码指令实现线程同步
管程
首先Entry Set中聚集了一些想要进入monitor的线程,它们正处于waiting状态
此时假设线程A进入到了monitor,那么他就处于Active状态,假设A线程在执行途中遇到一个判断条件,需要他暂时让出执行权,那么他将进入到Wait S ...
ConcurrentHashMap
ConcurrentHashMap在JDK 8中ConcurrentHashMap存储结构如下,它由数组、单向链表、红黑树组成。
它在HashMap的基础上,提供了并发安全的实现,通过对指定Node加锁来保证更新的安全性。
构造函数12345678public ConcurrentHashMap(int initialCapacity) { if (initialCapacity < 0) throw new IllegalArgumentException(); int cap = ((initialCapacity >= (MAXIMUM_CAPACITY >>> 1)) ? MAXIMUM_CAPACITY : tableSizeFor(initialCapacity + (initialCapacity >>> 1) + 1)); this.sizeCtl = cap; } ...