Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Помогите с программой IDA...

Ответить
Настройки темы
Разное - Помогите с программой IDA...

Пользователь


Сообщения: 144
Благодарности: 3

Профиль | Отправить PM | Цитировать


Здравствуйте уважаемые программисты помогите разобраться с одним вопросом по программе IDA.. Писал тут

Отправлено: 23:41, 03-04-2013

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


А здесь продублировать нельзя? Нет желания копаться в ru board'овской свалке.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 05:53, 04-04-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для yurfed

Ветеран


Сообщения: 20117
Благодарности: 3139

Профиль | Отправить PM | Цитировать


Цитата by_gangster:
помогите разобраться с одним вопросом по программе IDA »
Может стоит задать этот вопрос здесь, а не отфутболивать по разным ссылкам?
Скажите хотя бы версию IDA, которой пользуетесь. Там столько вариантов, что достаточно трудно понять про что вы говорите. И если можно, ссылку на ваш вариант. Так будет легче понять.
Посмотрите здесь, думаю найдёте всё, что вам нужно.

Последний раз редактировалось yurfed, 04-04-2013 в 06:39.


Отправлено: 06:09, 04-04-2013 | #3


Пользователь


Сообщения: 144
Благодарности: 3

Профиль | Отправить PM | Цитировать


Имеется .dll файл который я открыл в программе IDA (v6.1) и отредактировал. Как мне теперь сохранить обратно в dll формате ?

Отправлено: 18:59, 04-04-2013 | #4


Аватара для deviance

Пользователь


Сообщения: 123
Благодарности: 43

Профиль | Отправить PM | Цитировать


by_gangster, IDA, насколько я знаю, умеет только генерировать .diff файлы, в которых различия между оригинальным файлом и измененным записаны в формате:
Код: Выделить весь код
offset: old-byte new-byte
Патч нужно делать самому - руками в hex-редакторе. Или напишите утилиту.

Последний раз редактировалось deviance, 04-04-2013 в 19:45.


Отправлено: 19:30, 04-04-2013 | #5


Аватара для SharkyUA

Ветеран


Сообщения: 756
Благодарности: 103

Профиль | Отправить PM | Цитировать


Создание патчей (dif) в IDA (Англ.)

-------

Любое событие с нами, с нас и начинается. Не будьте рабами событий. Это события — слуги нам.
Поделитесь музыкой / [Windows 8] Визуальные стили / Plank - Dock for Linux

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:20, 05-04-2013 | #6


Аватара для deviance

Пользователь


Сообщения: 123
Благодарности: 43

Профиль | Отправить PM | Цитировать


by_gangster, можете использовать следующий код:
Код: Выделить весь код
#include <stdio.h>
#include <Windows.h>
#include <ImageHlp.h>

#define MAX_BIN_PATCHES 100
#define MAX_LINE        17
#define CHUNK_FORMAT    "%08x: %02x %02x"

typedef struct patch_chunk_s{
	unsigned int  offset;
	unsigned char old_byte;
	unsigned char new_byte;
} patch_chunk_t;

int read_chunks(char* from_file, patch_chunk_t* chunks){
	char  buf[MAX_LINE] = {0};
	FILE* f = NULL;
	int   cnt = 0;

	f = fopen(from_file, "r");
	if ( f == NULL )
		return -1;

	while ( cnt < MAX_BIN_PATCHES ){
		if ( fgets(buf, MAX_LINE, f) == NULL){
			break;
		} else if ( *buf == '\n' || buf[8] != ':' || buf[9] != ' ' || buf[12] != ' '){
			continue;
		} else 
			sscanf(buf, CHUNK_FORMAT, &chunks[cnt].offset, &chunks[cnt].old_byte, &chunks[cnt].new_byte);
			cnt++;
	}
	return cnt;
}

void write_chunks(LOADED_IMAGE* image, patch_chunk_t* chunks, unsigned nchunks){
	unsigned idx = 0;
	while ( idx < nchunks )
	{
		if ( chunks[idx].offset > image->SizeOfImage ){
			printf("0x%08X: invalid offset\n", chunks[idx].offset);
		}
		else if ( image->MappedAddress[chunks[idx].offset] != chunks[idx].old_byte ){
			printf("0x%08X: %02X -> %02X err\n", chunks[idx].offset, chunks[idx].old_byte, chunks[idx].new_byte);
		}
		else {
			image->MappedAddress[chunks[idx].offset] = chunks[idx].new_byte;
			printf("0x%08X: %02X -> %02X ok\n", chunks[idx].offset, chunks[idx].old_byte, chunks[idx].new_byte);
		}
		idx++;
	}
}

int main(int argc, char* argv[])
{
	patch_chunk_t chunks[MAX_BIN_PATCHES] = {0};
	char  usage[] = {"usage: [file-to-patch] [ida-diff]\n"};
	int   ret = -1;
	char* image_path = NULL;
	char* diff_file = NULL;
	unsigned nchunks = 0;

	LOADED_IMAGE li;

	if (argc < 3){
		printf(usage);
		return -1;
	}
	else {
		image_path = argv[1];
		diff_file = argv[2];
	}

	ret = MapAndLoad(image_path, NULL, &li, 0 /*.exe default ext.*/, 0 /*readwrite access*/ );
	if ( ret == 0 ){
		printf("Unable to load %s\n", image_path);
		return -1;
	}
	else {
		printf("Image %s loaded.\n",image_path);
	}
	ret = read_chunks(diff_file, chunks);

	if ( ret > 0 ){
		nchunks = ret;
		printf("File %s loaded. %d chunks read.\n", diff_file, nchunks );
	} 
	else {
		printf("Unable to load %s: ", diff_file);
		if ( ret == 0 )
			printf("file is empty.\n");
		else
			printf("no access.\n");
		return -1;
	}

	write_chunks(&li, chunks, nchunks);
	ret = UnMapAndLoad(&li);
	return ret;
}

Отправлено: 16:12, 05-04-2013 | #7


Пользователь


Сообщения: 144
Благодарности: 3

Профиль | Отправить PM | Цитировать


deviance, Я извеняюсь конечно, но это что за язык программирования ? Я просто в программировании вобще 0.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:34, 06-04-2013 | #8


Аватара для deviance

Пользователь


Сообщения: 123
Благодарности: 43

Профиль | Отправить PM | Цитировать


by_gangster, что же Вы изменяете в .dll файле, если не знаете программирования? Текстовые строки?
SharkyUA дал отличную ссылку на статью. Ознакомьтесь.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:07, 06-04-2013 | #9


Пользователь


Сообщения: 144
Благодарности: 3

Профиль | Отправить PM | Цитировать


deviance, Можете пожалуйста помочь, я в той статье которую дал SharkyUA, не понял... Извеняюсь...

P.S Да меняю
Цитата deviance:
Текстовые строки »

Отправлено: 17:57, 11-04-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Помогите с программой IDA...

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Помогите с программой Inno Setup !!!!!!! by_gangster Автоматическая установка приложений 19 08-03-2012 21:33
Установка - Помогите пожалуйста с программой iTALC Quad174 Программное обеспечение Windows 10 21-10-2011 00:03
C/C++ - Помогите с Программой под Linux Холопайнен Программирование и базы данных 0 24-05-2011 14:47
Помогите с программой на shell pogo Программирование в *nix 4 21-05-2010 12:24
IDA AnGel_of_Death Хочу все знать 6 24-03-2006 00:31




 
Переход