dword

SHELL手动加壳

一个人想着一个人 提交于 2019-11-27 13:13:54
SHELL 壳的运行原理: 加壳过的EXE文件是可执行文件,它可以同正常的EXE文件一样执行。 用户执行的实际上是外壳程序,这个外壳程序负责把用户原来的程序在内存中解压缩,并把控制权交还给解开后的真正程序 ,这一切工作都是在内存中运行的,整个过程对用户是透明的。 • 编译 :将单个的 .c 或 .cpp 编译成中间文件 (.obj),在 VS 下,这个过程由 cl.exe 程序完成。 • 链接 :将编译出的 .obj 中间文件、系统的启动文件和用到的库文件链接成一个可执行文件 (.exe)。VS 下由 link.exe 程序完成 • 装载 :将一个可执行文件映射到虚拟地址空间并执行,由操作系统完成。在装载的过程中,完了让程序正常被执行,会有下列几个步骤: 1.判断是否开启重定位,如果开启了,将 PE 文件加载到指定位置,并且修复目标PE 文件的重定位。 2.遍历导入表,加载使用到的所有模块到内存,修复模块相关的信息,并根据导入表中的函数名称,填充所有的 IAT 地址项。 3.查看当前是否存在 TLS 回调函数,如果存在,则传入进程创建事件,依次调用 所有的 TLS 回调函数。 4.以 PE 文件中的 AddressOfEntryPoint 为起始位置,创建线程并运行。 MZ 头: (0x00) WORD e_magic: 标识当前是一个有效的 DOS 文件,必须为 0x5A4D。

windows网络编程

本小妞迷上赌 提交于 2019-11-27 11:37:47
select模式有端口数限制,FD_SIZE被定义为64,如果不去修改这个系统定义的宏,这FD_SET结构里面最多只能存64个端口。 我把它改成1000试过,可以接收1000个端口,不知道这样子会不会有什么问题。 windows 网络编程 8章 Winsock I/O方法 select模型 // Module Name: select.cpp // // Description: // // This sample illustrates how to develop a simple echo server Winsock // application using the select() API I/O model. This sample is // implemented as a console-style application and simply prints // messages when connections are established and removed from the server. // The application listens for TCP connections on port 5150 and accepts // them as they arrive. When this application receives data

TCP/IP头格式

被刻印的时光 ゝ 提交于 2019-11-27 11:34:55
一、先是常用的IP头格式。 IP头格式: 版本号 (4位) IP头长度 (4位) 服务类型 (8位) 数据包长度 (16位) 标识段 (16位) 标志段 (16位) 生存时间 (8位) 传输协议 (8位) 头校验和 (16位) 发送地址 (16位) 目标地址 (16位) 选项 填充 简单说明 ============ 1. IP头长度计算所用单位为32位字, 常用来计算数据开始偏移量 2. 数据包长度用字节表示, 包括头的长度, 因此最大长度为65535字节 3. 生存时间表示数据被丢失前保存在网络上的时间, 以秒计. 4. 头校验和的算法为取所有16位字的16位和的补码. 5. 选项长度是可变的, 填充区域随选项长度变化, 用于确保长度为整字节的倍数. 描述 ============ struct iphdr { BYTE versionihl; BYTE tos; WORD tot_len; WORD id; WORD frag_off; BYTE ttl; BYTE protocol; WORD check; DWORD saddr; DWORD daddr; /* Put options here. */ }; 二、TCP头格式 TCP头格式: 源端口 (16位) 目的端口 (16位) 序号 (32位) 确认号 (32位) 数据偏移 (4位) 保留 (6位) 标志 (6位)

Why in C++ do we use DWORD rather than unsigned int? [duplicate]

亡梦爱人 提交于 2019-11-27 09:36:07
问题 This question already has an answer here: Why does the Win32-API have so many custom types? 4 answers I'm not afraid to admit that I'm somewhat of a C++ newbie, so this might seem like a silly question but.... I see DWORD used all over the place in code examples. When I look up what a DWORD truly means, its apparently just an unsigned int (0 to 4,294,967,295). So my question then is, why do we have DWORD? What does it give us that the integral type 'unsigned int' does not? Does it have

Explicitly initialize DWORD to 1, but debugger shows wildly out of range value

元气小坏坏 提交于 2019-11-27 07:13:38
问题 I'm a bit flabberghasted with this issue - in debug mode this issue doesn't come up at all, but in release mode it feels like there's almost nothing I can do to fix it. Here's a screenshot of what's going on inside VS2013: I initialize nResult to 1L, and the internal value is shown as 3422785012. In Debug mode, this value is indeed 1L. Any ideas as to why the displayed value isn't even close to the initial value I set for nResult ? I've tried playing with compiler settings - in Debug mode

How large is a DWORD with 32- and 64-bit code?

旧街凉风 提交于 2019-11-27 06:57:29
In Visual C++ a DWORD is just an unsigned long that is machine, platform, and SDK dependent. However, since DWORD is a double word (that is 2 * 16), is a DWORD still 32-bit on 64-bit architectures? Nir Actually, on 32-bit computers a word is 32-bit, but the DWORD type is a leftover from the good old days of 16-bit. In order to make it easier to port programs to the newer system, Microsoft has decided all the old types will not change size. You can find the official list here: http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx All the platform-dependent types that changed with the

What does `dword ptr` mean?

瘦欲@ 提交于 2019-11-27 06:15:18
Could someone explain what this means? (Intel Syntax, x86, Windows) and dword ptr [ebp-4], 0 unwind The dword ptr part is called a size directive. This page explains them, but it wasn't possible to direct-link to the correct section. Basically, it means "the size of the target operand is 32 bits", so this will bitwise-AND the 32-bit value at the address computed by taking the contents of the ebp register and subtracting four with 0. mico Consider the figure enclosed in this other question . ebp-4 is your first local variable and, seen as a dword pointer, it is the address of a 32 bit integer

rep stos dword ptr es:[edi]

无人久伴 提交于 2019-11-27 06:15:16
本文链接:https://blog.csdn.net/ypist/article/details/8467163 今天读代码时,忽然跳出如下一条指令==>> 汇编代码: rep stos dword ptr es:[edi] 在网上查了相关资料显示: /************************************************************/ lea edi,[ebp-0C0h] mov ecx,30h mov eax,0CCCCCCCCh rep stos dword ptr es:[edi] rep指令的目的是重复其上面的指令.ECX的值是重复的次数. STOS指令的作用是将eax中的值拷贝到ES:EDI指向的地址. 如果设置了direction flag, 那么edi会在该指令执行后减小, 如果没有设置direction flag, 那么edi的值会增加. REP可以是任何字符传指令(CMPS, LODS, MOVS, SCAS, STOS)的前缀. REP能够引发其后的字符串指令被重复, 只要ecx的值不为0, 重复就会继续. 每一次字符串指令执行后, ecx的值都会减小. stos((store into String),意思是把eax的内容拷贝到目的地址。 用法:stos dst,dst是一个目的地址,例如:stos dword ptr

delphi 多线程编程

我是研究僧i 提交于 2019-11-27 05:02:44
开始本应该是一篇洋洋洒洒的文字, 不过我还是提倡先做起来, 在尝试中去理解. 先试试这个: procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := 0 to 500000 do begin Canvas.TextOut(10, 10, IntToStr(i)); end; end; View Code 上面程序运行时, 我们的窗体基本是 "死" 的, 可以在你在程序运行期间拖动窗体试试... Delphi 为我们提供了一个简单的办法(Application.ProcessMessages)来解决这个问题: procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := 0 to 500000 do begin Canvas.TextOut(10, 10, IntToStr(i)); Application.ProcessMessages; end; end; View Code 这个 Application.ProcessMessages; 一般用在比较费时的循环中, 它会检查并先处理消息队列中的其他消息. 但这算不上多线程, 譬如: 运行中你拖动窗体, 循环会暂停下来...

delphi 下载

僤鯓⒐⒋嵵緔 提交于 2019-11-27 04:54:54
获取网络文件大小 //delphi 获取网络文件大小 function GetUrlFileSize(aURL: string): integer; var FileSize: integer; var IdHTTP: TidHttp; begin IdHTTP:= Tidhttp.Create(nil); IdHTTP.Head(aURL); FileSize := IdHTTP.Response.ContentLength; IdHTTP.Disconnect; Result := FileSize; end; //delphi 获取本地文件大小 function getFileSize(FileName:string):Longint; var SearchRec: TSearchRec; begin if FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec) = 0 then Result := SearchRec.Size else Result := -1; end; View Code 通用程序自动更新升级 1)服务端IIS网站上创建新的虚拟路径,给新创建的虚拟路径增加MIME类型:.bpl、.ini等。 2)设置update.ini文件版本号配置文件 [ver] config.ini=1