Форум: "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