dword

关于++的问题

孤街浪徒 提交于 2020-03-07 07:40:38
char* aa=(char*)malloc(2); *aa++=33; 结果是,先给*a赋33,然后再++。下面是汇编代码: 56: *aa++=33; 00401035 mov eax,dword ptr [ebp-4] 00401038 mov byte ptr [eax],21h 0040103B mov ecx,dword ptr [ebp-4] 0040103E add ecx,1 00401041 mov dword ptr [ebp-4],ecx [ebp-4]是给局部量分配空间。21h无疑是33啦。 另有坑爹问题一个: 函数声明是void (*intra_satd_x3_8x8c) ( uint8_t *fenc, uint8_t *fdec , int res[3] ); 而 int satdu[4], satdv[4]; h->pixf.intra_satd_x3_8x8c( p_srcc[0], p_dstc[0], satdu );//计算satd 回去查书,才发现传递数组时,形参的数组大小是不检查的,爱多少多少,只是传个地址而已。 另有: h->fref0[h->i_ref0++] = h->frames.reference[i]; 这句,实际上是先执行h->fref0[h->i_ref0]= h->frames.reference[i],这后再h->i

wince下USB总线驱动分析

家住魔仙堡 提交于 2020-03-07 03:50:45
关于USB网上有很多现成的资料,我这里对其中一些基本资料进行了下总结。 i.USB的优点 ( 1 )使用简单。 支持热插拔。 ( 2 )应用范围广。 USB 系统数据报文附加信息少,带宽利用率高,可同时支持同步传输和异步传输两种方式。 ( 3 )较强的纠错能力。 USB 系统可实时地管理设备插拔。在 USB 协议中包含了传输错误管理、错误恢复等功能,同时根据不同的传输类型来处理传输错误。 ( 4 )总线供电。 USB 总线可为连接在其上的设备提供 5V 电压、 100mA 电流的供电,最大可提供 500mA 的电流。 USB 设备也可采用自供电方式。 ( 5 )低成本。 USB 接口电路简单,易于实现,特别是低速设备。 USB 系统接口 / 电缆也比较简单,成本比串口 / 并口低。 2. USB硬件结构 USB 采用四线电缆,其中两根用来传送数据的串行通道,另两根为下行设备提供电源。 USB 是基于令牌的总线。类似于令牌环网络或 FDDI 基于令牌的总线。 USB 主控制器广播令牌,总线上设备检测令牌中的地址是否与自身相符,通过接收或发送数据给主机来响应。 USB 通过支持悬挂( suspend ) / 恢复( resume )操作来管理 USB 总线电源。 USB 系统采用级联星型拓扑,该拓扑由三个基本部分组成:主机( Host) ,集线器( Hub) 和功能设备。 3

CreateToolhelp32Snapshot

可紊 提交于 2020-03-07 03:45:14
CreateToolhelp32Snapshot枚举进程 每一个应用程序实例在运行起来后都会在当前系统下产生一个进程,大多数应用程序均拥有可视界面,用户可以通过标题栏上的关闭按钮关闭程序。但是也有为数不少的在后台运行的程序是没有可视界面的,对于这类应用程序用户只能通过CTRL+ALT+DEL热键呼出"关闭程序"对话框显示出当前系统进程列表,从中可以结束指定的任务。显然,该功能在一些系统监控类软件中还是非常必需的,其处理过程大致可以分为两步:借助系统快照实现对系统当前进程的枚举和根据枚举结果对进程进行管理。本文下面即将对此过程的实现进行介绍。 当前进程的枚举 要对当前系统所有已开启的进程进行枚举,就必须首先获得那些加载到内存的进程当前相关状态信息。在Windows操作系统下,这些进程的当前状态信息不能直接从进程本身获取,系统已为所有保存在系统内存中的进程、线程以及模块等的当前状态的信息制作了一个只读副本--系统快照,用户可以通过对系统快照的访问完成对进程当前状态的检测。在具体实现时,系统快照句柄的获取是通过Win32 API函数CreateToolhelp32Snapshot()来完成的,通过该函数不仅可以获取进程快照,而且对于堆、模块和线程的系统快照同样可以获取。 使用这个函数前必须在头文件里包含tlhelp32.h头文件。

rtmp之谷歌浏览器默认启用flash

两盒软妹~` 提交于 2020-03-05 19:18:40
输入如下 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\SOFTWARE\Policies\Chromium] "AllowOutdatedPlugins"=dword:00000001 "RunAllFlashInAllowMode"=dword:00000001 "DefaultPluginsSetting"=dword:00000001 "HardwareAccelerationModeEnabled"=dword:00000001 [HKEY_CURRENT_USER\SOFTWARE\Policies\Chromium\PluginsAllowedForUrls] "1"="https://*" "2"="http://*" [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome] "AllowOutdatedPlugins"=dword:00000001 "RunAllFlashInAllowMode"=dword:00000001 "DefaultPluginsSetting"=dword:00000001 "HardwareAccelerationModeEnabled"=dword:00000001 [HKEY_LOCAL_MACHINE

进程间通信之------- 命名管道

混江龙づ霸主 提交于 2020-03-04 05:48:07
我们知道管道包括三种: 1):普通管道PIPE,通常有很多限制,一是半双工,只能单向传输,二是只能在父子进程间使用 2):流管道:这种能双向传输,但是也是只能父子进程间使用。 3):命名管道,去除了以上的第二种限制,可以在许多不相关的进程间进行通讯。也是半双工的通信方式。 但是通常我们把管道分为匿名管道和命名管道。但对于匿名管道的话,只能在本机上进程之间通信,而且只能实现本地的父子进程之间的通信,局限性太大了。而这里介绍的命名管道,就和匿名管道有些不同了,在功能上也就显得强大许多,至少其可以实现跨网络之间的进程的通信,同时其客户端既可以接收数据也可以发送数据,服务器端也是可以接收数据,又可以发送数据。 匿名管道的概述    对于匿名管道而言,命名管道使用了windows安全机制,因而命名管道的服务器端可以控制哪些客户有权与其建立连接。哪些客户端是不能够与这个命名管道建立连接的。命名管道的通信是以连接的方式进行的,服务器创建一个命名管道对象,然后在此对象上等待连接请求,一旦客户连接过来,则两者都可以通过命名管道读或者写数据。   命名管道提供了两种通信模式:字节模式和消息模式。在字节模式下,数据以一个连续的字节流的形式在客户机和服务器之间流动。而在消息模式下,客户机和服务器则通过一系列不连续的数据单位,进行数据的收发,每次在管道上发出一个消息后,它必须作为一个完整的消息读入。

使用QueueUserAPC线程注入,

回眸只為那壹抹淺笑 提交于 2020-03-03 18:48:04
代码1 #define _WIN32_WINNT 0x0400 #define WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料 #include < iostream > #include < windows.h > #include < Winbase.h > using namespace std; DWORD WINAPI WorkThread(LPVOID pParam) { HANDLE Event = (HANDLE)pParam; for (;;) { DWORD dwRet = WaitForSingleObjectEx(Event, INFINITE, TRUE); if (dwRet == WAIT_OBJECT_0) break ; else if (dwRet == WAIT_IO_COMPLETION) printf( " WAIT_IO_COMPLETION\n " ); return 0 ; } } VOID WINAPI APCProc(LPVOID dwParam) { printf( " %s " , (PVOID)dwParam); } void TestAPC(BOOL bFast) { HANDLE QuitEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

C++--Dll Injection Tutorial

本秂侑毒 提交于 2020-03-02 22:50:18
Introduction The CreateRemoteThread method The SetWindowsHookEx method The code cave method Appendix A - Methods of obtaining a process ID Appendix B - Methods of obtaining a thread ID Appendix C - Complete CreateRemoteThread example source code Appendix D - Complete SetWindowsHookEx example source code Appendix E - Complete code cave example source code Introduction In this tutorial i'll try to cover all of the known methods(or at least, those that I know =p) of injecting dll's into a process. Dll injection is incredibly useful for TONS of stuff(game hacking, function hooking, code patching,

Shellcode的原理及编写

大兔子大兔子 提交于 2020-03-02 09:18:20
1.shellcode原理 Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。网络上数以万计带着漏洞顽强运行着的服务器给hacker和Vxer丰盛的晚餐。漏洞利用中最关键的是Shellcode的编写。由于漏洞发现者在漏洞发现之初并不会给出完整Shellcode,因此掌握Shellcode编写技术就显得尤为重要。 如下链接是shellcode编写的基础,仅供参考 http://blog.chinaunix.net/uid-24917554-id-3506660.html 缓冲区溢出的shellcode很多了,这里重现下缓冲区溢出。 [cpp] view plain copy <EMBED id=ZeroClipboardMovie_1 height=18 name=ZeroClipboardMovie_1 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer width=18 src

一个宏命令,就可以程序崩溃时生成dump文件

不羁的心 提交于 2020-03-01 20:37:10
在主程序初始化时加入 DeclareDumpFile(); 1 创建头文件DumpFile.h, 将下列代码放进文件中 2 3 #pragma once 4 #include <windows.h> 5 #include < Dbghelp.h> 6 #include <iostream> 7 #include <vector> 8 using namespace std; 9 10 11 #pragma comment(lib, "Dbghelp.lib") 12 13 14 namespace NSDumpFile 15 { 16 void CreateDumpFile(LPCWSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException) 17 { 18 // 创建Dump文件 19 // 20 HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 21 22 23 // Dump信息 24 // 25 MINIDUMP_EXCEPTION_INFORMATION dumpInfo; 26 dumpInfo

C语言获取SYSTEMTIME

╄→尐↘猪︶ㄣ 提交于 2020-03-01 04:55:10
C语言中如何获取时间?精度如何? 1 使用time_t time( time_t * timer ) 精确到秒 2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒 3 计算时间差使用double difftime( time_t timer1,time_t timer0 ) 4 使用DWORD GetTickCount() 精确到毫秒 5 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒 6 要获取高精度时间,可以使用 BOOLQueryPerformanceFrequency(LARGE_INTEGER lpFrequency) 获取系统的计数器的频率 BOOLQueryPerformanceCounter(LARGE_INTEGER lpPerformanceCount) 获取计数器的值 然后用两次计数器的差除以Frequency就得到时间。 7 Multimedia Timer Functions The following functions areused with multimedia timers. timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime // ************************