Можно ли избавиться от вызова этой функции в dll файле? (исходного кода нету) .idata:1002A270 ; Imports from urlmon.dll .idata:1002A270 ; .idata:1002A270 ; HRESULT (__stdcall *URLDownloadToFileA)(LPUNKNOWN, LPCSTR, LPCSTR, DWORD, LPBINDSTATUSCALLBACK) .idata:1002A270 extrn URLDownloadToFileA:dword .idata:1002A270 ; CODE XREF: sub_10004DB0+462↑p .idata:1002A270 ; DATA XREF: sub_10004DB0+462↑r ... Код .idata:1002A270 ; Imports from urlmon.dll .idata:1002A270 ; .idata:1002A270 ; HRESULT (__stdcall *URLDownloadToFileA)(LPUNKNOWN, LPCSTR, LPCSTR, DWORD, LPBINDSTATUSCALLBACK) .idata:1002A270 extrn URLDownloadToFileA:dword .idata:1002A270 ; CODE XREF: sub_10004DB0+462↑p .idata:1002A270 ; DATA XREF: sub_10004DB0+462↑r ...
А так же вот от этой .idata:1002A144 ; HINSTANCE (__stdcall *ShellExecuteA)(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd) .idata:1002A144 extrn ShellExecuteA:dword .idata:1002A144 ; CODE XREF: sub_10004DB0+492↑p .idata:1002A144 ; DATA XREF: sub_10004DB0+492↑r Код .idata:1002A144 ; HINSTANCE (__stdcall *ShellExecuteA)(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd) .idata:1002A144 extrn ShellExecuteA:dword .idata:1002A144 ; CODE XREF: sub_10004DB0+492↑p .idata:1002A144 ; DATA XREF: sub_10004DB0+492↑r
Избавиться от вызова функции URLDownloadToFileA из библиотеки urlmon.dll без доступа к исходному коду невозможно. В DLL-библиотеках, функции экспортируются, что означает, что они доступны для вызова из других приложений или библиотек. Функции, которые не экспортируются, могут быть доступны только для использования внутри библиотеки и не могут быть вызваны извне.
Ну, например, пройдись по рефам функций, там, где есть их вызов - ставишь NOP (желательно также нопить и аргументы). Конечно, ты так логику программы поломаешь и будешь ловить приколы (в зависимости от того, что там разработчик напихал в хендлерах ошибок).