アレはアレなんでアレなんです。
アレはアレなんでアレなんです。
#module Win32EXE#defcfunc IsWin32App str fnametmp = 0exist fnameif strsize == -1 : return 0bload fname, tmp, 2, 0if tmp == 0x5a4d /*MZ*/ : return 1return 0#defcfunc GetPEAddress str fnameif IsWin32App(fname) == 0 : return -1tmp = 0 : pe_addr = 0exist fnameif strsize == -1 : return -2bload fname, pe_addr, 4, 0x3c // PEヘッダアドレスbload fname, tmp, 2, pe_addr // PE実場所if tmp == 0x4550 : return pe_addr // 一応チェックreturn -3#defcfunc GetRSRCAddress str fnamepe = GetPEAddress(fname)if pe < 0 : return -1flg = 0 : sec = pe + 0xf8 : sdim sexist fnameif strsize == -1 : return -2// .rsrcセクションを検索するrepeatbload fname, s, 8, secif s == "" : breakif s == ".rsrc"{flg = 1break}sec += 40loopif flg == 0 : return -3return sec#deffunc GetRSRCData str fname, array rsrc_datadim rsrc_data, 40/4addr = GetRSRCAddress(fname)if addr < 0 : return -1exist fnameif strsize == -1 : return -2bload fname, rsrc_data, 40, addrreturn 0#defcfunc GetDPMXAddress str fnameGetRSRCData fname, rsrcif stat < 0 : return -1exist fnameif strsize == -1 : return -2tmp = 0bload fname, tmp, 4, rsrc(5)+rsrc(4)if tmp == 0x584d5044 /*DPMX*/ : return rsrc(5) + rsrc(4)return -3#global// DPMXの場所mes GetDPMXAddress("hsptmp.exe")