· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.HEAP —› Крис, не поможешь советом?

Посл.отвђт Сообщенiе


Дата: Июн 19, 2004 15:08:41 · Поправил: Sap

Я новичок в дизассемблировании, так что просьба - сильно не ругаться.

Теперь непосредственно к сути. Есть программа и база данных к ней. Вот уже какую
неделю пытаюсь разобраться, как получить доступ к базе данных. Прошел краткий курс ассемблера, проработал несколько крэкми и прочел десяток статей. Поставил IDA, SoftIce и ринулся исследовать программу вдоль и поперек.

В результате трех недель - ноль. Цель так и не достигнута, хотя по ходу дела
много чего нового узнал.

Кстати, нашел раннюю версию этой же программы под Unix. Там этот файл похоже, не зашифрован. Прикладываю снимок экрана, откуда видны оба файла (т.е. зашифрованный и незашифрованный). Может быть, один взгляд профи на этот снимок позволит сделать какое-либо предположение...

В любом случае, буду признателен за любую помощь, причем не только от Криса, но и от любого участника форума.

667348652__screen2.gif


Дата: Июн 20, 2004 03:50:43 · Поправил: coban2k

Из картинки видно, что файлы имеют различный размер. Это разные версии одного и тогоже файла или есть вероятность того что windows-вариант еще и пакует файл?


Дата: Июн 20, 2004 11:00:37 · Поправил: Sap

Кажется, я все же разобрался с алгоритмом шифрования.


Дата: Июн 20, 2004 12:32:43

хм, а что тебя смущает ?

переменная [ebp+var_4] - счетчик (смещение в файле)

входные аргументы:
[ebp+arg_0] - адрес начала шифрованного файла
[ebp+arg_4] - длина файла
[ebp+arg_8] - флаг, определяющий шифровать или дешифровать файл. (типа dwCryptDecryptFlag).

на С примерно так:
// ...
int dwPos;
BYTE * lpFileData; 
// ...

if (arg_8 != 1) {
	for (dwPos = 0; dwPos < dwFileLen; dwPos++) {
	
		*(lpFileData+dwPos) = (BYTE)( (DWORD)(*(lpFileData+dwPos)) + dwPos*6-5);
	
	}

} else {

	for (int dwPos = 0; dwPos < dwFileLen; dwPos++) {
	
		*(lpFileData+dwPos) = (BYTE)( (DWORD)(*(lpFileData+dwPos)) - dwPos*6-5);
	
	}	

}


мог где ошибиться, не проверял

а вообще, мне понравилась оптимизация :) +20 - 21 Ж)


Дата: Июн 21, 2004 06:51:32

Funbit, спасибо за отзыв. Мне понадобился целый день, чтобы разобраться в листинге. И я пришел к тем же результатам.

Просто я не ожидал, что смогу самостоятельно расколоть алгоритм шифрования (с моими минимальными познаниями по дизассемблированию). Но все оказалось гораздо проще.

P.S. Комбинация +20h - 20h у меня тоже вызвала улыбку.

Спасибо!


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.050