;---------- ---------- ---------- ---------- ---------- ; 作成者のURL ---> http://www.setsuki.com/ ;---------- ---------- ---------- ---------- ---------- ; 最終更新日:2014/09/24 /* ---------- ---------- ---------- UsefullCode.net DLLなどからエクスポートされている関数を一覧する http://www.usefullcode.net/2007/03/dll.html ---------- ---------- ---------- -- 2010/06/02 HSP用に書き直しました BY 森々せつき http://www.setsuki.com/ ---------- ---------- ---------- */ ;#include "user32.as" #include "kernel32.as" ;#include "shell32.as" ;#include "gdi32.as" #uselib "dbghelp.dll" #func ImageDirectoryEntryToData "ImageDirectoryEntryToData" sptr,sptr,sptr,sptr #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // 検索するDLLを指定 dllname = "user32.dll" LoadLibrary dllname : hModule = stat nSize = 0 ImageDirectoryEntryToData hModule,1,IMAGE_DIRECTORY_ENTRY_EXPORT,varptr(nSize) pImageExportDir = stat dim ImageExportDir, 100 dupptr ImageExportDir, pImageExportDir, 20*4 /* IMAGE_EXPORT_DIRECTORY構造体 typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; DWORD TimeDateStamp; WORD MajorVersion; WORD MinorVersion; DWORD Name; DWORD Base; DWORD NumberOfFunctions; DWORD NumberOfNames; DWORD AddressOfFunctions; // RVA from base of image DWORD AddressOfNames; // RVA from base of image DWORD AddressOfNameOrdinals; // RVA from base of image } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY*/ #define Base ImageExportDir.4 #define NumberOfFunctions ImageExportDir.5 #define NumberOfNames ImageExportDir.6 #define AddressOfFunctions ImageExportDir.7 #define AddressOfNames ImageExportDir.8 #define AddressOfNameOrdinals ImageExportDir.9 ppszFunctionName = hModule + AddressOfNames pwFunctionOrdinal = hModule + AddressOfNameOrdinals sdim ans, 1024 ans = "DLL の数:"+NumberOfFunctions+"\n" repeat NumberOfFunctions numb = cnt ans += strf("序数:%4d", Base + numb) + strf("(0x%04x)", Base + numb) repeat NumberOfNames dim tmp,1 : dupptr tmp, pwFunctionOrdinal+cnt*2, 2 count = (tmp & 0xFFFF) : if( count != numb ): continue dim adr, 1 : dupptr adr, ppszFunctionName+cnt*4, 4 sdim name, 1024 : dupptr name, adr+hModule, 4, 2 ans +=" <"+name+">" break loop ans += "\n" loop FreeLibrary hModule objmode 0 mesbox ans, ginfo_winx, ginfo_winy, 5