Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2008, 22:33   #1
Юрий_BASE
Новичок
Джуниор
 
Регистрация: 18.04.2008
Сообщений: 1
Восклицание как в Си прочитать ЕХЕ файл в HEX виде ??

умоляю расскажите, покажите..
как в Си прочитать ЕХЕ файл (или вообще любой) в HEX виде ??
+ еще хочу понять как сделать так чтобы можно было например в cmd вбить:
My_HEX_Viewer notepad.exe
и он автоматом бы почитал HEX для блокнота...(если тот конечно лежит в том же архиве что мой хекс вьювер)
Юрий_BASE вне форума Ответить с цитированием
Старый 18.04.2008, 22:54   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Юрий_BASE Посмотреть сообщение
умоляю расскажите, покажите..
как в Си прочитать ЕХЕ файл (или вообще любой) в HEX виде ??
+ еще хочу понять как сделать так чтобы можно было например в cmd вбить:
My_HEX_Viewer notepad.exe
и он автоматом бы почитал HEX для блокнота...(если тот конечно лежит в том же архиве что мой хекс вьювер)
В HEX не читают, а выводят.
Первое что попалось под руку:
Код:
VOID	DBG_HexDump(PVOID pData, ULONG nDataSize)
{
	CHAR buf[16];
	CHAR string[17];
	PVOID pTmp;
	ULONG BytesRemains = nDataSize;
	LONG nToCopy;
	PVOID pFrom = pData;
	LONG i;
	__try{
		if(pData != NULL && nDataSize > 0){
			DbgPrint("+------------------------------------------------------------------------------------+\n\r");
			DbgPrint("| HexDump:                                                                           |\n\r");
			DbgPrint("| Starting address: 0x%08X, Length: %16d byte(s)                     |\n\r", pData, nDataSize);
			DbgPrint("+------------------------------------------------------------------------------------+\n\r");
			__try{
				while( BytesRemains > 0){
					if(BytesRemains > 16) nToCopy = 16; else nToCopy = BytesRemains;
					if(nToCopy >  0){
						RtlMoveMemory(buf, pFrom, nToCopy);
						RtlZeroMemory(string, 17);

						for(i = 0; i < 16; i++){
							if(buf[i] >= 32 && buf[i] < 128) string[i] = buf[i];
							else string[i] = '.';
						}
						DbgPrint("| 0x%08X | %02x %02x %02x %02x %02x %02x %02x %02x |  %02x %02x %02x %02x %02x %02x %02x %02x | %s |\n\r",
							pFrom,
							buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7],
							buf[8], buf[9], buf[10], buf[11], buf[12], buf[13], buf[140], buf[15],
							&string[0]);
						(ULONG)pFrom += nToCopy;
						BytesRemains -= nToCopy;
					}
				}
			}
			__except(EXCEPTION_EXECUTE_HANDLER){
				DbgPrint("+------------------------------------------------------------------------------------+\n\r");
				DbgPrint("| EXCEPTION!                                                                         |\n\r");
				DbgPrint("+------------------------------------------------------------------------------------+\n\r");
			}
			DbgPrint("+------------------------------------------------------------------------------------+\n\r");
		}
	}
	__except(EXCEPTION_EXECUTE_HANDLER){
	}

}
DbgPrint замените на printf - это был сделаный на скорую руку дампер дляотладки драйвера.
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как прочитать текстовый файл на удаленном компьютере/сервере (с авторизацией) 3lander Общие вопросы Delphi 4 07.08.2008 18:20
Помогите прочитать reg файл в RichEdit или ListBox inndim Общие вопросы Delphi 4 09.06.2008 12:56
Как прочитать сообщение по ICQ? Иллидан Работа с сетью в Delphi 5 18.02.2008 18:33
как прочитать файл бодяга Общие вопросы Delphi 1 09.09.2007 20:37
Не могу прочитать файл до конца... FEAR Общие вопросы C/C++ 9 04.01.2007 21:46