自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android soinfo 结构体

#define SOINFO_NAME_LEN 128struct link_map{ uintptr_t l_addr; char * l_name; uintptr_t l_ld; struct link_map * l_next; struct link_map * l_prev;};typedef struct soinfo soinfo;struct soinfo{ const char name[SOINFO_NAME_LEN]; Elf32_Phdr *phdr;..

2021-05-18 20:13:19 891

原创 逆向知识点

PE 如何判断PE是DLL还是EXEFileHeader.CharacteristicsEXE:010F(H)DLL:210(H) 如何判断PE是32位还是64位 imageNtHeaders.FileHeader.Machine 32 IMAGE_FILE_MACHINE_I386 64 IMAGE_FILE_MACHINE_IA64 IMAGE_FILE_MACHINE_AMD64 imageNtHeader...

2021-01-18 11:16:55 997

原创 逆向工具常用操作

IDA加载文件Windows 下,用IDA加载文件之后,会在文件同目录下生成几个文件:.id0 二叉树数据库.id1 文件包含描述每个程序字节的标志.nam 包含IDA Name 窗口的数据库.til 本地数据库有关信息常用快捷键快捷键 操作 空格 切换视图 ESC 退回上一页 G 搜索地址或者符号 N 重命名 H 16进制转换 Y 修改函数原型、变量类型 :; 注释...

2021-01-17 18:08:08 1280

原创 汇编知识点

call和jmpcall:FF15 + 绝对地址 、 E8 + 相对偏移 (先push eip ,再jmp)jmp:FF25 + 绝对地址 、 E9 + 相对偏移 (在x64下 FF25也是按相对偏移算的)寻址方式指令寻址: 顺序寻址 程序的顺序执行过程就是顺序寻址 跳跃寻址 jmp call 等类型的寻址过程 数据寻址: 立即寻址 指令的地址字段是操作数本身 mov eax, 1h 直接寻址 指令...

2021-01-16 22:28:18 822 2

原创 C++知识点

浅拷贝、深拷贝深拷贝和浅拷贝最根本的区别就是是否真正的获取一个对象的复制体,而不是引用假如有两个对象A和B,B复制了A,修改A的时候,看B是否发生变化: 如果B也跟着变,说明是浅拷贝(修改的是堆中同一块内存) 如果B没有改变,说明是深拷贝(修改的是堆内存中不同的值)浅拷贝:增加了一个引用指针指向已存在的内存地址,如果原地址发生改变,那么浅拷贝出来的对象都会发生改变。深拷贝:增加了一个引用指针指向新申请的内存,用于存放复制的对象,如果原地址发生改变,...

2021-01-16 21:15:28 161

转载 深拷贝和浅拷贝

深拷贝和浅拷贝最根本的区别就是是否真正的获取一个对象的复制体,而不是引用假如有两个对象A和B,B复制了A,修改A的时候,看B是否发生变化:如果B也跟着变,说明是浅拷贝(修改的是堆中同一块内存)如果B没有改变,说明是深拷贝(修改的是堆内存中不同的值)浅拷贝:增加了一个引用指针指向已存在的内存地址,如果原地址发生改变,那么浅拷贝出来的对象都会发生改变。深拷贝:增加了一个引用指针指向新申请的内存,用于存放复制的对象,如果原地址发生改变,并不会导致深拷贝出来的对象发生改变。浅拷贝会导..

2021-01-16 10:36:15 184 1

原创 Windows XP源码 -- 永久有效

XP 泄漏源码链接:https://pan.baidu.com/s/1QQjVW94ZSwi1eGxZGHszAQ提取码:jjsm

2020-09-26 14:00:03 11429 8

原创 Windows RPC--远程过程调用

What?RPC(Remote Procedure Call),远程过程调用,相比于IPC来说RPC就是基于远程的工作机制,说白了RPC也是一种进程间通信方式,它只不过可以允许本地程序调用另一个地址空间的过程或者函数,而不用程序员去管理调用的细节。对于IPC来说,程序只能调用本地空间的函数,而RPC机制提供了一种程序员不必显示的区分本地调用和远程调用。 为什么RPC可以实现远程功能?原因在于它是一种通过网络通信从远程计算机程序上请求服务,而不需要去了解底层网络技术的协议。R...

2020-09-24 17:42:05 3312 1

原创 Windows设置目录无执行权限

打开本地组策略编辑器 Win+R 输入gpedit.msc 新建路径规则 选择目标路径即可

2020-08-19 19:05:06 3249

转载 IDA-Python 获取函数参数

http://www.vuln.cn/6249

2020-07-20 22:55:00 2319

原创 进程篇----判断当前进程Admin权限

#include <iostream>#include <windows.h>using namespace std;// 判断当前程序是否以管理员身份运行。bool IsProcessRunAsAdmin(){ SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; PSID AdministratorsGroup; BOOL ret = AllocateAndIn.

2020-06-20 23:36:28 419

原创 Python-爬虫(豆瓣)

豆瓣爬出Top250的数据,学习记录。#-*- codeing = utf-8 -*-#@Time : 2020/6/3 23:09#@Author : Matthew#@File : 爬虫.py#@Software : PyCharmfrom bs4 import BeautifulSoup #网页解析,获取数据import re #正则表达式,匹配文字import urllib.request,urllib.error #指定..

2020-06-05 18:49:17 233

原创 Python-Re 正则表达式

Re就是正则表达式的一个库正则表达式常用操作符操作符 说明 实例 . 表示单个字符 [ ] 字符集,对单个字符给出取值范围 [a,b,c]表示a、b、c,[a-z]表示a到z的单个字符 [ ^ ] 非字符集,对当个字符给出排除范围 [^abc]表示非a 或 b 或 c 的单个字符 * 前一个字符0次或者无限次扩展 abc*表示ab、abc、abcc、abccc等 + 前一个字符1次或者无限次扩展 ...

2020-06-04 23:49:59 160

原创 Python-Bs4

bs4 是将复杂的HTML文档转换为一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种-Tag-NavigableString-BeautifulSoup-Commentfrom bs4 import BeautifulSoupfile = open("./baidu.html","rb")html = file.read().decode()bs = BeautifulSoup(html,"html.parser")print(bs.title) .

2020-06-04 23:13:11 196

原创 Python-urllib

httpbin.org是一个练习爬虫请求模拟的一个网站。import urllib.requestimport urllib.parse#获取一个Get请求response = urllib.request.urlopen("http://www.baidu.com")print(response.read().decode())#decode代表解码默认为utf-8#urlopen来访问网页返回数据返回内容图片记录,可以在这些内容中获取一些有用的数据,后续会记录如果解析内容。.

2020-06-04 23:11:17 164

原创 Python-语法学习

最近想学习一下 爬虫,但是自己又不会Python,所以只能从语法开始学习这个脚本语言。在我的理解中Python是巨蛇,蟒蛇的意思,这个从它的图标中也可以看出来,两条蛇相互缠绕在在一起。 写文章完全是为了有个地方记录一下学习的过程,也方便后面复习,也没有教学的意思,纯属个人学习。#print 用法a=1print("Matthew")print("这个数字是%d"%a)print("这个数字是",a)print("我的名字是%s,我的...

2020-06-04 22:54:22 128

原创 Ring0 Ring3 通信

Ring0:#define DEVICE_OBJECT_NAME L"\\Device\\MaDeviceObjectName" //驱动之间通信#define DEVICE_LINK_NAME L"\\DosDevices\\MaDeviceLinkName" //Ring0 和Ring3 之间通信#define IOCTL_NEITHER_NORMAL(i) \ CTL_CODE \ (

2020-05-20 15:15:06 392 1

转载 Windows内核基础之控制寄存器

概述控制寄存器用于控制和确定CPU的操作模式。主要有:CR0\CR1\CR2\CR3\CR4CR0寄存器PE:启用保护模式的标志,1是保护模式,0是实模式,这个位只是开始或者关闭段机制,并没有启用分页机制。PG:分页机制开关,在启用之前需要确保PE是开启的,否则会出现异常。WP:写保护标志,禁止Ring0程序想Ring3只读页面执行写操作,也就是说当CPL<3的时候,如果WP=0,可以读写任何物理页面,只要线性地址有效,如果WP = 1,可以读取任意用户级物理页,但是对于只读的

2020-05-18 18:06:15 206

原创 进程篇----获取线程ID(By ProcessName) CreateToolhelp32Snapshot

通过ToolHelper中的API函数CreateToolhelp32Snapshot来获取目标进程中的线程ID。 BOOL GetThreadIdentify(HANDLE ProcessIdentify, vector<HANDLE>& ThreadIdentify) { BOOL IsOk = FALSE; HANDLE SnapshotHandle = INVALID_HANDLE_VALUE; THREADENTRY32 ThreadEntry32..

2020-05-17 20:26:36 361

原创 Inject集合----远程线程注入(SetWindowsHookEx)

前几篇文章,是通过远程线程的方式来注入目标进程,来实现DLL注入的,这次我们换一个新的方式注入,那就是通过SetWindowsHookEx来远程注入。介绍:SetWindowsHookExHHOOK WINAPI SetWindowsHookEx(__in int idHook, \\钩子类型__in HOOKPROC lpfn, \\回调函数地址__in HINSTANCE hMod, \\实例句柄__in DWORD dwThreadId); \\线程ID...

2020-05-17 20:24:16 853

原创 进程篇----获取进程完整路径、DosPath转化为NtPath(By ProcessID)

写这些文章的目的,就是为了简单方便的将这些代码记录下来,以后用到的时候,可以直接拿来用。#ifdef UNICODE#define GetProcessFullPath GetProcessFullPathW#else#define GetProcessFullPath GetProcessFullPathA#endifBOOL GetProcessFullPathA(CHAR** ProcessFullPath, ULONG_PTR* ProcessFullPathLength,.

2020-05-16 10:29:51 862 1

原创 Inject集合----远程线程注入(RtlCreateUserThread)

之前我写过关于用CreateRemoteThread和NtCreateThreadEx 进行DLL注入,但是我想起之前还有一个函数可以实现远程线程注入,那就是今天的主角RtlCreateUserThread,它和NtCreateThreadEx 一样,也是一个未公开的函数,但是它和CreateRemoteThread和NtCreateThreadEx使用方法是一样的,并没有什么升级的操作。 我在网上看到说,RtlCreateUserThread其实是对NtCreateThreadEx的包装。...

2020-05-16 10:12:19 2060 1

原创 虚函数、虚指针、虚表

初识虚函数虚函数是带有Virtual关键字的函数 纯虚函数在虚函数之后加 =0 的函数 虚函数是动态绑定的函数 虚函数必须是非静态成员函数(因为静态成员函数是没有this指针的) 析构函数可以是虚函数(减少内存泄漏) 构造函数不能是虚函数(时间上冲突)虚函数的声明virtual int ret() ;virtual 函数返回值类型 函数名 (参数列表) 虚函数是可以进行重写的,子类中可以对虚函数进行重写,也可以不重写。意义:为了实现多态性,也就是动态绑...

2020-05-15 21:37:31 338

原创 C++的三大特性

C++有三大特性,分别是封装、继承、多态封装: 字面意思就是包装的意思,专业术语来说就是信息隐藏。简单的来说就是一个类包装了一些数据以及操作这些数据的代码的逻辑实体。在一个类对象内部,某些操作或者数据可以是私有的,也可以是公有的。私有的是不能被外界锁访问的。通过这种方式,对类的内部成员提供了不同级别的保护,尽可能的去隐藏掉内部细节,只提供给对外的一些接口,用户无需知道对象内部细节,只通过接口来访问。良好的封装可以减少耦合 可以对成员进行更精确的控制class MyClass...

2020-05-15 15:21:51 1597

原创 进程篇----获取进程ID(By ProcessName)CreateToolhelp32Snapshot

通过ToolHelper中的API函数CreateToolhelp32Snapshot来获取进程ID。BOOL GetProcessIdByProcessImageName(HANDLE* ProcessID, const TCHAR* ProcessImageName ){ BOOL IsOk = FALSE; HANDLE SnapshotHandle = INVALID_HANDLE_VALUE; PROCESSENTRY32 ProcessEntry32;..

2020-05-15 11:26:37 405

原创 Inject集合----远程线程注入(NtCreateThreadEx)

介绍:前面写过一片远程线程注入的文章,用到的是CreateRemoteThread函数来远程注入线程的,这次我们用NtCreateThreadEx来创建远程线程,其实并没有技术的升级,而是进行了创建远程线程函数的升级,下面是CreateRemoteThread在Reactos中的源码 /* Create the Kernel Thread Object */ Status = NtCreateThread(&hThread, ...

2020-05-15 11:18:20 2313

原创 进程篇----获取进程句柄(提权、打开)OpenProcess

对目标进程提权、然后打开,提权的目的是为了防止当前进程的权限无法打开目标进程,获取句柄。BOOL __EnableDebugPrivilege = TRUE; //代表需要提权BOOL __EnableDebugPrivilege = FALSE;//代表不需提权 BOOL EnableSeDebugPrivilege(const TCHAR* PriviledgeName, BOOL IsEnable) { BOOL IsOk = FALSE; int LastError =

2020-05-15 11:17:54 4103

原创 进程篇----获取进程ID(By ProcessName)NtQuerySystemInformation

通过Nt函数NtQuerySystemInformation来获取所有的进程信息,然后进行名称匹配,若匹配成功,返回ProcessID。#ifdef UNICODE#define GetProcessID_Nt GetProcessID_NtW#else#define GetProcessID_Nt GetProcessID_NtA#endifBOOL IsBadWritePtr(LPVOID lp, UINT_PTR cb);BOOL IsBadReadPtr(CONST VO.

2020-05-15 11:11:22 1256

原创 Inject集合----DLL隐藏

有时候我们在对目标进程注入后,并不像让对方发现我们的DLL,也就是为了避免被检查出来,所以我们需要将DLL信息抹去,也就是从PEB中的三根链表中断开存储DLL信息的节点即可。介绍: 先看一下PEB结构kd> dt nt!_PEB +0x000 InheritedAddressSpace : UChar +0x001 ReadImageFileExecOptions : UChar +0x002 BeingDebugged : UChar +0x00...

2020-05-14 11:04:22 309

原创 IRQL的理解和认识

介绍: 中断请求(IRQ,Interrupt Request)一般有两种,一种是外部中断,也就是硬件产生的中断(例如:键盘中断、打印机中断、定时器中断):另一种是由软件指令 int n 产生的中断(例如:INT 3 断点中断、INT 1 单步中断)。后来 Windows 将中断进行的扩展,提出一个中断请求级(IQRL)的概念。其中规定了 32个中断请求级别,分别是 0-2 级别为软件中断,3-31 为硬件中断。Windows IRQL的宏定义#define PASSIVE_LEVEL...

2020-05-14 10:00:40 4434

原创 [原创]Csgo(反恐精英:全球攻势)的游戏之旅----Dll注入和隐藏(Hacker) 下

链接文章在看雪。

2020-05-13 22:06:56 2312

原创 [原创]Csgo(反恐精英:全球攻势)的游戏之旅----Dll注入和隐藏(Hacker) 上

链接 文章在看雪。

2020-05-13 22:05:54 2768

原创 Inject集合----远程线程注入

在平时写代码的时候,有很多时候会用到注入,比如说获取对方进程中的一些数据等等,所以今天就先更新一篇远程线程注入的文章,便于理解和学习。介绍:远程线程注入就是通过CreateRemoteThread函数,来在对方进程中起一个线程,虽说应该是个线程,但是线程也是来执行代码的,所以我传入LoadLibrary是不是就可以在对方进程中来加载一个DLL呢? 答案肯定是可以的。但是LoadLibrary函数的参数是一个DLL 的完整路径,由于进程地址空间都是虚拟内存,各个进程之间地址空间并不相连,所以我们就需.

2020-05-13 15:07:27 538

原创 算法练习----链表中倒数第k个节点

题目:输入一个链表,输出该链表中倒数第k个结点。解题思路:寻找到整个链表的长度Length, 那么倒数第k个节点就是正数第Length-k个节点。解题代码:ListNode * Solution::FindKthToTail(ListNode * pListHead, unsigned int k){ if (pListHead == NULL || pListHead->next == NULL || k <= 0) { return NULL; ..

2020-05-13 00:09:23 118

原创 C/C++日志的日常使用

作为一名学习程序的学生,在学习中编写过的代码、程序,没有日志功能,刚开始的时候,完全不知道日志的使用有什么意义,感觉特别鸡肋,出现问题,我自己调试一下完全都可以解决的事情,为什么要通过日志来输出。直到后来,才觉得以前的自己好 xx(你懂得)。最近写了一个注入的程序,你将Dll注入目标程序,你完全不能调试你的代码,更何况你想去修改你的代码,简直异想天开。在解决检查获取的来数据是否有效的时候,我想了很多种方法,但最后也觉得就是用日志输出,才是最方便的。 我在网上也找了好多方法,这里我就提供...

2020-05-12 16:41:34 1276 1

原创 Hash基础知识点

概念:Hash 是“杂乱信息”的意思。Hash表是将一堆杂乱得信息,根据它们的关键词特点,将其映射到一个连续的空间上。这种映射关系称作索引方法 ,对应的实现函数叫哈希函数,同时将关键词映射后的值叫做关键词的索引。 索引实际上就是数组的下标,数组的每一个位置习惯上也被称作桶(bucket),在哈希表中桶和索引的叫法是等价的。哈希表的索引方法:整除取余法/** 哈希表的计算整数的索引函数@param UINT uKey——关键词@param UINT uBucketCount—...

2020-05-11 20:31:37 564

原创 算法练习----单链表反转

题目: 输入一个链表,反转链表后,输出新链表的表头。解题思路:反转一个单链表,其实就是将指针域反指向前一个节点就好了,问题就是如何保存所有节点信息,所以这个时候就可以用栈来保存,使用栈还有一个好处就是,栈顶永远是最后一个节点。解题代码:ListNode * Solution::ReverseList(ListNode * pHead){ if (pHead == NULL || pHead->next == NULL) { return pHead; } Li..

2020-05-11 14:21:43 157

原创 算法练习----变态青蛙跳台阶

题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。、解题思路: 这次的题目是青蛙跳台阶的升级版,但是也是有规律可循的。 1 2 3 4 5 6 ... n 跳法 1 2 4 8 16 32 ... 2^(n-1) 这题目也和青蛙跳台阶一样,找到规律即可。 f(n) = 2^(n-1)...

2020-05-10 11:50:00 248 1

原创 算法练习----青蛙跳台阶

题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。解题思路: 看过有网上有特解的方法,但是我感觉不合适,因为想解法应该是找到普遍的规律才应该算是中规中矩。当不知道解题思路的就可以先将前几次,比如说有 1,2,3,4,5级台阶的跳法算出来,比较简单还是可以手算的,就应该发现规律了。 1 2 3 4 5 6 ... n 跳法 1 2 ...

2020-05-10 11:33:51 299

原创 HOOK集合----SSDT Hook Anti(X86 win7)

介绍: 前段时间写了SSDT Hook,没来得及写SSDT Hook 的ANTI策略,今天来写一下。 其实,ANTI SSDT Hook 也很简单,无非就是对比一下内存中加载的SSDT 表中的函数地址和原文件(ntkrnlpa.exe)中的SSDT表中函数地址是否一致即可。(一)⚪ 获取ntkrnlpa.exe模块的完整路径⚪将文件读取到当前内存空间中⚪将RVA转化为FOA,找到原文件读取到内存中的SSDT表位置。⚪判断内存加载的SSDT表中的函数地址和原文件中的SSDT表...

2020-05-09 23:18:13 231 1

Widnwos RPC Demo

windows RPC远程过程调用的Demo,亲测可用。Windows RPC Demo实现。 Windows RPC Demo实现。 Windows RPC Demo实现。 Windows RPC Demo实现。 Windows RPC Demo实现。

2020-09-24

开源的日志库(.h和.cc文件)

一个开源的日志库,简单方便,很实用。博客中有简单的使用例子。Easylogging++,GitHub上有源码,但是为了大家方便下载,我就挂到了csdn的资源中,下载不要积分。刚开始接触日志使用,若不好使用,还请谅解。

2020-05-12

基于栈溢出基本常识讲解.pptx

基于栈溢出基本知识讲解,栈溢出的根本原因是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围。

2019-11-27

空空如也

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

TA关注的人

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