Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

вопрос по BASM   Найти похожие ветки 

 
ph0sgen ©   (2006-11-04 01:21) [0]

Доброго времени суток, уважаемые мастера.

у меня такой вопрос:
мне очень нужно вставить следующую вставку:


       ...
       ASSUME  edx: ptr IMAGE_EXPORT_DIRECTORY

       mov     edx, [esi + 078h]
       add     edx, hModule
       mov     ebx, [edx].AddressOfNames
       add     ebx, hModule
       ...


но встроенный ассемблер не понимает ASSUME. чем аналогичным можно это заменить? очень нужно.

благодарю за внимание.


 
Дмитрий Белькевич ©   (2006-11-04 03:09) [1]

Список экспорта хочешь получить?


 
ph0sgen ©   (2006-11-04 05:33) [2]

пытаюсь сделать аналог GetProcAddress


 
Сергей М. ©   (2006-11-04 10:20) [3]


> пытаюсь сделать аналог GetProcAddress


Так это не делается.


 
Ketmar ©   (2006-11-04 23:16) [4]

а лучше никак не делать. потому что с асмом вопрошающий явно незнаком.


 
Джо ©   (2006-11-05 02:46) [5]

Вот если бы еще кто (прямо тут) объяснил смысл делания "аналога" GetProcAddress на BASM, так это было бы просто дивно, чудно и крайне полезно.


 
Германн ©   (2006-11-05 02:49) [6]


> Джо ©   (05.11.06 02:46) [5]
>
> Вот если бы еще кто (прямо тут) объяснил смысл делания "аналога"
> GetProcAddress на BASM, так это было бы просто дивно, чудно
> и крайне полезно.
>

Насчёт "полезности" есть сомнения.


 
Джо ©   (2006-11-05 03:09) [7]

> [6] Германн ©   (05.11.06 02:49)
>
> > Джо ©   (05.11.06 02:46) [5]
> >
> > Вот если бы еще кто (прямо тут) объяснил смысл делания
> "аналога"
> > GetProcAddress на BASM, так это было бы просто дивно,
> чудно
> > и крайне полезно.
> >
>
> Насчёт "полезности" есть сомнения.

Полезность есть продукт при полном удовлетворении сторон :D А ежели стороны довольны, то и топика нет, и вопроса нет — в итоге, все довольны :)


 
Германн ©   (2006-11-05 03:35) [8]


> Джо ©   (05.11.06 03:09) [7]

Ну копирайт не помешал бы тут! :-). ИИ,ЕП всё-таки заслуживают подобного отношения к себе.
А так - согласен. :-)


 
Ketmar ©   (2006-11-05 03:59) [9]

>[8] Германн(c) 5-Nov-2006, 03:35
>Ну копирайт не помешал бы тут! :-).
и так все знают. а кто не знает -- тому эцих.


 
Джо ©   (2006-11-05 04:41) [10]

[8] Германн
> Ну копирайт не помешал бы тут! :-).

Не буду же я ставить копирайт перед исковерканной (под свои нужды) цитатой? А так:  [9] Ketmar :)


 
jack128(not home)   (2006-11-05 20:18) [11]


> Вот если бы еще кто (прямо тут) объяснил смысл делания "аналога"
> GetProcAddress на BASM, так это было бы просто дивно, чудно
> и крайне полезно.

Ну как вариант, получение реального адреса вызова функции как метод противостояния перехвату АПИ :) Кстати достаточно часто встречающаяся задачка в определенных кругах :)


 
Rouse_ ©   (2006-11-05 20:18) [12]

Пардон, последний пост мой :)


 
Ketmar ©   (2006-11-05 20:28) [13]

>[12] Rouse_(c) 5-Nov-2006, 20:18
>Пардон, последний пост мой :)
опа...


 
Anatoly Podgoretsky ©   (2006-11-05 20:50) [14]

> Rouse_  (05.11.2006 20:18:12)  [12]

Вы там скучковались?
Ну так выпейти и за нас.
На здоровье.


 
Германн ©   (2006-11-06 02:21) [15]


> Rouse_ ©   (05.11.06 20:18) [12]
>
> Пардон, последний пост мой :)

Т.е. Александр из Москвы "не долетевший на самолёте до Москвы", считается Евгением из Мытищ не доползшим до дома? :-)


 
Rouse_ ©   (2006-11-06 17:11) [16]

Женька просто в отпуске жил у меня в квартире, во избежание и чтоб лампочки по вечерам в квартире моргали периодически ;)


 
Rouse_ ©   (2006-11-06 17:18) [17]

А во поводу нахождения адреса:

;---------------- Base ---------------

proc  Base
dw 0a164h,0030h,0000h
mov eax, [eax+0Ch]
mov esi, [eax+1Ch]
lodsd
mov eax, [eax+08h]
ret
endp
;-------------- GetAddress -------------------------
proc   GetAddress Base,Function

local  OptionalHeader:DWORD
local  ExportDirectory:DWORD
local  NumberOfNames:DWORD
local  nOrdinal:WORD
push ebx edi esi edx ecx
mov ebx,[Base]
add ebx,3ch
mov ebx,[ebx]
add ebx,18h
add ebx,[Base] ;--- ebx - Optional Header
mov [OptionalHeader],ebx
add ebx,60h
mov ebx,[ebx]
add ebx,[Base];--- ebx - Export Directory
mov [ExportDirectory],ebx
add ebx,20h
mov edi,[ebx];--- edi - ExportDirectory->AddressOfNames
add ebx,4h
mov esi,[ebx];--- esi - ExportDirectory->AddressOfNamesOrdinal
add edi,[Base]
add esi,[Base]
mov edx,[ExportDirectory]
add edx,18h
mov edx,[edx]
mov [NumberOfNames],edx
xor ecx,ecx
mov ecx,edx
f10:
xor edx,edx
mov edx,[edi]
add edx,[Base];edx - NameOfFunction
push edx
push [Function]
call strcmp
test eax,eax
jz   f30
add edi,4h
add esi,2h
loop f10
xor  eax,eax
pop ecx edx esi edi ebx
ret
f30:
xor  ecx,ecx
mov  cx,word[esi]
mov  [nOrdinal],cx

mov  eax,[Base]
mov  edi,[ExportDirectory]
add  edi,1ch
mov  edi,[edi]
add  edi,eax
imul ecx,ecx,4
add  edi,ecx
mov  ebx,[edi]
add  eax,ebx
pop ecx edx esi edi ebx
ret
endp


Единсдвенный минус, вот это:

dw 0a164h,0030h,0000h
mov eax, [eax+0Ch]

под 98 не сработает, а так для NT самое оно :)

Параметры вызова - адрес библиотеки и имя функции :)


 
ph0sgen ©   (2006-11-07 17:49) [18]

спасибо Rouse_. обязательно попробую ваш вариант.

лично я пытался вставить такой код:


function GetProcAddressEx(hModule: DWORD; szProcName: PChar) : Pointer; assembler;

asm
       mov     esi, hModule
       cmp     word ptr [esi], IMAGE_DOS_SIGNATURE
       jnz     @not_found

       add     esi, dword ptr [esi + 3ch]
       cmp     word ptr [esi], IMAGE_NT_SIGNATURE
       jnz     @not_found

       assume  edx: ptr IMAGE_EXPORT_DIRECTORY

       mov     edx, [esi + 078h]
       add     edx, hModule
       mov     ebx, [edx].AddressOfNames
       add     ebx, hModule

@l00p:
       mov     edi, [ebx]
       add     edi, hModule
       mov     esi, szProcName
       push    ecx
       repe    cmpsb
       je      @found
       pop     ecx
       add     ebx, 4
       inc     eax
       cmp     [edx].NumberOfNames, eax
       jne     @l00p

       jmp     @not_found

@found:
       pop     ecx
       mov     ecx, hModule
       mov     esi, ecx
       add     ecx, [edx].AddressOfNameOrdinals

       lea     eax, [ecx + 2*eax]
       movzx   eax, word ptr [eax]
       lea     eax, [esi + 4*eax]
       add     eax, [edx].AddressOfFunctions

       mov     eax, [eax]
       add     eax, esi
       ret

       assume  edx: nothing

@not_found:
       xor eax, eax
       ret
end;


единственное в начале мне хотелось бы заменить assume.


 
Ketmar ©   (2006-11-07 18:15) [19]

>[18] ph0sgen(c) 7-Nov-2006, 17:49
>единственное в начале мне хотелось бы заменить assume.
предлагаю всё-таки сменить моск.


 
Rouse_ ©   (2006-11-07 22:27) [20]

Ыц.. красиво, а кто вас так учил выставлять сегментный регистр?
assume  edx: ptr IMAGE_EXPORT_DIRECTORY


 
Ketmar ©   (2006-11-07 22:53) [21]

>[20] Rouse_(c) 7-Nov-2006, 22:27
>Ыц.. красиво, а кто вас так учил выставлять сегментный
>регистр?
TASM/MASM, вестимо. и кривые руководства. я же говорю -- моск сменить надо.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.045 c
15-1172479233
vajo
2007-02-26 11:40
2007.03.25
Проводник тормозит в сети


10-1130505467
Volodya_
2005-10-28 17:17
2007.03.25
WebBrowser


15-1172409457
Par
2007-02-25 16:17
2007.03.25
как скачивать фильмы чтобы провайдер не понял что это фильмы


2-1172598398
dsa256
2007-02-27 20:46
2007.03.25
Прослушивание широковещательных каналов по протоколу UDP


15-1172761095
iXT
2007-03-01 17:58
2007.03.25
Аналог SpinEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский