Сейчас на форуме: Rio, YDS, _MBK_, user99 (+10 невидимых)

 eXeL@B —› Основной форум —› Помогите с секциями
Посл.ответ Сообщение


Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 04 января 2006 07:20 · Поправил: Spirit
· Личное сообщение · #1

У меня возник вопрос, как на Delphi через Edit можно переименовывать секции.

VAR
SECTION_HEADER:ARRAY [1..MAX_SECTION_NUMBER] of SECTION;
/////////

begin if SECTION_HEADER[spirit1+1].SizeOfRawData>=$00000000
then begin {Тут два исхода}
{первый:}PE.SECTION_HEADER[spirit1+1].Name:='Edited'; //Если ставить эту строку, то все проходит
//нормально, но нельзя выбирать название секций непосредственно в программе.
{второй (нужный мне):}PE.SECTION_HEADER[spirit1+1].Name:=Edit2.Text; //Если ставлю такую строку,
//то начинается ругань: Incompatible types: 'Array' and 'TCaption'
sc:=sc+1;
Addlog('Section#'+IntToStr(sc)+' renamed to "Edited"');
end;
end;
//--------------------------------------------//
Можете закидать меня камнями, но сначала помогите.


З.Ы.: Странно, это второй топик, первый не появился на главной странице.

-----
iNTERNATiONAL CoDE CReW





Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 04 января 2006 07:35
· Личное сообщение · #2

наверняка есть функция Move() а у TCaption есть метод Text. Поучи ООП и приведение типов ей богу.




Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 04 января 2006 07:58
· Личное сообщение · #3

А можно по русски, а то я что-то непонял?

-----
iNTERNATiONAL CoDE CReW





Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 04 января 2006 08:59
· Личное сообщение · #4

У каждой переменной есть тип.
У тебя типы не совпадают.
Ты пытаешься массиву непонятно из чего присвоить строку.
Как ещё понятнее-то?




Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 04 января 2006 09:09
· Личное сообщение · #5

WELL
Спасибо, не вчера родился!
Я прошу помочь! И я понимаю, что массивы просто так строку не присвоить,
Но ведь есть же !EP(exe pack), написан он на delphi, и там каким-то образом
Имена секций можно выбирать!

-----
iNTERNATiONAL CoDE CReW





Ранг: 70.5 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 04 января 2006 10:53 · Поправил: 6aHguT
· Личное сообщение · #6

Spirit
Вот тебе кусок прям из сорца как мы в !ЕР делали

if Changetobox.Checked=true then
begin
for i:=1 to PE_HEADER.FILE_HEADER.NumberOfSections do
StrPCopy(SECTION_HEADER[i].Name,SecNameEdit.Text);
AddLog('All section name was change on '+SecNameEdit.Text);
end;


Незная таких мелочей нельзя нормально с PE форматом работать (имхо)




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 04 января 2006 10:53
· Личное сообщение · #7

Spirit
Тебе уже и так всё подробно объяснили.
Иди получше поучи программирование, раз ты таких элементарных вещей не можешь понять.
А ещё собрался писать прогу для работы с PE-форматом.
Так уж и пиши тогда полностью С НУЛЯ.
А чужие исходники юзать - много ума не надо.

Всё IMHO




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 04 января 2006 11:15
· Личное сообщение · #8

у меня тут возник вопрос =)
Spirit
6aHguT
что вы юзали при написании прог? если только дельфи (в нём описаны почти все структуры PE)
а не сторонние компоненты, то у меня есть несколько вопросов, просто я сам пишу прогу
для работы с PE небольшие косяки с импортом, но вроде разбираюсь... хотелось бы
узнать что-нить полезное =)

-----
[nice coder and reverser]





Ранг: 70.5 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 04 января 2006 11:49
· Личное сообщение · #9

Hellspawn
Только дельфи без сторонних компонентов. Ну и вставки асма по необходимости.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 04 января 2006 12:45 · Поправил: Hellspawn
· Личное сообщение · #10

не стал создавать новую тему... не считаю это нужным... вот в чём дело..

var
fh,fm : thandle;
Fp : pointer;
pDosHeader : PImageDosHeader;
pNtHeader : PImageNtHeaders;
begin
Fh:=CreateFile(PAnsiChar(pe_file),GENERIC_READ,FILE_SHARE_READ,nil,OPE N_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
Fm:=CreateFileMapping(fh,0,PAGE_READONLY, 0, 0,nil);
Fp:=MapViewOfFile(Fm,FILE_MAP_READ, 0, 0, 0);
pDosHeader:=PImageDosHeader(Fp);
pNtHeader:=PImageNtHeaders(Pointer(Dword(pDOSHeader)+Dword(pDOSHeader._lfanew)));

так открываю файл... и смотрю его характеристики...
нашел в windows.pas описание
PImageSectionHeader = ^TImageSectionHeader;
_IMAGE_SECTION_HEADER = packed record
Name: packed array[0..IMAGE_SIZEOF_SHORT_NAME-1] of Byte;
Misc: TISHMisc;
VirtualAddress: DWORD;
SizeOfRawData: DWORD;
PointerToRawData: DWORD;
PointerToRelocations: DWORD;
PointerToLinenumbers: DWORD;
NumberOfRelocations: Word;
NumberOfLinenumbers: Word;
Characteristics: DWORD;
end;

вот только не как не получается узнать всё о секциях pe файла...
наверное я туплю +)
пишу:

pSections : PImageSectionHeader;
...
Move(Pointer(Dword(Fp)+$3C)^,PE_HEADEROFFSET,4);
Move(Pointer(Dword(Fp)+PE_HEADEROFFSET+$14)^,PE_NT_HEADERSIZE,2);
Move(Pointer(Dword(Fp)+PE_HEADEROFFSET+$18+PE_NT_HEADERSIZE+(1*40))^,pSections^,40)

это не правильно =\

-----
[nice coder and reverser]





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 04 января 2006 13:23 · Поправил: Hellspawn
· Личное сообщение · #11

ой что то я совсем туплю =) сам разобрался...
может быть так:

var
pSections : _IMAGE_SECTION_HEADER;
...
PE_NT_HEADERSIZE:=0;
PE_HEADEROFFSET:=0;
Move(Pointer(Dword(Fp)+$3C)^,PE_HEADEROFFSET,4);
Move(Pointer(Dword(Fp)+PE_HEADEROFFSET+$14)^,PE_NT_HEADERSIZE,2);
Move(Pointer(Dword(Fp)+PE_HEADEROFFSET+$18+PE_NT_HEADERSIZE+(NM*40))^, pSections,40);
NM - номер секции, начиная с 0
40 - это как написано (IMAGE_SIZEOF_SECTION_HEADER = 40;)

ну всё пашет... теперь буду с импортом разбираться...

-----
[nice coder and reverser]





Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 06 января 2006 07:20
· Личное сообщение · #12

6aHguT
Огромное спасибо!
И объяснил и закидал!

-----
iNTERNATiONAL CoDE CReW





Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 06 января 2006 07:23
· Личное сообщение · #13

WELL
Ты уже достал!
Если ты модер, это еще не значит
что ты должен совать свои умные 5 копеек
в каждый топик!
Я нормально попросил помощь, вот бандит
мне помог, за что ему огромное спасибо!
А ты все встреваешь, а помочь ничем не можешь!

З.Ы.: Можешь забанить меня после этого, но задумайся
над этими строчками!

-----
iNTERNATiONAL CoDE CReW





Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 06 января 2006 07:25
· Личное сообщение · #14

Hellspawn
А что у тебя с импортом?
Там же элементарно, если тебе нужно узнать
его адрес или размер.

-----
iNTERNATiONAL CoDE CReW





Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 06 января 2006 07:31 · Поправил: Spirit
· Личное сообщение · #15

Hellspawn
Я пишу прогу для работы с секциями (to Well и без чужих исходников! )
Использую только юниты (из нестандартных) PE.pas от SMoKE, и PE_files.pas от незнаю кого.
Мне лично вставки асма ненужны, т.к. это не пакер, протектор.

-----
iNTERNATiONAL CoDE CReW




Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 08 января 2006 06:39
· Личное сообщение · #16

Вот встретил "ARTeam PE Tutorial.chm" (май 2005) - может кому в помощь - правда 7 мег
intechhosting.com/~access/ARTeam/tutorials/file_info/download1.php?file=Portable_Executable_File_Format_Compendium_v11_by_Goppit.rar




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 08 января 2006 12:53 · Поправил: Hellspawn
· Личное сообщение · #17

Spirit пишет:
Я пишу прогу для работы с секциями (to Well и без чужих исходников! )
Использую только юниты (из нестандартных) PE.pas от SMoKE, и PE_files.pas от незнаю кого.
Мне лично вставки асма ненужны, т.к. это не пакер, протектор.

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

Вот встретил "ARTeam PE Tutorial.chm" (май 2005)
спасиб уже сливаю... да размер не имеет значения +)
анлим так сказать...

-----
[nice coder and reverser]




Ранг: 54.2 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 08 января 2006 15:51
· Личное сообщение · #18

Spirit пишет:
PE_files.pas от незнаю кого.


Наверное это от DrGolova




Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 14 января 2006 11:50
· Личное сообщение · #19

DDA
А ты что экстрасенс?
Откуда ты знаешь какую я юниту использую,
когда ты ее не видел?

-----
iNTERNATiONAL CoDE CReW



 eXeL@B —› Основной форум —› Помогите с секциями
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати