关于PEiD 0.95在Win7 Ultimate x64下崩溃的解决
来源:互联网 发布:java获取服务器外网ip 编辑:程序博客网 时间:2024/06/04 18:23
最终逼不得已还是安装了Win7 64位 旗舰版
在完成了虚拟机安装后,发现PEiD不能运行,无论兼容XP SP3还是管理员权限,一致崩溃
于是写了个程序加载PEiD的插件,主要演示DLL的加载、目录遍历和控制台程序颜色的控制,代码如下:
#ifdef UNICODE#pragma message("UNICODE defined!")#undef UNICODE#endif#include <Windows.h>#include <stdio.h>typedef int (__stdcall *PFNEnumFileCallback)(const char *lpPathName, const char *lpFileName);#define ENUM_CONTINUE0#define ENUM_ABORTED1int PrintWithColor(DWORD dwColor, const char *format, ...){HANDLE hConsole;CONSOLE_SCREEN_BUFFER_INFO csbi;union {DWORD dwColor1;DWORD dwError;};BOOL fResult, fChanged;va_list vl;int dwRet;hConsole = GetStdHandle(STD_OUTPUT_HANDLE);if(hConsole != NULL && hConsole != INVALID_HANDLE_VALUE){fChanged = FALSE;fResult = GetConsoleScreenBufferInfo(hConsole, &csbi);if(fResult != FALSE){dwColor1 = dwColor;fResult = SetConsoleTextAttribute(hConsole, dwColor1);if(fResult != FALSE){fChanged = TRUE;// mark as changed}}#ifdef _DEBUGdwError = GetLastError();#endif}va_start(vl, format);dwRet = vprintf(format, vl);va_end(vl);if(hConsole != NULL && hConsole != INVALID_HANDLE_VALUE){if(fChanged){dwColor1 = 0;// old colordwColor1 |= FOREGROUND_BLUE;dwColor1 |= FOREGROUND_GREEN;dwColor1 |= FOREGROUND_RED;dwColor1 |= FOREGROUND_INTENSITY;dwColor1 |= BACKGROUND_BLUE;dwColor1 |= BACKGROUND_GREEN;dwColor1 |= BACKGROUND_RED;dwColor1 |= BACKGROUND_INTENSITY;dwColor1 &= csbi.wAttributes;fResult = SetConsoleTextAttribute(hConsole, dwColor1);#ifdef _DEBUGif(fResult != FALSE){dwError = GetLastError();}#endif}//fResult = CloseHandle(hConsole);// do not closehConsole = NULL;}return dwRet;}void EnumFiles(const char * lpPath, PFNEnumFileCallback pfnEnumFileCallback){union {char szFind[MAX_PATH];char szFile[MAX_PATH];};WIN32_FIND_DATA wfd;HANDLE hFind;PrintWithColor(FOREGROUND_GREEN, " Begin Path: %s\r\n", lpPath);strcpy(szFind, lpPath);strcat(szFind, "*.*");hFind = FindFirstFile(szFind, &wfd);if(INVALID_HANDLE_VALUE == hFind){return;}while(TRUE){if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){if(wfd.cFileName[0] != '.'){strcpy(szFile, lpPath);strcat(szFile, wfd.cFileName);strcat(szFile, "\\");EnumFiles(szFile, pfnEnumFileCallback);// recurse}}else{strcpy(szFile, lpPath);strcat(szFile, wfd.cFileName);//strcat(szFile, "\r\n");//printf(szFile);if(pfnEnumFileCallback(szFile, wfd.cFileName) != ENUM_CONTINUE){printf(" EnumFiles::pfnEnumFileCallback() abort!\r\n");break;}}if(!FindNextFile(hFind, &wfd)){printf(" EnumFiles::FindNextFile() no more files!\r\n");break;}}FindClose(hFind);PrintWithColor(FOREGROUND_GREEN, " End Path: %s\r\n", lpPath);}int __stdcall EnumProc(const char *lpPathName, const char *lpFileName){HMODULE hModule;union {char *szExt;long dwExt;};char *szFile;szExt = NULL;szFile = (char *)lpFileName;if(szFile){while(*szFile){if(*szFile == '.'){szExt = szFile;}szFile++;}if(szExt){szExt++;dwExt = *(long *)szExt;switch(dwExt){case 0x006c6c64:// dll\0case 0x006c6c44:// Dll\0case 0x006c4c64:// dLl\0case 0x006c4c44:// DLl\0case 0x004c6c64:// dlL\0case 0x004c6c44:// DlL\0case 0x004c4c64:// dLL\0case 0x004c4c44:// DLL\0printf(" Library: ");printf(lpFileName);hModule = LoadLibrary(lpPathName);if(hModule){printf(" loaded!\r\n");FreeLibrary(hModule);hModule = NULL;}else{//printf(" NOT loaded!\r\n");PrintWithColor(FOREGROUND_RED, " NOT loaded!\r\n");}break;default:break;}}}return ENUM_CONTINUE;}int main(int argc, char **argv){char *szPath = "D:\\Program Files\\Portable\\PEiD\\plugins\\";printf("USAGE: PEiD [path]\r\n");printf(" e.g. PEiD \"C:\\Program Files\\PEiD\\plugins\\\"\r\n");if(argc > 1){szPath = argv[1];}PrintWithColor(FOREGROUND_RED, " using path: %s\r\n\r\n", szPath);EnumFiles(szPath, EnumProc);printf("\r\nPress any fucking key to continue...");getchar();return 0;}
运行后发现,FC.DLL提示需要rtl70.bpl,这个文件是根目录的,不过即使在根目录运行,也是无法加载:
其他无法加载的DLL列表为:
将这些带红色的文件都重命名为XXX.DLL.dat之后,还有两个文件导致崩溃,不过是OD发现的,分别是:
xInfo.DLL\[-=About PEiD =-]\UnreaL.DLL
一样重命名,之后PEiD运行正常。
此外,有两个插件出现异常,但是插件自己有错误捕捉,处理了异常,分别是:
和
doc end!
2016-01-15 06:31:40
1 0
- 关于PEiD 0.95在Win7 Ultimate x64下崩溃的解决
- peid 在win7 下打开就停止工作的解决办法
- 在win7 下, 给peid 建立右键关联菜单
- 终于解决Visio在WIN7下复制粘贴时崩溃的问题
- Visio在WIN7下复制粘贴时崩溃问题的解决
- HL340在WIN7 X64下的驱动安装
- MyEclipse 9 在Win7 x64下的破解方法
- kinect for XBOX360 在 win7 X64 下的配置说明。
- vc6 在win7 0x64 下的bug修复
- Matlab7.1在win7 x64下无法运行的解决方法
- pcl 1.8 + VS 2010 在win7 x64下的配置
- pcl 1.8 + VS 2010 在win7 x64下的配置
- Win7 X64 vs2008 崩溃问题
- 关于Win7下安装VS2013就崩溃的问题
- 关于win7/server 08在x64位系统下pl/sql developer无法解析错误
- IETester在Win7下开IE6崩溃
- x64 win7 下的 paging 实例
- win7 x64下关闭Java的自动更新
- 到底该如何看待谭浩强的“C程序设计”
- Akka的Cluster源码分析
- Akka Cluster原理与应用
- Akka框架基本要点介绍
- [LA] Orthogonal contrasts
- 关于PEiD 0.95在Win7 Ultimate x64下崩溃的解决
- 如何实现切换ViewController
- 一个贯穿图像处理与数据挖掘的永恒问题
- ADXL345知识学习总结
- L3G4200陀螺仪学习
- Akka Cluster原理与应用
- 解决svn 树冲突办法1
- Akka TestKit测试包的使用
- ES6学习——集合(Collections):Set API