关注网络信息安全:
乱码个人微博 http://t.qq.com/Deianeira
启用新域名 http://www.deianeira.net
Deianeira QQ交流群:75847983

共享源码,俺的第一个MFC语言程序,智能关机小助手 也是Deianeira的插件示例之一 1 Comments

作者: 乱码   日期:2012年1月12日 15:07   分类:c&c++&vc.net       44 views

弄了两天啊,几乎无时无刻都在百度,(*^__^*) 嘻嘻……,对MFC真的很蛋疼,不过还是蛮有味的。

 

点击查看原图

 

原理:先设置一个每个1秒就运行的定时器,然后在事件中 GetLocalTime 获得本地时间,然后就是比较了;剩余时间的获得,采用的是 CTime 和 CTimeSpan 两个类,很简单,主要是看你细心不细心,态度认真不认真。


这里把项目改成exe的了,\(^o^)/~,附件中得项目可以直接生成exe,原项目是生成dll,我修改了一下,因为这类插件都只适合 Deianeira  2.0 beta 版,但是  Deianeira  2.0 beta 版 还在写当中,所以就不拿出来献丑了。


分享一个非常“怪”的问题的解决经验,关于 VC.NET 自定义控件 控件 类型错误 0 Comments

作者: 乱码   日期:2012年1月12日 5:18   分类:c&c++&vc.net       43 views

这里,我以继承 ListView 来实现自定义控件为例子,项目名为“test”,VC.NET工程

1、首先解决自定义控件无法在工具箱出现的问题,这个问题容易解决

     找到 “工具” --》“选项” --》“Windows 窗体设计器” --》“AutoToolboxPopulate”  默认值为 “False”,改成“True”,然后重新生成项目,这样的话就能在工具箱的顶部看到你的自定义组件了,见下面两幅图:

 

点击查看原图

点击查看原图

 

2、这里就是主要问题来了啊,注意看这里了,如果没搞懂这里的话,就不好办了;如果你没有改掉 “项目属性”--》“配置属性”--》“公共语言运行时支持” 里面的默认值时,自定义的控件是可以从工具箱中拖放到窗体里面去得,但是如果你改成其他的如"公共语言运行时支持(/clr)",然后你在拖放自定义控件的时候就会报错,见下图:


点击查看原图

点击查看原图

 

大多数用VC.NET的时候都会要用到VC函数或类型数据,这就使你必须要把项目属性改成“公共语言运行时支持(/clr)”,所以难以避免发生上面问题,这里有个不是很有效的但是又成功的解决办法,就是你拖放标准控件到窗体,然后在代理里面把目标类型换成自己的自定义控件类型,尽管能编译成功,运行的时候也有效果,但是这里有个小问题就是在你重新设计窗体的时候就会报错,原因在“公共语言运行时支持”这里。

 

点击查看原图

点击查看原图

 

改了后编译能运行,自定义控件的特性也能表现出来,但是在你重新设计窗体的时候,问题来了,Unknown type 'ListViewEx'. Please make sure that the assembly that contains this type is referenced. If this type is a part of your development project, make sure that the project has been successfully built.


点击查看原图

 

 

原因在“公共语言运行时支持”这里。

 


[分享]2TB彩虹表BT种子,收集自 互撸娃's blog 0 Comments

作者: 乱码   日期:2012年1月12日 5:05   分类:下载    标签: 彩虹表    75 views

这里的只是“子弹”而已,如果你没武器发射子弹,也是白下了,(*^__^*) 嘻嘻……,打个好比方而已

看这里文章,【转载】常见三种彩虹表工具 这里有你想要的武器 

 

点击查看原图

 

下载请见附件,没啥好说的!

共享源码,俺的第一个e语言程序,组件智能注册 也是Deianeira的插件示例之一 1 Comments

作者: 乱码   日期:2012年1月12日 4:40   分类:e    标签: e dreger    40 views

花了大约一天时间做出来的小小玩意,没多大用途;主要是为了做 Deianeira 插件示例,所以才去学了点e,不过最后感觉e也是蛮有味的,(*^__^*) 嘻嘻……

点击查看原图

 

原理很简单的,就是调用 DLL 或 OCX 文件里面导出的 DllRegisterServer 和 DllUnregisterServer 来实现组件的注册和卸载的,原理就是这样。

源码,在附件中提供,这里就不提供插件版的源码了,因为新插件只适合 Deianeira  2.0 beta 版,当然这个版本这段时间不会发布,主要是更新太多了,增加很多功能还有上个版本还有很多功能没有完成。

PE结构分析 MetaData Header 获得“.NET”程序编译时所用DotNet组件的版本 0 Comments

作者: 乱码   日期:2011年12月30日 22:27   分类:c&c++&vc.net    标签: MetaData    66 views

获得“.NET”程序编译时所用DotNet组件的版本,弄了一个下午,终于弄出来的


下面看下截图,Deianeira.exe,采用NET4.0框架(采用CFF Explorer工具):

点击查看原图

 

//DotNet MetaData Header
typedef struct _ImageMetaDataHeader{
	//BSJB 鄙视脚本 (*^__^*) 嘻嘻……
	DWORD Signature;
	WORD MajorVersion;
	WORD MinorVersion;
	//保留
	DWORD reserved;
	//版本字符串的长度
	DWORD VersionLength;
	//版本字符串
	char Version[1];
}IMAGE_METADATA_HEADER, *PIMAGE_METADATA_HEADER;

//作用:MapViewOfFile
//参数:lpctstrFilePath:目标文件路径
//返回:NULL:失败,!NULL:成功
Deianeira_EAPI LPVOID 
	file_getMapViewOfFile(Deianeira_In LPCTSTR lpctstrFilePath)
{
	//打开目标文件
	HANDLE hFile = CreateFile(
		lpctstrFilePath,
		GENERIC_READ,
		FILE_SHARE_READ,
		NULL, 
		OPEN_EXISTING, 
		0, 
		NULL);

	//打开失败
	if (!hFile)
	{
		return NULL;
	}

	//文件映射
	HANDLE hMap = CreateFileMapping(
		hFile,
		NULL,
		PAGE_READONLY,
		0, 0, NULL);

	//映射失败
	if (!hMap)
	{
		CloseHandle(hFile);
		return NULL;
	}

	//文件到内存的映射
	PVOID lpBase = MapViewOfFile(
		hMap,
		FILE_MAP_READ,
		0, 0, 0);

	//失败
	if (!lpBase)
	{
		CloseHandle(hMap);
		CloseHandle(hFile);
		return NULL;
	}

	return lpBase;
}

//判断是不是dotnet的程序和返回DotNet程序的版本号
//lpszFilePath:目标文件
//返回:NULL:失败,!NULL:成功
Deianeira_EAPI LPSTR 
	file_isValidDotNetFile(Deianeira_In LPCTSTR lpszFilePath)
{
	//打开目标文件
	LPVOID lpBase = file_getMapViewOfFile(lpszFilePath);

	//失败
	if (!lpBase)
	{
		return NULL;
	}

	//获得dos头部
	PIMAGE_DOS_HEADER pImage_dos_header = (PIMAGE_DOS_HEADER)lpBase;
	//获得nt头部
	PIMAGE_NT_HEADERS pImage_nt_header = (PIMAGE_NT_HEADERS)((ULONG)lpBase + pImage_dos_header->e_lfanew);
	//CLI Header
	PIMAGE_COR20_HEADER pImage_cor20_header = (PIMAGE_COR20_HEADER)ImageRvaToVa(pImage_nt_header, lpBase, pImage_nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR].VirtualAddress, NULL);

	//如果失败
	if(!pImage_cor20_header)
	{
		UnmapViewOfFile(lpBase);
		return NULL;
	}

	//metadata_header
	PIMAGE_METADATA_HEADER pImage_metadata_header = (PIMAGE_METADATA_HEADER)ImageRvaToVa(pImage_nt_header, lpBase, pImage_cor20_header->MetaData.VirtualAddress, NULL);

	//如果失败
	if (!pImage_metadata_header)
	{
		UnmapViewOfFile(lpBase);
		return NULL;
	}

	LPSTR  lpstrVersion = new char[pImage_metadata_header->VersionLength];

	ZeroMemory(lpstrVersion, strlen(lpstrVersion));

	strcpy_s(lpstrVersion, pImage_metadata_header->VersionLength, pImage_metadata_header->Version);

	//version
	UnmapViewOfFile(lpBase);

	return lpstrVersion;
}

GetSystemDefaultLangID 记录一下这个api 0 Comments

作者: 乱码   日期:2011年12月30日 22:20   分类:c&c++&vc.net       53 views
DWORD dwLanID = GetSystemDefaultLangID();

//   Identifier   Language   
//   0x0000   Language   Neutral   
//   0x0400   Process   Default   Language   
//   0x0401   Arabic   (Saudi   Arabia)   
//   0x0801   Arabic   (Iraq)   
//   0x0c01   Arabic   (Egypt)   
//   0x1001   Arabic   (Libya)   
//   0x1401   Arabic   (Algeria)   
//   0x1801   Arabic   (Morocco)   
//   0x1c01   Arabic   (Tunisia)   
//   0x2001   Arabic   (Oman)   
//   0x2401   Arabic   (Yemen)   
//   0x2801   Arabic   (Syria)   
//   0x2c01   Arabic   (Jordan)   
//   0x3001   Arabic   (Lebanon)   
//   0x3401   Arabic   (Kuwait)   
//   0x3801   Arabic   (U.A.E.)   
//   0x3c01   Arabic   (Bahrain)   
//   0x4001   Arabic   (Qatar)   

阅读全文>>

sitemap