The null pointer exception error and virtual machine bug
|
03-26-2007
, 09:46
Re: amxxdump
|
#10
|
Updated to version 1.3:
- Added better Windows support.
- Added very basic SourceMod plugin support. Symbols and most of the utility, code-scanning abilities (eg: -D, -E) will not work yet, but you will get full opcode output (-d)
- Added data guessing switch (-e). This will attempt to guess data from the push.c op code. It's not perfect.
- Added native guessing switch (-E). This will attempt to guess data passed to a native. Only natives with a series of push's immediately before them (eg: no ternary operator, or natives with function return values) will be auto detected.
The "includes" directory (provided) needs to be in the same directory as the amxxdump binary for this feature to work.
so people know what I'm talking about, here's the example output from the new -E switch (admincmd.amxx, plugin_init):
Code:
[~/amxxdump/bin]> ./amxxdump ../admincmd.amxx -D plugin_init -E
0x990 PROC ; public plugin_init()
0x994 BREAK
0x998 BREAK
0x99C PUSH.C 0xADC
0x9A4 PUSH.C 0x0
0x9AC PUSH.C 0xAA0
0x9B4 PUSH.C 0xC
0x9BC SYSREQ.C 0xA ; register_plugin("Admin Commands",AMXX_VERSION_STR[6]={"1.76c"},"AMXX Dev Team")
0x9C4 STACK 0x10
0x9CC BREAK
0x9D0 PUSH.C 0xB14
0x9D8 PUSH.C 0x4
0x9E0 SYSREQ.C 0xB ; register_dictionary("admincmd.txt")
0x9E8 STACK 0x8
0x9F0 BREAK
0x9F4 PUSH.C 0xB48
0x9FC PUSH.C 0x4
0xA04 SYSREQ.C 0xB ; register_dictionary("common.txt")
0xA0C STACK 0x8
0xA14 BREAK
0xA18 PUSH.C 0xBB8
0xA20 PUSH.C 0x4
0xA28 PUSH.C 0xB98
0xA30 PUSH.C 0xB74
0xA38 PUSH.C 0x10
0xA40 SYSREQ.C 0xC ; register_concmd("amx_kick","cmdKick",4,"<name or #userid> [reason]")
0xA48 STACK 0x14
0xA50 BREAK
0xA54 PUSH.C 0xC60
0xA5C PUSH.C 0x8
0xA64 PUSH.C 0xC44
0xA6C PUSH.C 0xC24
0xA74 PUSH.C 0x10
0xA7C SYSREQ.C 0xC ; register_concmd("amx_ban","cmdBan",8,"<name or #userid> <minutes> [reason]")
0xA84 STACK 0x14
0xA8C BREAK
0xA90 PUSH.C 0xD40
0xA98 PUSH.C 0x8
0xAA0 PUSH.C 0xD1C
0xAA8 PUSH.C 0xCF4
0xAB0 PUSH.C 0x10
0xAB8 SYSREQ.C 0xC ; register_concmd("amx_banip","cmdBanIP",8,"<name or #userid> <minutes> [reason]")
0xAC0 STACK 0x14
0xAC8 BREAK
0xACC PUSH.C 0xE28
0xAD4 PUSH.C 0x8
0xADC PUSH.C 0xE00
0xAE4 PUSH.C 0xDD4
0xAEC PUSH.C 0x10
0xAF4 SYSREQ.C 0xC ; register_concmd("amx_addban","cmdAddBan",8,"<authid or ip> <minutes> [reason]")
0xAFC STACK 0x14
0xB04 BREAK
0xB08 PUSH.C 0xEFC
0xB10 PUSH.C 0x8
0xB18 PUSH.C 0xED8
0xB20 PUSH.C 0xEB0
0xB28 PUSH.C 0x10
0xB30 SYSREQ.C 0xC ; register_concmd("amx_unban","cmdUnban",8,"<authid or ip>")
0xB38 STACK 0x14
0xB40 BREAK
0xB44 PUSH.C 0xF7C
0xB4C PUSH.C 0x10
0xB54 PUSH.C 0xF5C
0xB5C PUSH.C 0xF38
0xB64 PUSH.C 0x10
0xB6C SYSREQ.C 0xC ; register_concmd("amx_slay","cmdSlay",16,"<name or #userid>")
0xB74 STACK 0x14
0xB7C BREAK
0xB80 PUSH.C 0x1008
0xB88 PUSH.C 0x10
0xB90 PUSH.C 0xFE8
0xB98 PUSH.C 0xFC4
0xBA0 PUSH.C 0x10
0xBA8 SYSREQ.C 0xC ; register_concmd("amx_slap","cmdSlap",16,"<name or #userid> [power]")
0xBB0 STACK 0x14
0xBB8 BREAK
0xBBC PUSH.C 0x10BC
0xBC4 PUSH.C 0x4
0xBCC PUSH.C 0x1098
0xBD4 PUSH.C 0x1070
0xBDC PUSH.C 0x10
0xBE4 SYSREQ.C 0xC ; register_concmd("amx_leave","cmdLeave",4,"<tag> [tag] [tag] [tag]")
0xBEC STACK 0x14
0xBF4 BREAK
0xBF8 PUSH.C 0x1168
0xC00 PUSH.C 0x40
0xC08 PUSH.C 0x1144
0xC10 PUSH.C 0x111C
0xC18 PUSH.C 0x10
0xC20 SYSREQ.C 0xC ; register_concmd("amx_pause","cmdPause",64,"- pause or unpause the game")
0xC28 STACK 0x14
0xC30 BREAK
0xC34 PUSH.C 0x1214
0xC3C PUSH.C 0x1000000
0xC44 PUSH.C 0x11F8
0xC4C PUSH.C 0x11D8
0xC54 PUSH.C 0x10
0xC5C SYSREQ.C 0xC ; register_concmd("amx_who","cmdWho",16777216,"- displays who is on server")
0xC64 STACK 0x14
0xC6C BREAK
0xC70 PUSH.C 0x12C8
0xC78 PUSH.C 0x40
0xC80 PUSH.C 0x12A8
0xC88 PUSH.C 0x1284
0xC90 PUSH.C 0x10
0xC98 SYSREQ.C 0xC ; register_concmd("amx_cvar","cmdCvar",64,"<cvar> [value]")
0xCA0 STACK 0x14
0xCA8 BREAK
0xCAC CONST.pri 0x1360
0xCB4 HEAP 0x4
0xCBC MOVS 0x4
0xCC4 PUSH.alt
0xCC8 PUSH.C 0x1000000
0xCD0 PUSH.C 0x1334
0xCD8 PUSH.C 0x1304
0xCE0 PUSH.C 0x10
0xCE8 SYSREQ.C 0xC ; register_concmd("amx_plugins","cmdPlugins",16777216,"")
0xCF0 STACK 0x14
0xCF8 HEAP 0xFFFFFFFC
0xD00 BREAK
0xD04 CONST.pri 0x1360
0xD0C HEAP 0x4
0xD14 MOVS 0x4
0xD1C PUSH.alt
0xD20 PUSH.C 0x1000000
0xD28 PUSH.C 0x1394
0xD30 PUSH.C 0x1364
0xD38 PUSH.C 0x10
0xD40 SYSREQ.C 0xC ; register_concmd("amx_modules","cmdModules",16777216,"")
0xD48 STACK 0x14
0xD50 HEAP 0xFFFFFFFC
0xD58 BREAK
0xD5C PUSH.C 0x13FC
0xD64 PUSH.C 0x20
0xD6C PUSH.C 0x13E0
0xD74 PUSH.C 0x13C0
0xD7C PUSH.C 0x10
0xD84 SYSREQ.C 0xC ; register_concmd("amx_map","cmdMap",32,"<mapname>")
0xD8C STACK 0x14
0xD94 BREAK
0xD98 PUSH.C 0x1460
0xDA0 PUSH.C 0x80
0xDA8 PUSH.C 0x1444
0xDB0 PUSH.C 0x1424
0xDB8 PUSH.C 0x10
0xDC0 SYSREQ.C 0xC ; register_concmd("amx_cfg","cmdCfg",128,"<filename>")
0xDC8 STACK 0x14
0xDD0 BREAK
0xDD4 PUSH.C 0x14D0
0xDDC PUSH.C 0x10
0xDE4 PUSH.C 0x14B0
0xDEC PUSH.C 0x148C
0xDF4 PUSH.C 0x10
0xDFC SYSREQ.C 0xC ; register_concmd("amx_nick","cmdNick",16,"<name or #userid> <new nick>")
0xE04 STACK 0x14
0xE0C BREAK
0xE10 PUSH.C 0x1588
0xE18 PUSH.C 0x800
0xE20 PUSH.C 0x1568
0xE28 PUSH.C 0x1544
0xE30 PUSH.C 0x10
0xE38 SYSREQ.C 0xD ; register_clcmd("amx_rcon","cmdRcon",2048,"<command line>")
0xE40 STACK 0x14
0xE48 BREAK
0xE4C PUSH.C 0x1628
0xE54 PUSH.C 0x800
0xE5C PUSH.C 0x15F8
0xE64 PUSH.C 0x15C4
0xE6C PUSH.C 0x10
0xE74 SYSREQ.C 0xD ; register_clcmd("amx_showrcon","cmdShowRcon",2048,"<command line>")
0xE7C STACK 0x14
0xE84 BREAK
0xE88 CONST.pri 0x16AC
0xE90 HEAP 0x4
0xE98 MOVS 0x4
0xEA0 PUSH.alt
0xEA4 PUSH.C 0xFFFFFFFF
0xEAC PUSH.C 0x1688
0xEB4 PUSH.C 0x1664
0xEBC PUSH.C 0x10
0xEC4 SYSREQ.C 0xD ; register_clcmd("pauseAck","cmdLBack",-1,"")
0xECC STACK 0x14
0xED4 HEAP 0xFFFFFFFC
0xEDC ZERO.pri
0xEE0 RETN
As you'll see, there's a few minor annoyances I have to fix yet, but for the most part it's operational.
Last edited by sawce the snail; 03-26-2007 at 13:02.
|
|