FuckAV - Форум о крипторах

Анонимный антивирусный сканер VPN-сервис
[Copi]Team DDoS Service

SEO статьи - блог от создателя FuckAV | KOROVKA.so | Качественный VPN Service MultiVPN - PPTP/OpenVPN/DoubleVPN

Реклама на форуме | Помощь форуму | Аварийный блог

Наш Jabber-сервер расположен по адресу fuckav.in. Добро пожаловать!!!

Вернуться  

Для того, чтобы ответить в теме, необходимо зарегистрироваться.
 
Опции темы Опции просмотра
Prev Предыдущее сообщение   Следующее сообщение Next
Старый 24-01-2014   #1
guest88

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
Код:
// 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, теперь сохр-ся иконка без хидера
guest88 вне форума  
Сказали спасибо:
Dave (28-01-2014), Apple96 (24-01-2014), POCT (24-01-2014)
Для того, чтобы ответить в теме, необходимо зарегистрироваться.

Метки
break, buffer, декомпилятор, компилятор, ресурсов, фасм, фасма


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Официальный сайт PHP оказался в списке небезопасных для посещения ресурсов chef Новости 0 24-10-2013 18:15
Создание закрытых ресурсов freeos Халява 8 10-10-2013 21:11
Определение склейки файла и "отклеивание" клея [#1 - Секция ресурсов] x0r Видео 11 10-03-2011 18:16

Часовой пояс GMT +3, время: 16:59.



Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd. Перевод: zCarot
Други: SEO блог Deymos'a| ProLogic.Su| DServers.ru| Форум веб-мастеров