Приветствую. У меня очень-очень поверхностные знания о структуре исполняемых файлов или DLL. У меня есть DLL, которая используется каким-то сторонним приложением, в этой DLL я заменил один байт (занопил что-то). А теперь хочу сделать так что бы при побайтовом анализе двух файлов (оригинального и моего) не возможно было при беглом анализе определить что в файле только одна модификация. Т.е. что бы с начала заголовка DLL вcё содержимое файла съехало например на +1. Так же хочу искусственно увеличить размер DLL. Что подскажете, куда копать?
1) понять вкраце структуру файла (заголовки, потом секции) 2) обязательно разобраться с релоками 3) если просто надо сместить на 1 байт, то можно увеличить дос-стаб (между смещением 40h и заголовком РЕ) - но это подействует только на сравнение РЕ. На сравнении секций это не отразится. Поэтому см. пп. 1-2
а вот тут тебе надо почитать про секции и их заголовки. тебе надо будет или добавить новую секцию, или физически и виртуально увеличить последнюю. Первое проще, т.к. делается любым РЕ-редактором
MSoft Да ладно... сложности какие. Испохабить dll можно подходящим упаковщиком. А увеличить размер... да просто записать в конец файла ерунды всякой, не вдаваясь в подробности формата. И будет оверлей, который в большинстве случаев ни на что не повлияет.
parawall Что такое "беглый анализ"? Например, выполнив "fc.exe /B dll1.dll dll2.dll", сразу увижу одно или более изменений.
MSoft Маловато. Это правда. Но зато эффективно. Ну можно добавить немного дзена... 1) Насчёт смещения заголовка - это верно. Сдвигаем заголовок, корректируем DWORD по адресу 3Ch и заголовок сместили (об этом Вы, собственно, написали). 2) Насчёт смещения секций и увеличения размера файла... ну это как раз делается без добавления секций или расширения последней. Это можно сделать за счёт заголовка: корректируем SizeOfHeaders на значение, кратное FileAlignment, а потом в заголовке каждой секции на это же значение сдвигаем PointerToRawData. Одним выстрелом двух зайцев: и размер увеличили, и сместили всё. А в полученное пространство можно ещё и сместить заголовок, а лишнее место мусором позабивать. В этом больше дзена, чем в приписывании оверлея, хотя опять таки можно возразить, что в добавлении своей секции в конец файла дзена ещё больше. НО! Это менее эффективно, чем расширение заголовка (т.к. не даёт смещения секций), и уж тем более менее эффективно, чем использование упаковщика.