Наш Jabber-сервер расположен по адресу fuckav.in. Добро пожаловать!!! |
|
Для того, чтобы ответить в теме, необходимо зарегистрироваться. |
|
Опции темы | Опции просмотра |
24-01-2014 | #1 | |
Windows v.3.0
Последняя активность:
1 день назад Регистрация: 20.10.2012
Сообщений: 33
Поблагодарили всего: 15
за это сообщение: 3 |
Декомпилятор ресурсов фасма
Проект на VC++ v6.0
Набросал код за 2 дня. Создаете пустой проект консольного приложения и добавляете вручную все файлы (За основу взят проект утилиты SCompx из Криптона). Пример использования Refasm.exe fasmfile.exe pause data2bin.h Код:
#pragma once //data2bin.h //#define WIN32_LEAN_AND_MEAN //#define _USER_MODE #include <windows.h> #include <stdio.h> #include <stdlib.h> #define ALIGN_DOWN(x, align) (x & ~(align-1)) #define ALIGN_UP(x, align) ((x & (align-1)) ?ALIGN_DOWN(x, align) + align:x) //=========================================================================================== Scomp.cpp Код:
//Scomp.cpp #include "bin2code.h" typedef void (WINAPI* _GenerateRubbishCode)(void* buf,DWORD dwSize, void* VirtAdr); BOOL WINAPI EnumTypesFunc(HMODULE hModule,LPTSTR lpType, LONG lParam); BOOL WINAPI EnumTypesFunc2(HMODULE hModule,LPTSTR lpType, LONG lParam); BOOL WINAPI EnumNamesFunc(HMODULE hModule,LPCTSTR lpType,LPTSTR lpName,LONG lParam); HMODULE hMod=NULL; HRSRC hRes; DWORD dwSize; HGLOBAL hData; LPVOID pData; char buffer[100]; char szResName[100]; char* pszB; _GenerateRubbishCode __GenerateRubbishCode=NULL; VOID DPRINT(PSTR Format, ...) { __try { char tmp[2000]={0}; char tmp1[MAX_PATH]={0}; char tmp2[2000]={0}; va_list cur; va_start(cur, Format); vsprintf(tmp, Format, cur); if(GetModuleFileName(NULL,tmp1,MAX_PATH)) { char* a = strrchr(tmp1,'\\')+1; strcpy(tmp2,a); strcat(tmp2,": "); } strcat(tmp2,tmp); OutputDebugString(tmp2); printf(tmp2); } __except(EXCEPTION_EXECUTE_HANDLER) { OutputDebugString("EXCEPT IN DPRINT"); } } //=========================================================================================== //******************************************************************************************** void __ERR (char* ers) { printf("Error: %s!\n",ers); DPRINT("Error: %s",ers); system("pause"); ExitProcess(0); } //=========================================================================================== BOOL WINAPI EnumTypesFunc(HMODULE hModule,LPTSTR lpType, LONG lParam) { strcpy(buffer, ""); //; Resource types // //RT_CURSOR = 1 //RT_BITMAP = 2 //RT_ICON = 3 //RT_MENU = 4 //RT_DIALOG = 5 //RT_STRING = 6 //RT_FONTDIR = 7 //RT_FONT = 8 //RT_ACCELERATOR = 9 //RT_RCDATA = 10 //RT_MESSAGETABLE = 11 //RT_GROUP_CURSOR = 12 //RT_GROUP_ICON = 14 //RT_VERSION = 16 //RT_DLGINCLUDE = 17 //RT_PLUGPLAY = 19 //RT_VXD = 20 //RT_ANICURSOR = 21 //RT_ANIICON = 22 //RT_HTML = 23 //RT_MANIFEST = 24 switch ((ULONG)lpType) { case 1: strcpy(buffer, " RT_CURSOR,cursors,\\\r\n"); break; case 2: strcpy(buffer, " RT_BITMAP,bitmaps,\\\r\n"); break; case 3: strcpy(buffer, " RT_ICON,icons,\\\r\n"); break; case 4: strcpy(buffer, " RT_MENU,menus,\\\r\n"); break; case 5: strcpy(buffer, " RT_DIALOG,dialogs ,\\\r\n"); break; case 6: strcpy(buffer, " RT_STRING,strings ,\\\r\n"); break; case 7: strcpy(buffer, " RT_FONTDIR,fontdirs ,\\\r\n"); break; case 8: strcpy(buffer, " RT_FONT,fonts ,\\\r\n"); break; case 9: strcpy(buffer, " RT_ACCELERATOR,acccelerators ,\\\r\n"); break; case 10: strcpy(buffer, " RT_RCDATA,rtdata ,\\\r\n"); break; case 11: strcpy(buffer, " RT_MESSAGETABLE,rtmessagetable ,\\\r\n"); break; case 12: strcpy(buffer, " RT_GROUP_CURSOR,groupcursors ,\\\r\n"); break; case 14: strcpy(buffer, " RT_GROUP_ICON,group_icons ,\\\r\n"); break; case 15: strcpy(buffer, " RT_STRING,strings ,\\\r\n"); break; case 16: strcpy(buffer, " RT_VERSION,versions,\\\r\n"); break; case 17: strcpy(buffer, " RT_DLGINCLUDE,rt_dlginclude,\\\r\n"); break; case 19: strcpy(buffer, " RT_PLUGPLAY,rt_plugplay,\\\r\n"); break; case 20: strcpy(buffer, " RT_VXD,rt_vxd,\\\r\n"); break; case 21: strcpy(buffer, " RT_ANICURSOR,rt_anicursors,\\\r\n"); break; case 22: strcpy(buffer, " RT_ANIICON,rt_aniicons,\\\r\n"); break; case 23: strcpy(buffer, " RT_HTML,rt_htmls,\\\r\n"); break; case 24: strcpy(buffer, " RT_MANIFEST, _manifest,\\\r\n"); break; } strcat(pszB,buffer); //EnumResourceNames(hModule,lpType,(ENUMRESNAMEPROC)EnumNamesFunc,0); return true; } //=========================================================================================== BOOL WINAPI EnumTypesFunc2(HMODULE hModule,LPTSTR lpType, LONG lParam) { strcpy(buffer, ""); EnumResourceNames(hModule,lpType,(ENUMRESNAMEPROC)EnumNamesFunc,0); HANDLE hFile; DWORD dwWritten=NULL; DWORD pData2; switch ((ULONG)lpType) { case 1: break; case 2: break; case 3: sprintf(buffer, "\r\n\r\n resource icons,\\\r\n %s,LANG_NEUTRAL,icon_data\r\n\r\n icon main_icon,icon_data,'ico.ico'\r\n", szResName); hRes = FindResource(hModule, MAKEINTRESOURCE(atoi(szResName)), RT_ICON); // ***232;***249;***229;***236; ***237;***243;***230;***237;***251;***233; ***240;***229;***241;***243;***240;***241; if(!hRes) __ERR(" FindResource error\r\n"); dwSize = SizeofResource(hModule,hRes) ; // ***240;***224;***231;***236;***229;***240; ***240;***229;***241;***243;***240;***241;***224; if(!dwSize) __ERR(" SizeofResource error\r\n"); hData= LoadResource(hModule, hRes); // ***239;***238;***235;***243;***247;***224;***229;***248;***252; ***245;***229;***237;***228;***235; ***237;***224; ***237;***243;***230;***237;***251;***233; ***240;***229;***241;***243;***240;***241; if(!hData) __ERR(" LoadResource error\r\n"); pData = LockResource(hData); // ***239;***238;***235;***243;***247;***224;***229;***248;***252; ***243;***234;***224;***231;***224;***242;***229;***235;***252; ***237;***224; ***225;***243;***244;***229;***240; if(!pData) __ERR(" LockResource error\r\n"); //hData= LoadIcon( hModule,MAKEINTRESOURCE(1) ); //if(!hData) __ERR(" LoadIcon error\r\n"); hFile = CreateFile("ico.ico",GENERIC_WRITE | GENERIC_READ,FILE_SHARE_READ, NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL); if(hFile!=INVALID_HANDLE_VALUE) printf("File 'ico.ico' create\r\n"); pData2 = (DWORD)pData; if(!WriteFile(hFile,(void*)pData2,dwSize,&dwWritten,NULL)) __ERR("write output ico.ico file\r\n"); FlushFileBuffers(hFile); CloseHandle(hFile); printf("Total write: %d bytes\n\n",dwWritten);//*/ break; case 4: sprintf(buffer, "\r\n\r\n resource menus,\\\r\n %s,LANG_ENGLISH+SUBLANG_DEFAULT,main_menu\r\n", szResName); break; case 14: sprintf(buffer, "\r\n\r\n resource group_icons,\\\r\n %s,LANG_NEUTRAL,icon_data\r\n", szResName); break; case 16: sprintf(buffer, "\r\n\r\n resource versions,\\\r\n %s,LANG_NEUTRAL,version",szResName); break; } strcat(pszB,buffer); return true; } //=========================================================================================== BOOL WINAPI EnumNamesFunc(HMODULE hModule, LPCTSTR lpType,LPTSTR lpName,LONG lParam) { szResName[0]=0; if ((ULONG)lpName & 0xFFFF0000) { sprintf(szResName,"%s", lpName); } else { sprintf(szResName, "%u",(USHORT)lpName); } return true; } //******************************************************************************************* int main(int argc, char* argv[]) { DWORD dwRaznost; char szTarget[MAX_PATH]; printf("Restore FASM source\t(c)2014 WEBCODER88\n\n"); printf("Usage: DeFasm.exe app.exe\n\n"); if(argc<=1) __ERR("Number of arguments is invalid.\r\n"); char szCurDir[MAX_PATH+1]={0}; GetModuleFileName(NULL, szCurDir, MAX_PATH); *(strrchr(szCurDir,'\\')+1) =0; SetCurrentDirectory(szCurDir); strcpy(szTarget,argv[1]); DWORD dwNewSz; DWORD dwWritten; char szTxt[MAX_PATH]={0}; sprintf(szTxt,"%s\\source.asm",szCurDir);//argv[i_dest]); strcat(szTxt,".asm"); (char*)pszB = (char*) malloc(6000); //(dwNewSz*50); if(pszB == NULL ) __ERR("alloc mem\r\n"); DPRINT("Mem for code Allocated\r\n"); DeleteFile(szTxt); sprintf(pszB,";File: %s\r\n",szTarget); HANDLE hTxtFile = CreateFile(szTxt,GENERIC_WRITE | GENERIC_READ,FILE_SHARE_READ, NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL); if(hTxtFile!=INVALID_HANDLE_VALUE) printf("File create\n\n"); char TX[MAX_PATH]; strcpy(TX,"format PE GUI 4.0\r\nentry start\r\n\r\ninclude 'c:\\fasm\\include\\win32a.inc'\r\n"); strcat(pszB,TX); strcat(pszB,"section '.rsrc' resource data readable\r\n\r\ndirectory "); // ***239;***229;***240;***229;***247;***232;***241;***235;***232;***242;***252; ***226;***241;***229; ***242;***232;***239;***251; ***240;***229;***241;***243;***240;***241;***238;***226; hMod = LoadLibrary(szTarget); if (hMod != NULL) { EnumResourceTypes(hMod,(ENUMRESTYPEPROC)EnumTypesFunc,0); pszB[strlen(pszB)-4]=0; // ***238;***242;***240;***229;***231;***224;***242;***252; 4 ***241;***232;***236;***226;***238;***235;***224; ',\\\r\n' EnumResourceTypes(hMod,(ENUMRESTYPEPROC)EnumTypesFunc2,0); FreeLibrary(hMod); } else __ERR("Not Load Module\r\n"); dwNewSz = strlen(pszB); printf("End cicle, len:%d\n",dwNewSz); DPRINT("End generate code, len:%d\n",dwNewSz); if(!WriteFile(hTxtFile,pszB,dwNewSz,&dwWritten,NULL)) __ERR("write output .cpp file\r\n"); FlushFileBuffers(hTxtFile); CloseHandle(hTxtFile); printf("Total write: %d bytes\n\n",dwWritten); return 0; } StdAfx.h Код:
// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #if !defined(AFX_STDAFX_H__F47F507F_468C_4E8A_96C8_7E925E966450__INCLUDED_) #define AFX_STDAFX_H__F47F507F_468C_4E8A_96C8_7E925E966450__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <stdio.h> #include <ntundoc.h> // TODO: reference additional headers your program requires here //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_STDAFX_H__F47F507F_468C_4E8A_96C8_7E925E966450__INCLUDED_) Код:
// stdafx.cpp : source file that includes just the standard includes // Scomp.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information #include "stdafx.h" // TODO: reference any additional headers you need in STDAFX.H // and not in this file Последний раз редактировалось guest88; 25-01-2014 в 05:25. Причина: Исправлен и дополнен код Scomp.cpp, теперь сохр-ся иконка без хидера |
|
Для того, чтобы ответить в теме, необходимо зарегистрироваться. |
Метки |
break, buffer, декомпилятор, компилятор, ресурсов, фасм, фасма |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Официальный сайт PHP оказался в списке небезопасных для посещения ресурсов | chef | Новости | 0 | 24-10-2013 18:15 |
Создание закрытых ресурсов | freeos | Халява | 8 | 10-10-2013 21:11 |
Определение склейки файла и "отклеивание" клея [#1 - Секция ресурсов] | x0r | Видео | 11 | 10-03-2011 18:16 |