地址

通用ShellCode学习笔记 2003/XP/Win7/Vista/Win8 通用

╄→гoц情女王★ 提交于 2019-12-04 00:27:22
一、ShellCode的编写 Kernel32地址的获取 由于win7的_PEB_LDR_DATA表和以前的系统有了改变,直接查询0x08方式在win7下失效,为了保证shellcode的通用性(主要是增加对win7的支持),采用遍历查询的方式定位kernel32的位置 esi=fs:0->TEB esi=TEB:30h->PEB esi=PEB:0ch->_PEB_LDR_DATA esi=_PEB_LDR_DATA:1ch->内存中的dll的地址 [esi]-> 内存中的下一个dll的地址(00h指向下一个Ldr_Module) [esi+08h]->esi指向的地方的下一个dll的地址 edi->esi指向的地址的尾部 示意图: 我们需要找的kernel32.dll长度为12,用od跟踪发现kernel32.dll的函数名在内存中为“kernel32.dll”,即是说,我们查找到某个函数第24(12×2)的位置为空(字符串结尾),即是我们要找的kernel32.dll push ebp xor ecx,ecx mov esi, fs: 0x30 mov esi, [esi + 0x0C] ; mov esi, [esi + 0x1C] ; next_module: mov ebp, [esi + 0x08] ; mov edi, [esi + 0x20] ; mov esi,

编译器对内存的分配

我的梦境 提交于 2019-12-04 00:11:04
在正式开始今天的博文之前,先看一段代码,思考这段代码有可能出现的情况: int main() { int j, b[10]; for(j = 1; j <= 10; ++j){ b[j] = 0; } } 看完这段代码后,如果觉得这段代码没有什么坑,那不妨注意一下j的范围是从1-10,而b[10]会导致b数组越界哦。思考到结果了吗?先来看看一些内存知识吧。 我们在C/C++中学的变量分三种:局部变量、全局变量(静态变量和全局变量)、堆变量 局部变量 由程序员定义普通变量时编译器在内存中的栈空间为其分配一段内存,如: int b[10], j; 全局变量 由编译器在内存中的静态存储区分配空间,如: int x, y; // 全局 int main(){   static int m, n; // 静态 } 堆变量 由程序员用malloc或new在堆上申请一段内存空间,如: int *a = new int[10], *i = new int; // 动态内存分配 可见编译器通过将内存逻辑划分为不同区段来提供程序员访问内存的权限,而每段空间都有各自的大小,一旦程序员在使用过程中将该大小哦耗尽,就会出现内存不足错误,比如典型的Stack OverFlow 了解了变量的存储后,再来思考一个问题,当我在同一个变量区定义几个不同变量时,他们在内存中是如何排列的? 比如我定义两个局部变量 int

OSI——网络层

筅森魡賤 提交于 2019-12-03 23:47:32
一、网络层的基本概念 网络层上层为传输层,下层为数据链路层,它通过路由选择算法,为IP分组从源主机到目的主机选择一条合适的传输路径,为传输层端—端数据传输提供服务。 二、网络层IP协议的基本内容 网络层中的网络协议是IP,IP协议的分类有IPv4和IPv6 IP协议的特点 IP协议是一种无连接,不可靠的分组传送服务协议,因此它提供的是一种尽力而为的服务 无连接:IP协议不维护IP分组发送后的任何状态信息 不可靠:IP协议不能保证每个IP分组都能正确地,不丢失和顺序地到达目的主机 IP协议是点-点的网络层通信协议 IP协议是针对源主机—路由器、路由器—路由器、路由器—目的主机之间的数据传输的点—点的网络层通信协议,它为两台通信主机寻找一条路径,通常由多个路由器,点点线路组成 IP协议屏蔽了互联的网络在数据链路层、物理层协议与实现技术上的差异 ip地址和MAC地址的区别? mac地址:物理地址 ip地址:网络中的地址 在网络中我们通过主机的ip地址,先找到他的网络地址,到达了网络地址后,然后通过该网络中的老大(路由器)来分析一下这个ip地址是你网路中的哪个主机,这时,老大(路由器)就通过该目标ip地址改到对应主机的mac地址,既然知道了mac地址,就能找到该计算机了。就好比什么呢。路由器是每次分配给你的ip地址不一样,但是你的mac地址肯定不会变,所以就根据ip地址找到你的mac地址

eclipse安装lombok

喜欢而已 提交于 2019-12-03 21:33:04
1.首先下载 lombok.jar ( https://projectlombok.org/download.html ) 2.然后将下载的的jar,放到eclipse目录下。 3.双击jar包 会出现 若未识别eclipse地址,则手动点击Specify location.. 选择eclipse地址 地址选择完毕后,就是安装 安装完成界面 关闭窗口,打开eclipse.ini.看到lombok指向地址就安装成功 来源: https://www.cnblogs.com/dalianpai/p/11809682.html

GO语言复合类型01---指针

依然范特西╮ 提交于 2019-12-03 21:06:45
package main /* %T 类型占位符 %v 值占位符 %p 地址(指针)占位符,只有地址才能替换%p &value 对值取地址 *addr 对地址取值 **int 指向int型指针的指针 作用:函数传参时,传递指针叫引用传递,值传递是拷贝式的,对被传参数的修改是不会改变本体的,想要改变本体只能是引用传递 */ import "fmt" //指针就是地址 //&value 对值取地址 //*ptr 对地址取值 func main021() { //声明变量a时,系统开辟了一块内存【地址】,里面存的【值】是123 var a int = 123 fmt.Printf("a的类型是%T\n", a)//int fmt.Printf("a的值是%v\n", a)//123 fmt.Printf("a的地址是%p\n", &a)//0x... //&a取变量a的地址 aPointer := &a fmt.Printf("aPointer的类型是%T\n",aPointer)//*int //将aPointer指向的地址中的值修改为456 *aPointer = 456 fmt.Println("*aPointer=",*aPointer)//456 //a的值就变成了456 fmt.Println("a=",a) } //先定义原始变量,修改其指针中的值,会直接改变原变量 /

关于CentOS7虚拟机出现Failed to start LSB: Bring up/down的解决方法

淺唱寂寞╮ 提交于 2019-12-03 17:43:08
某天我ssh连虚拟机突然连不上了,后来发现是linux的network服务宕了,重启网络服务会报如题的错误 然后就是查资料 ,总结了几种方法 第一种,也是网上最多就是改mac地址(这种我试了没用) 1.先查看 本机的mac地址 桥接的话mac地址 宿主机 虚拟机貌似是一样的 我是NAT映射 mac地址不一样 2. 进入自己的ifcfg-XXX文件 (我的是这个ens33) 3. 修改 HWADDR=mac地址就ok了 第二种(我试了这个ok了) /*--> */ /*--> */ 网上的是 systemctl stop NetworkManager systemctl disable NetworkManager 然后重启network服务 我自己是 systemctl restart NetworkManager 然后重启network服务 这个NetworkManager具体就是一个网络管理工具 至于作用 有兴趣的可以去搜索看看 第三种 按照提示 输入journalctl -xe 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。 然后分析错误日志根据自身情况解决问题!! 第四种 删掉虚拟机网卡重新添加重新配置,如果还是不行,重复上面三步。 来源: https:/

IPv4,IPv6套接字地址结构

喜欢而已 提交于 2019-12-03 15:00:22
1.IPv4套接字地址结构 struct in_addr{   in_addr_t s_addr;//unsigned int }; struct sockaddr_in{   //uint8_t sin_len 这个字段可能在其他系统上有,我的系统是ubuntu 19.04 下面介绍的地址结构类似   sa_familiy_t sin_family;//unsigned short   in_port_t sin_port;//unsigned short   struct in_addr sin_addr;   unsigned char sin_zero[sizeof(struct sockaddr) - \ sizeof(sa_familiy_t) - sizeof(in_port_t) - sizeof(struct in_addr)]; }; sin_family指明了属于哪个协议族。sin_port指明了端口号(0-65535),sin_addr.s_addr指明了网络二进制字节序值。sin_zero可以从上面看出就是用了填充字节的,使得该结构和sockaddr通用套接字地址结构的大小相同。 2.通用套接字地址结构是什么? 通用套接字地址结构主要是为了方便处理不同协议族的套接字地址结构,即在需要传递套接字地址结构时通常采用struct sockaddr *sa作为形参

大小端字节序

泪湿孤枕 提交于 2019-12-03 14:55:05
现代CPU计算时一次都能装载多个字节(如32位计算机一次装载4字节),多字节的数值在内存中高低位的排列方式会影响所表示的数值,以int32类型的数值169756310(十六进制表示为:0x0103070f;二进制表示为:0b 00000001 00000011 00000111 00001111)为例,在内存中用4个字节存储,4个字节的内容分别是0x01(00000001)、0x03(00000011)、0x07(00000111)、0x0f(00001111)。根据字节高低位排序方式的不同,可以分为:大端字节序(big endian)和 小端字节序(little endian)。 大端字节序 大端字节序是指一个整数的高位字节(如上例中的0x01)存储在内存的低地址处,可以理解为数值的高位部分靠前存储。以前面的0x0103070f为例,假如存储在内存中的起始地址为0x12345678,则0x0103070f在内存中的存储为: 地址0x12345678处存储内容为:0x01(00000001) 地址0x12345679处存储内容为:0x03(00000011) 地址0x1234567a处存储内容为:0x07(00000111) 地址0x1234567b处存储内容为:0x0f(00001111) 小端字节序 和大端字节序相反,小端字节序把数值的低位字节存储在内存的低地址处

linux,进行批量下载文件操作

夙愿已清 提交于 2019-12-03 14:40:31
wget -i url.txt -P . /Photo 批量下载图片(一般是某个相册的图片) 首先先得到一张图片的地址如:www.example.com/pic/001.jpg 同相册的图片地址会有一定的规律,可以用: $: echo www.example.com /pic/ {001..020}.jpg >url.tx t 得到二十张图片的地址是用空格分开的,再用vim编辑url文件,把空格替换成回车(\r) :s/ /\r /g wget命令的-i参数是从指定的文件读取地址,-P参数是把下载的文件放到指定的路径下。 来源: https://www.cnblogs.com/qiangyuzhou/p/11800421.html

NAT(地址转换技术)详解

寵の児 提交于 2019-12-03 13:57:48
https://blog.csdn.net/gui951753/article/details/79593307 NAT产生背景 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣。他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需。企业利用互联网发布信息,传递资料和订单,提供技术支持,完成日常办公。然而,Internet在给亿万用户带来便利的同时,自身却面临一个致命的问题:构建这个无所不能的Internet的基础IPv4协议已经不能再提供新的网络地址了。 2011年2月3日中国农历新年, IANA对外宣布:IPv4地址空间最后5个地址块已经被分配给下属的5个地区委员会。2011年4月15日,亚太区委员会APNIC对外宣布,除了个别保留地址外,本区域所有的IPv4地址基本耗尽。一时之间,IPv4地址作为一种濒危资源身价陡增,各大网络公司出巨资收购剩余的空闲地址。其实,IPv4地址不足问题已不是新问题,早在20年以前,IPv4地址即将耗尽的问题就已经摆在Internet先驱们面前。这不禁让我们想去了解,是什么技术使这一危机延缓了尽20年。 要找到问题的答案,让我们先来简略回顾一下IPv4协议。 IPv4即网际网协议第4版——Internet Protocol Version 4的缩写。IPv4定义一个跨越异种网络互连的超级网