ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Процедура определения набора экспортируемых функций в библиотеке (ассемблер)
  #1  
Старый 05.06.2007, 17:02
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию Процедура определения набора экспортируемых функций в библиотеке (ассемблер)

Определяются все функции в библиотеке.
Код:
opredelenie_ proc
invoke _lopen, addr prFile, OF_WRITE ;открытие файла
mov cmd1,eax
.IF eax == -1
invoke _lcreat, addr prFile, 0
mov cmd1,eax
.ELSE                                                    
invoke _llseek, cmd1, 0, FILE_END
.ENDIF               
invoke LoadLibraryA,offset lib_ ; подгрузка либы в адресное пространство процесса
mov adr_,eax
.if eax==0
jmp ret_
.endif
Find_proc:
mov edi,eax   
mov eax,dword ptr [edi+3Ch] ; PE
mov ebx,eax
mov ebp,edi
mov edx,dword ptr [ebp+eax+78h] ; смещаемся на таблицу экспорта
add edx,ebp 
mov ecx,dword ptr [edx+18h] ; число функций
mov ebx,dword ptr [edx+20h] ; экспортируемые имена
add ebx,ebp ; таблица экспортируемых имен
funk_loo:
jecxz exit_  ; если функции кончились - выходим
dec ecx  ; уменьшаем счетчик функций
xor esi,esi
mov esi,dword ptr [ebx+ecx*4h] ; конец массива эксп. функций 
add esi,ebp ; адрес конца массива 
xor edi,edi
cld 
pusha
mov addres_,esi
.IF cmd1 != -1
invoke lstrlen,addres_ ; получаем длину строки с именем функции
invoke _lwrite, cmd1, addres_, eax ; записываем имя функции в файл
invoke _lwrite, cmd1,offset flash_,3	
.endif
popad
loo_:
xor eax,eax
lodsb  ; чтение следующего символа имени функции 
cmp al,ah ; конец строки?
je _next_ ; если конец - записываем имя функции в файл 
jmp loo_
_next_:
jmp funk_loo 
exit_:
invoke _lclose, cmd1 ; закрытие
ret_:
ret
opredelenie_ endp
Результат работы выводится в файл

Последний раз редактировалось 0x0c0de; 05.06.2007 в 21:06..
 
Ответить с цитированием

  #2  
Старый 05.06.2007, 19:08
NetMan
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме:
1089794

Репутация: 134
По умолчанию

Хм, а комменты можно к коду?
 
Ответить с цитированием

  #3  
Старый 05.06.2007, 22:00
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

Такой способ поиска функций используется в шелл-кодах. Достаточно красивый способ, кстати....
 
Ответить с цитированием

  #4  
Старый 09.06.2007, 20:50
NetMan
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме:
1089794

Репутация: 134
По умолчанию

flash_ это CR LF ?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написание Shell-code на Asm slesh Авторские статьи 18 23.04.2007 00:26



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ