Что это за программный трюк, чтобы перечислить текущий процесс и записать в память текущую функцию, которая не задокументирована

Может ли кто-нибудь объяснить, почему это программное обеспечение может отображать все процессы и процессы записи без использования какой-либо функции API, связанной с этой конкретной задачей? или с текущей функцией может делать это. программное обеспечение называется ArtMoney. это программное обеспечение для редактирования памяти. я могу получить список этой функции из источника.

текущая новая версия называется

am800.exe

. этот список функций, которые используют программное обеспечение.

VirtualProtect
LoadLibraryA
ExitProcess
GetProcAddress
RegCloseKey
ImageList_Add
ChooseFontW
SymLoadModule64
Pie
WNetGetConnectionW
memset
NetWkstaGetInfo
IsEqualGUID

как мы видим, у программного обеспечения есть функция loadlibraryA, что означает, что оно будет загружать другие dll при запуске. Я нашел DLL, которую загружает программное обеспечение, просматривая модули Process Explorer. я нашел am800.dll, у которого есть несколько функций.

SetThreadLocale
GetLastError
GetStdHandle
GetSystemInfo
SysReAllocStringLen
PostThreadMessageW

посмотрев, я не нашел никакой связанной функции, которая может отображать такие процессы, как EnumProcesses и WriteProcess. после этого я думаю, что снова есть модуль, который загружается до am800.dll. как я проверил в проводнике процессов. открывать 1 на 1. подозрительного файла нет. это программное обеспечение является популярным старым программным обеспечением. поэтому я думаю, что у этого разработчика есть опыт, чтобы скрыть существование.


person Community    schedule 11.12.2017    source источник


Ответы (1)


LoadLibraryA загружает DLL в процесс во время выполнения, а GetProcAddress возвращает указатель функции на конкретную функцию в загруженной библиотеке. Вместе эти две функции можно использовать для эффективного позднего связывания с функциями DLL.

В какой-то момент во время выполнения программа использует эти функции для загрузки необходимых ей библиотек, а затем получает указатели на нужные функции. Это может быть сделано для того, чтобы избежать обнаружения вредоносных программ, или, возможно, для того, чтобы программа могла работать с несколькими версиями API-интерфейсов Windows, которые могут быть несовместимы друг с другом.

person cdhowie    schedule 11.12.2017
comment
Я бы не ожидал, что это позволит избежать обнаружения вредоносных программ; открытие dll по-прежнему будет считаться приложением, открывающим файл; и все открытые файлы будут проходить через антивирусное программное обеспечение (хотя большинство из них, вероятно, проходят). - person UKMonkey; 11.12.2017
comment
теперь я понял. Кстати, есть ли другая функция, похожая на точный GetProcAddress? - person ; 11.12.2017
comment
@claudia я не понимаю, что ты имеешь в виду. - person cdhowie; 11.12.2017
comment
@cdhowie i означает другую функцию, которая действует как GetProcAddress и вызывает функцию внутри dll во время выполнения. или другая функция, которая может показаться вредоносным кодом. - person ; 11.12.2017
comment
@claudia Могут быть и другие, но мне ничего не приходит в голову. GetProcAddress сам по себе не вызывает подозрений. Есть много законных применений этой функции. Хорошим примером может быть программа, которая может загружать плагины; он будет перечислять библиотеки DLL в каталоге, загружать каждую с помощью LoadLibraryA, а затем использовать GetProcAddress для взаимодействия с подключаемым модулем. - person cdhowie; 11.12.2017