VS2008为MFC添加UAC控制

2011年5月27日 2 条评论

之前写过一篇博客——《VC/MFC编程弹出UAC窗口》,说的是通过添加一个特殊的资源来给程序添加UAC控制,当时候在VC6下面测试的很好。
今天在VS2008下写MFC,又需要用到这个。突然发现这个方法不灵了。虽然网上还是有一群人说添加资源可以实现,但我就是测试不成功。后来去网上找了很久,发现Visual Studio原来自己就带有这个功能。
打开项目属性,选择“配置属性”–>“连接器”–>“清单文件”–>“UAC执行级别”,将其设置为requireAdminist[......]

继续阅读

分类: MFC开发 标签: ,

Windows Explorer命令行参数选项

2011年5月27日 没有评论

不少具有进程管理任务的程序都有这么一个功能:就是可以定位文件的位置,他们在打开资源管理器之后还能让这个文件处于选中状态。其实这是通过给explorer程序传递一些特定的参数来实现的。但是explorer这个程序本身并没有说明解释,于是只好找Google了,搜一下“Windows Explorer Command-Line”,果然微软的网站就有解释(P.S. 百度在这方面就非常逊色了 [em006] )。
具体参见《 用于 Windows XP 的 Explorer.exe 命令行选项》
大家可[......]

继续阅读

分类: Windows SDK 标签: , ,

系统即时调试器注册表设置

2011年5月26日 没有评论

最近几天比较闲,于是想扩展一下原来写的PE工具,发现那个太差了,不好意思拿出手,所以现在又模仿了PETools的一些功能。今天做了一下那个调试功能:把选中的进程附加到系统的即时调试器。
一开始我以为是要用DebugActiveProcess这个API来附加到进程,后来发现DebugActiveProcess这个API是用来将自己附加到指定进程。也就是说,如果你自己是调试器,去调用DebugActiveProcess才有意义。于是就不知道该怎么办了。后来,用OD简单分析了一下PETools的这个功[......]

继续阅读

分类: 逆向调试 标签: , ,

error C2440 reinterpret_cast 无法从NMHDR *转换为NMITEMACTIVATE

2011年5月26日 没有评论

错误描述:error C2440: “reinterpret_cast”: 无法从“NMHDR *”转换为“NMITEMACTIVATE”;转换要求构造函数或用户定义的转换运算符,而该运算符不能由 const_cast 或 reinterpret_cast 使用
错误起因:在VS2008中,当为MFC的CListCtrl控件添加NM_RCLICK事件响应时VS自动生成的代码会漏掉一个*号。

void CProjectNameDlg::OnNMRClickListProcess(NMHD[......]

继续阅读

分类: MFC开发 标签: , ,

带壳破解SMC补丁技术

2011年5月26日 6 条评论

今天又考完了一门课程,大三也即将结束了。大三的结束基本上也就意味着大学学习的结束,所以要抓紧留在学校的时间多学点东西。今天看了SMC补丁技术,很简单的那种。复杂的还有好几层的SMC技术,那个应用在壳上加壳的破解。
SMC补丁技术可以实现带壳破解。主要原理就是在外壳解密/压缩完成即将跳转到OEP之际,让其跳转到另一个地方。在那个地方我们将完成程序的补丁工作,然后再跳转到OEP处执行。至于SMC的英文全称,我也不知道是什么。
首先是一个简单的CrackMe,通过判断输入的字符串是否与程序中预置的字符[......]

继续阅读

分类: 逆向调试 标签: , , ,

Windows SEH汇编版

2011年5月17日 没有评论

SEH,即Structured Exception Handling,中文为结构化异常处理。是Windows操作系统提供给程序设计者的强有力的处理程序错误或异常的武器。Ring3下fs:[0]指向TEB(Thread Environment Block)结构,打开WinDbg,查看_TEB结构:

nt!_TEB
+0×000 NtTib : _NT_TIB
+0x01c EnvironmentPointer : Ptr32 Void
+0×020 Cli[......]

继续阅读

分类: Win32 ASM 标签: , , ,

strlen反汇编代码

2011年5月15日 9 条评论

一般来说strlen的反汇编代码都是一个固定的形式。
IDA中的的反汇编代码如下:

.text:00401016 8D 7C 24 0C lea edi, [esp+10Ch+var_100]
.text:0040101A 83 C9 FF or ecx, 0FFFFFFFFh
.text:0040101D 33 C0 xor eax, eax
.text:0040101F F2 AE [......]

继续阅读

分类: 逆向调试 标签: , ,

[转]防缓冲区溢出开关/GS /SAFESEH

2011年5月15日 没有评论

缓冲区溢出通常表现为一个最为常见的漏洞而存在于今天的各种软件之中,黑客可以用恶意的输入,从而更改程序的执行流程,由此入侵相应的进程、电脑、或整个域。如果进程运行于一个高度受信的账户之下,如管理员或本地系统账户,那么黑客带来的破坏将是极其严重,并有潜在广泛传播的危险。近几年来爆发的一些”知名”病毒,如红色代码、冲击波、震荡波等等,都源于C/C++代码缓冲区溢出的结果。
从程序的角度来看,缓冲区溢出只是一个再简单不过的编程错误–都是关于复制一个内存区域的内容到另一[......]

继续阅读

分类: 缓冲区溢出 标签: , ,

又是C++空类

2011年5月6日 8 条评论

之前在博客也写过一些空类相关的文章,记得当时候还有一个问题没有想明白,于是在经过了一番思索。空类问题似乎也是面试中经常涉及的问题,还是先看题目吧:

// Author: 代码疯子
// Blog: http://www.programlife.net/
// C++空类以及sizeof问题
#include <iostream>
using namespace std;
 
class Empty
{
public:
char arr[0];
[......]

继续阅读

分类: C++编程 标签: , , ,

一个C语言结构体问题

2011年5月5日 4 条评论

无聊的时候又去CSDN转转,肯定会有人讨论题目,这不,看到有人在讨论结构体了。不顾很奇怪的是,似乎所有人都被提问者误导了。先上题目:

#include <stdio.h>
// 定义一个结构体
typedef struct _DATA
{
char t;
char k;
unsigned short i;
int m;
} Data, *PData;
 
int main(int argc, char **argv)[......]

继续阅读

分类: C语言 标签: , ,