酒鬼z

我自将心向明月,独卧沙场醉圆缺

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

文章分类 -  WINDOWS

摘要:转自:http://blog.csdn.net/hw_henry2008/article/details/6568255LdrInitializeThunk() Windows 的 DLL 装入(除 ntdll.dll 外)和连接是通过 ntdll.dll 中的一个函数LdrInitializeThunk()实现的. 在进入这个函数之前,目标 EXE 映像已经被映射到当前进程的用户空间,系统 DLL ntdll.dll 的映像也已经被映射, 但是并没有在 EXE 映像与 ntdll.dll 映像之间建立连接(实际上EXE 映像未必就直接调用 ntdll.dll 中的函数)。 LdrInitia 阅读全文
posted @ 2014-02-13 15:03 酒鬼z 阅读(337) 评论(0) 推荐(0)

摘要:转自: http://blog.csdn.net/breaksoftware/article/details/8150476 有了前面两节的基础,我们现在切入正题:研究下DllMain为什么会因为不当操作导致死锁的问题。首先我们看一段比较经典的“DllMain中死锁”代码。(转载请指明出于breaksoftware的csdn博客)[cpp] view plaincopy//主线程中HMODULEh=LoadLibraryA(strDllName.c_str());[cpp] view plaincopy//DLL中代码staticDWORDWINAPIThreadCreateInDllMai. 阅读全文
posted @ 2014-02-13 15:02 酒鬼z 阅读(182) 评论(0) 推荐(0)

摘要:转自:http://www.mouseos.com/assembly/06.htmlt.exe 共 3072 bytes,下面是 t.exe 映象 PE 文件头的整体结构图:windows 的 PE 文件头结构包括三大部分:DOS 文件头、NT 文件头以及 Section 表(节表),在 DOS 文件头后面有一小段 DOS 程序,被称为 DOS stub 程序。DOS stub 程序是运行在 DOS 下面的 16 位程序,目的是指出:当 windows 程序在 dos 下运行时,将显示信息:This program cannot be run in DOS mode.... 然后终止执行。这段 阅读全文
posted @ 2014-01-20 10:13 酒鬼z 阅读(361) 评论(0) 推荐(0)

摘要:转自:http://my.oschina.net/ypimgt/blog/130778cmd /c和cmd /k java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令。 cmd /c dir 是执行完dir命令后关闭命令窗口。 cmd /k dir 是执行完dir命令后不关闭命令窗口。 cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。 cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。 可以用cmd /?查看帮助信息。 ★CMD命令★ 1. gpedit.m... 阅读全文
posted @ 2014-01-16 17:52 酒鬼z 阅读(98) 评论(0) 推荐(0)

摘要:转自:http://www.vckbase.com/index.php/wv/1480正文:打开VC集成开发环境,建立一个基于对话框的工程。我们把这个工程取名为SpyXX。在窗体中画上一个图片框控件(Picture)、一个静态文本控件 (Static)、两个复选框控件(Check Box)和一个选项卡控件(Tab Control)。界面设计如下图。探测器的制作需要两个图标文件(.ico)和一个鼠标光标文件(.cur),分别用于正常状态下的显示、鼠标拖出时的显示以及拖出时的鼠标指针;这些资源 哪里来啊?Spy++中就有啊,用eXeScope挖一下吧。(我是从其他软件中挖出来的,名字好像叫超级什么 阅读全文
posted @ 2013-12-13 16:34 酒鬼z 阅读(922) 评论(0) 推荐(0)

摘要:Win7任务栏的程序本来是带有缩略图的,可是这个缩略图经常会消失,下面就让我们来看一下,怎样开启Win7缩略图功能。 工具/原料Win7家庭版系统Win7旗舰版系统 步骤/方法任务上单击鼠标右键,选择属性,找到使用Aero Peek预览桌面一项选中确定即可。 通过搜索gpedit.msc运行组策略程序,在用户配置——管理模版——“开始”菜单和任务栏中找到关闭任务栏缩略图一项。 在开始菜单,搜索程序和文件里输入regedit,进入注册表编辑器,依次进入如下位置:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Poli... 阅读全文
posted @ 2013-12-04 13:44 酒鬼z 阅读(234) 评论(0) 推荐(0)

摘要:转自:http://blog.csdn.net/hgy413/article/details/75869571.dump.dump 命令创建一个用户模式或内核模式崩溃转储文件。程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。 步骤:1) 打开WinDBG并将之Attach 到crash的程序进程2) 输入产生dump 文件的命令直接用.dump -?可以看到它的简单说明:[cpp] view plaincopy0:000>.dump-?Usage:.dump[options]filename 阅读全文
posted @ 2013-12-02 18:43 酒鬼z 阅读(230) 评论(0) 推荐(0)

摘要:转载请注明原文链接。原文链接:http://www.cnblogs.com/xianyunhe/archive/2011/12/06/2278550.html文件和文件夹的创建、复制、删除、重命名等操作是经常要用到的,作者根据自己的经验,并查询了MSDN,特意总结了常用文件和文件夹的相关操作,重点讨论了复制整个文件夹和删除整个文件夹1、文件操作基本函数WinBase.h中声明了Windows平台下的基本的API函数,包括文件和目录的基本操作。下面列出部分常用的文件操作相关函数。函数说明DeleteFile删除单个文件,不能删除目录和只读文件CopyFile复制单个文件MoveFile移动移动文 阅读全文
posted @ 2013-11-21 16:03 酒鬼z 阅读(349) 评论(0) 推荐(0)

摘要:KeUserModeCallback用法详解http://hi.baidu.com/_achillis/item/3b18870870961a143b53ee02windows核心编程--SEH(结构异常处理)http://www.cppblog.com/mzty/archive/2006/09/22/12824.htmlCollecting User-Mode Dumpshttp://msdn.microsoft.com/en-us/library/windows/desktop/bb787181Improved “PreventSetUnhandledExceptionFilter”htt 阅读全文
posted @ 2013-11-08 17:06 酒鬼z 阅读(109) 评论(0) 推荐(0)

摘要:http://blog.miniasp.com/post/2008/05/Use-WinDbg-Analysis-and-Solve-Program-Hang-Problem.aspxhttp://bbs.pediy.com/showthread.php?t=24077http://www.cnblogs.com/happyhippy/archive/2007/04/08/710933.htmlset _NT_SYMBOL_PATH=srv*c:\symbols*http://msdl.microsoft.com/download/symbols 阅读全文
posted @ 2013-11-08 16:35 酒鬼z 阅读(92) 评论(0) 推荐(0)

摘要:转自: http://blog.csdn.net/tht2009/article/details/6762636 今天看到一个关于SHFileOperation函数使用的介绍,发现下面一些有用的资料,都是些之前未仔细了解的方面,这里把他们记录下来,留待以后查阅参考。fFlags成员标志间的关系标志抑制的对话框相关性与优先级FOF_MULTIDESTFILES无无FOF_FILESONLY无无FOF_SILENT 如果设置,进度对话框不显示。优先于FOF_SIMPLEPROGRESS标志。FOF_SIMPLEPROGRESS无为FOF_SILENT标志所抑制。FOF_RENAMEONCOLLIS 阅读全文
posted @ 2013-10-24 17:41 酒鬼z 阅读(249) 评论(0) 推荐(0)

摘要:#include #include BOOL IsAdmin(void); int main(int argc, char* argv[]) { if (IsAdmin()) printf("IsAdmin - TRUE"); else printf("IsAdmin - FALSE"); return 0; } BOOL IsAdmin(void) { HANDLE hAccessToken; BYTE *InfoBuffer; PTOKEN_GROUPS ptgGroups; DWORD ... 阅读全文
posted @ 2013-09-25 09:27 酒鬼z 阅读(139) 评论(0) 推荐(0)

摘要:@作者: ay @文章出处: cnss-ay的博客@Notice: 转载请注明出处!若文章显示不完整,可以到文章出处阅读。堆破坏所谓的堆破坏,是说没控制好自己的指针,把不属于你分配的那块内存给写覆盖了。这块内存可能是你程序的数据,也可能是堆的管理结构。那么这个会导致怎样的后果呢?可能的情况我们来yy下把程序里的计算结果覆盖了,这也许会让你重复看了N次代码,校验了N次计算逻辑也搞不明白为何计算结果还是有问题 堆管理结构被破坏了,new/delete,或者malloc/free操作失败 等等等等~堆 破坏较为理想的情况是被修改的数据会马上导致程序crash,最差的情况是你的堆数据莫名其妙在今天被改 阅读全文
posted @ 2013-07-05 16:30 酒鬼z 阅读(1937) 评论(0) 推荐(0)

摘要:@作者: ay @文章出处: cnss-ay的博客@Notice: 转载请注明出处!若文章显示不完整,可以到文章出处阅读。HEAP的概念堆栈堆栈,在操作系统内存中有两种存储空间,一个是堆,一个是栈。堆主要用于存储用户动态分配的变量,而栈呢,则是存储我们程序过程中的临时变量。当然栈的作用远不止用作存储变量,但这不是我们这篇文章的讨论内容。堆(HEAP)的分配,使用,回收都是通过微软的API来管理的,最常见的API是malloc和new。在往底层走一点呢,这两个函数都会调 用HeapAlloc(RtlAllocateHeap)。同样的相关函数还有HeapFree用来释放堆,HeapCreate用来 阅读全文
posted @ 2013-07-05 16:27 酒鬼z 阅读(686) 评论(0) 推荐(0)

摘要:GetLastErrorGetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置。函数 并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值,也不能 担保函数已成功执行。只有在函数调用返回一个错误结果时,这个函数指出的错误结果 才是有效的。通常,只有在函数返回一个错误结果,而且已知函数会设置GetLastError 变量的前提下,才应访问GetLastError;这时能保证获得有效的结果。SetLastError函 数主要在对api函数进行模拟的dll函数中使用。GetLastError的返... 阅读全文
posted @ 2013-06-20 17:12 酒鬼z 阅读(229) 评论(0) 推荐(0)

摘要:windows系统下,程序防止多开的几种常见方法: 1)使用FindWindow API函数。 通过查找窗口标题(或/和类名)来判断程序是否正在运行。如果找到了,表明程序正在运行,这时可退出程序,达到不重复运行的效果;反之表明程序是第一次运行。 这种方法不适用于以下情况,程序的标题是动态变化的、系统中运行了相同标题(或/和类名)的程序2)Mutex/Event/Semaphore 通过互斥对象/信号量/事件等线程同步对象来确定程序是否已经运行。最常用的函数如:CreateMutexA(注意:QQ堂、QQ游戏大厅就是采用这样方法来限制程序多开的)3)内存映射文件(File Mapping) 通过 阅读全文
posted @ 2013-06-19 13:27 酒鬼z 阅读(278) 评论(0) 推荐(0)

摘要:一、使用Mutex 1、原理 创建一个互斥体,并检查它是否已经有拥有者,如果有,表明互斥体已经建立(程序已经启动),否则表明程序未启动。 2、实现 (1)首先创建一个互斥体,CreateMutex函数,第一个参数可以设置为NULL,第二个参数必须设置为false,第三个参数表示互斥体的名称,这个名称最好有一些特殊标识以防止与其他应用程序冲突,比如程序名+时间。 (2)使用GetLastError()函数判断错误信息是否为ERROR_ALREADY_EXISTS,如果是,则表示程序已经启动。示例代码如下:view plaincopy to clipboardprint?HANDLEhObject 阅读全文
posted @ 2013-06-19 13:26 酒鬼z 阅读(850) 评论(0) 推荐(0)

摘要:ShellExecute, WinExec, CreateProcessShellExecute ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。 有几个API函数都可以实现这些功能,但是在大多数情况下ShellExecute是更多的被使用的,同时它并不是太复杂。 ShellExecute函数原型及参数含义如下: ShellExecute( HWND hwnd, //父窗口句柄 (如:NULL,Handle等) LPCSTR lpOperation, //操作类型 (如:"open") 阅读全文
posted @ 2013-05-18 22:55 酒鬼z 阅读(389) 评论(0) 推荐(0)

摘要:在WINDOWS下是查看进程命令行参数。使用下面的命令。 wmic process get caption,commandline /value如果想查询某一个进程的命令行参数,使用下列方式: wmic process where caption="svchost.exe" get caption,commandline /value 阅读全文
posted @ 2013-05-09 19:53 酒鬼z 阅读(282) 评论(0) 推荐(0)