Сейчас на форуме: rmn, Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+6 невидимых)

 eXeL@B —› Программирование —› fasm+windows.inc=проблема
Посл.ответ Сообщение

Ранг: 12.6 (новичок)
Активность: 0.020
Статус: Участник

Создано: 30 июля 2008 20:43
· Личное сообщение · #1

в общем собрал инклюд для работы с PE
в общем пишу:
[CODE]
push eax ;->[ebp-0x8] EAX=MZP
mov eax,[eax+0x3c]
add eax,dword [ebp-0x8]
movzx ax,byte [eax+IMAGE_FILE_HEADER.NumberOfSections]
[/CODE]
и в оле заммечаю:
[CODE]
00401047 |. 50 PUSH EAX
00401048 |. 8B40 3C MOV EAX,DWORD PTR DS:[EAX+3C]
0040104B |. 0345 F8 ADD EAX,DWORD PTR SS:[EBP-8]
0040104E |. 66:8B40 02 MOV AX,WORD PTR DS:[EAX+2]
[/CODE]
хм...м...чтобы было правильно нужно по крайней мере чтобы было MOV AX,WORD PTR DS:[EAX+6]

вот сижу и думаю в чем проблема. Еще прикол в том, что мне на боарде flatassembler один товарищ давал недоделанную windows.inc, там были некоторые структуры и...и там была тоже такая проблема
как решить проблему ?



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 30 июля 2008 21:22
· Личное сообщение · #2

решить просто - подсунуть правильную структуру, и для фасма нафиг не нужен windows.inc, там есть win32a.inc и прочие



Ранг: 12.6 (новичок)
Активность: 0.020
Статус: Участник

Создано: 14 августа 2008 15:47
· Личное сообщение · #3

да ? и как же работать со структурами ?
к примеру: add eax,[eax+IMAGE_DOS_HEADER.e_lfanew] ; где eax MZP ?



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 14 августа 2008 17:36
· Личное сообщение · #4

абсолютно верно



Ранг: 12.6 (новичок)
Активность: 0.020
Статус: Участник

Создано: 14 августа 2008 19:54
· Личное сообщение · #5

[code]_AlgnPhSz:
add [esi+IMAGE_SECTION_HEADER.SizeOfRawData],Virsize
mov eax,[edi+IMAGE_DOS_HEADER.e_lfanew]
dec eax
add [esi+IMAGE_SECTION_HEADER.SizeOfRawData],eax
not eax
and [esi+IMAGE_SECTION_HEADER.SizeOfRawData],eax[/code]
я так понимаю not и and делается для того, чтобы отрезать часть ненужного. это верно ?
а так конечно все понятно
2)
[code]_AlgnVrSz:
add edi,[edi+IMAGE_DOS_HEADER.e_lfanew]
mov ecx,[esi+IMAGE_SECTION_HEADER.VirtualSize]
jecxz _PtchImSz
add [esi+IMAGE_SECTION_HEADER.VirtualSize],Virsize
mov eax,[edi+0x3c] ;optional_header.FileAlignment
dec eax
add [esi+IMAGE_SECTION_HEADER.VirtualSize],eax
not eax
and [esi+IMAGE_SECTION_HEADER.VirtualSize],eax[/code]
чего-то смотрю в PEtools --ничего не изменилось в IMAGE_SECTION_HEADER.VirtualSize самого файла
в чем может быть причина. может быть в примере что-то неверно ?

3)у меня есть переделанный windows.inc for fasm. есть внутри структуры.
я к любой структуре могу обратиться примерно так:
[code]mov eax,[esp] ;->EAX=ZM
add eax,[eax+IMAGE_DOS_HEADER.e_lfanew] ;->EAX=EP
далее просто...
mov eax,[eax+IMAGE_FILE_HEADER.NumberOfSections] ;-> угу, все нормально, в eax[/code]
именно то, что нужно было нам

а вот с OPTIONAL_HEADER так не прокатывает
[code]mov eax,[esp] ;->EAX=ZM
add eax,[eax+IMAGE_DOS_HEADER.e_lfanew] ;->EAX=EP
mov eax,[eax+IMAGE_OPTIONAL_HEADER.FileAlignment] ;-> вот так не получается[/code]
а вот по внешнему смещению получается:
например:
[code]mov eax,[esp] ;->EAX=ZM
add eax,[eax+IMAGE_DOS_HEADER.e_lfanew] ;->EAX=EP
mov eax,[eax+0x3C] ;->где 0x3C есть внешнее смещение FileAlignment[/code]
почему так получается ?



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 15 августа 2008 18:45
· Личное сообщение · #6

а хер его знает


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


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