Resource

Тема в разделе "WASM.BEGINNERS", создана пользователем MaxOn, 8 май 2009.

  1. MaxOn

    MaxOn Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    45
    Здраствуйте! у меня такая проблема:
    на фасме надо получить RVA ресурса в файле.
    Вот что есть на данный момент:
    Код (Text):
    1. xcall 0,CreateFileA,fName,GENERIC_READ+GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0x80,0,0
    2. mov [SHandle],eax
    3.  
    4. xcall 0,CreateFileMappingA,[SHandle],0,PAGE_READWRITE,0,0,0
    5. mov [handle],eax
    6. xcall 0,CloseHandle,[SHandle]
    7. xcall 0,MapViewOfFile,[handle],FILE_MAP_ALL_ACCESS,0,0,0
    8. mov [handle],eax
    9.  
    10. ;--- поиск ресурса
    11. int 3
    12. add eax,[eax+3ch]
    13. add eax,88h
    14. mov esi,[eax]
    15. add esi,[handle]
    16. mov eax,[esi+12]
    как я понимаю после add eax,88h eax должен указывать на структуру IMAGE_RESOURCE_DIRECTORY. Я хочу получить число ресурсов индентифицируемых по имени - mov eax,[esi+12]. И здесь отладчик пишет Access violation.
    PS на макрос xcall не обращайте внимания, он для ручного импорта api.
     
  2. MaxOn

    MaxOn Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    45
    хм попробовал взять другой файл.. теперь программа не падает, но вместо количества ресурсов, идентифицируемых по имени возвращает ноль. Тоже и с ресурсами , идентифицируемыми по ID
     
  3. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Тама наверное RVA(?) и надо добавить IB, а ресурсы бывают не всегдо.
     
  4. MaxOn

    MaxOn Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    45
    IB ? что это такое? Потом в том файле ресурсы есть полюбому. А насчет рва щас проверим. А
     
  5. MaxOn

    MaxOn Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    45
    нет это не RVA. да и разве поле типа Word может содержать RVA?
     
  6. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    MaxOn
    может, пока не сильно с форматом PE, лучше юзать API ?
     
  7. MaxOn

    MaxOn Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    45
    а ib - imagebase? тьфуты.. я ж его и добавляю add esi,[handle]
     
  8. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    add eax,[eax+3ch] ;; +lfanew
    add eax,88h ;; RSRC_RVA (need to check)
    mov esi,[eax] ;; esi=>RSRC
    add esi,[handle] ;; +ptr to file_begin
    mov eax,[esi+12] ;; Extract something ...

    0) If you're worknig with FILE (or memory mapped file, the same) you have to calculate PhysicalOffset by RVA. It could be done by scanning through SECTION_DESCRIPTORS (if my RVA within SectionStartRVA,...+);

    1) If you're analyzing LOADED EXE file (e.g. at the running time) you, indeed, just have to add IB.
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Смотреть реализацию LdrpSearchResourceSection_U.
     
  10. MaxOn

    MaxOn Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    45
    Clerk спасибо. Да я впринципе разобрался уже,вычитал тут на сайте чтобы так не париться, надо мапить файл с параметром SEC_IMAGE