==================================================================================== # # this file has been created for the Lame patcher program available for both *nix # and Windows platforms. # You need this program for continuing the patching of your files: # # http://aluigi.org/mytoolz.htm#lpatch # # Quick step-by-step for Windows: # - launch lpatch.exe # - select this q3rconz.lpatch file # - read the message windows and click yes # - select the executable file to patch # - read the message windows to know if everything has been patched correctly # - test your game # # Quick step-by-step for Linux: # - compile lpatch: gcc -c md5.c ; gcc -o lpatch lpatch.c md5.o # - launch ./lpatch q3rconz.lpatch # - read the text messages # - specify the name of the file to patch # - read the text messages to know if everything has been patched correctly # - test your game TITLE Quake 3 engine RCON half-second limit disabler (Windows and Linux) 0.1.2b by Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org INTRO This unofficial patch is referred to a Denial of Service which can be launched versus the RCON service of the games based on the Quake 3 engine. Actually the only public reference about this problem seems to be my "Multi engine RCON tool and password guesser" (multircon) tool. . In short if an attacker sends more than 2 packets per second the RCON service will become unavailable for the valid remote admin. That's caused by an anti brute-forcing check which drops all the packets arrived within half second from the previous one. . If you are unsure if your server is vulnerable test it with multircon: . multircon -i -b 10 09AZaz -d 100 SERVER PORT . and in the meantime try to send rcon commands to your server, if you are vulnerable all your commands will be ignored (check function SVC_RemoteCommand). . Note that this patch has been tested with almost all the latest releases of these games (dedicated servers) for both Windows and Linux, older versions will be NOT supported by me, so don't ask. . Contact me if you have the latest version of a game and this patcher is not able to find the pattern to patch. FILE *.exe;*ded;*ded.x86;*bin ONLY_ONE ### WINDOWS ### ; cod4, cod5 BYTES_ORIGINAL FF D6 ; call esi 8B 0D ?? ?? ?? ?? ; mov ecx, dword ptr [107BB7C8] 2B 05 ?? ?? ?? ?? ; sub eax, dword ptr [0F450E70] 85 C9 ; test ecx, ecx 74 10 ; je 00575CCC 8B D0 ; mov edx, eax 2B D1 ; sub edx, ecx 81 FA F4 01 00 00 ; cmp edx, 000001F4 0F 8C ?? ?? ?? ?? ; jl 00575F65 8B ?? ?? ?? ?? ?? ; mov ebp, dword ptr [02210468] BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; Quake 3, Jedi*, Wolf*, mohaa*, ET and others BYTES_ORIGINAL 56 ; push esi 57 ; push edi E8 ?? ?? ?? ?? ; call 0041ED90 8B 0D ?? ?? ?? ?? ; mov ecx, dword ptr [008F2EE8] 81 C1 F4 01 00 00 ; add ecx, 000001F4 3B C1 ; cmp eax, ecx 0F ?? ?? ?? ?? ?? ; jb (or jl) 0043A07B 8B ?? ?? ?? ?? ?? ; mov edx, dword ptr [0096D16C] BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; EF2.exe BYTES_ORIGINAL E8 ?? ?? ?? ?? ; call 005DBA20 {005dba20} {10003d51} E8 ?? ?? ?? ?? ; call 004BEC50 {004bec50} {8d18ec83} 8B 15 ?? ?? ?? ?? ; mov edx, dword[007FEE64 {007fee64} ] 81 C2 F4 01 00 00 ; add edx, 000001F4 {000001f4} 3B C2 ; cmp eax, edx 0F 8C ?? ?? ?? ?? ; jl 004F8C7C {004f8c7c} {c500c481} A3 ?? ?? ?? ?? ; mov dword[007FEE64] {007fee64} , eax BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; CoDUO BYTES_ORIGINAL 55 ; push ebp 56 ; push esi 57 ; push edi 89 84 24 ?? ?? ?? ?? ; mov dword[esp+00008408 {00008408} ], eax E8 ?? ?? ?? ?? ; call 0043AEA0 {0043aea0} {5330ec83} 8B 0D ?? ?? ?? ?? ; mov ecx, dword[0389FDC0 {0389fdc0} ] 85 C9 ; test ecx, ecx 74 ?? ; je 00462109 {00462109} {89fdc0a3} 8B D0 ; mov edx, eax 2B D1 ; sub edx, ecx 81 FA F4 01 00 00 ; cmp edx, 000001F4 {000001f4} 0F 8C ?? ?? ?? ?? ; jl 0046239D {0046239d} {08248c8b} A3 ?? ?? ?? ?? ; mov dword[0389FDC0] {0389fdc0} , eax BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; CoD BYTES_ORIGINAL 55 ; push ebp 56 ; push esi 57 ; push edi 89 84 24 ?? ?? ?? ?? ; mov dword[esp+00004404 {00004404} ], eax E8 ?? ?? ?? ?? ; call 00438D50 {00438d50} {5330ec83} 8B 0D ?? ?? ?? ?? ; mov ecx, dword[01460270 {01460270} ] 33 DB ; xor ebx, ebx 3B CB ; cmp ecx, ebx 74 ?? ; je 0045F2F2 {0045f2f2} {460270a3} 8B D0 ; mov edx, eax 2B D1 ; sub edx, ecx 81 FA F4 01 00 00 ; cmp edx, 000001F4 {000001f4} 0F 8C ?? ?? ?? ?? ; jl 0045F50C {0045f50c} {04248c8b} A3 ?? ?? ?? ?? ; mov dword[01460270] {01460270} , eax BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; Sof2 BYTES_ORIGINAL 55 ; push ebp 56 ; push esi 57 ; push edi E8 ?? ?? ?? ?? ; call 00448AC0 {00448ac0} {5630ec83} 8B 1D ?? ?? ?? ?? ; mov ebx, dword[00BFDDA4 {00bfdda4} ] 8B C8 ; mov ecx, eax 2B C3 ; sub eax, ebx 99 ; cdq 33 C2 ; xor eax, edx 2B C2 ; sub eax, edx 3D F4 01 00 00 ; cmp eax, 000001F4 {000001f4} 0F 8C ?? ?? ?? ?? ; jl 00479225 {00479225} {5b5d5e5f} A1 ?? ?? ?? ?? ; mov eax, dword[00BA4148] {00ba4148} BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; CoD2 (not tested) BYTES_ORIGINAL 89 74 24 1C ; mov dword ptr [esp+1C], esi A3 ?? ?? ?? ?? ; mov dword ptr [019A1B78], eax E8 ?? ?? ?? ?? ; call 00433060 8B 0D ?? ?? ?? ?? ; mov ecx, dword ptr [019A1DD0] 85 C9 ; test ecx, ecx 74 1D ; je 004B8B0B 8B D0 ; mov edx, eax 2B D1 ; sub edx, ecx 81 FA F4 01 00 00 ; cmp edx, 000001F4 7D ?? ; jge 004B8B0B 89 ?? ?? ?? ?? ?? ; mov dword ptr [019A1B78], esi BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? eb ?? ; jmp ### LINUX ### ; CoD BYTES_ORIGINAL e8 ?? ?? ?? ?? ; call 8070be8 89 45 ec ; mov DWORD PTR [ebp-20],eax 83 3d ?? ?? ?? ?? 00 ; cmp DWORD PTR ds:0x80ee808,0x0 74 ?? ; je 8093103 a1 ?? ?? ?? ?? ; mov eax,ds:0x80ee808 8b 55 ec ; mov edx,DWORD PTR [ebp-20] 29 c2 ; sub edx,eax 89 d0 ; mov eax,edx 3d f3 01 00 00 ; cmp eax,0x1f3 7f ?? ; jg 8093103 e9 ?? ?? ?? ?? ; jmp 8093361 BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? eb ?? ; jmp ; CoDUO BYTES_ORIGINAL e8 ?? ?? ?? ?? ; call 807123e 89 45 ec ; mov DWORD PTR [ebp-20],eax 83 3d ?? ?? ?? ?? 00 ; cmp DWORD PTR ds:0x80f5108,0x0 74 18 ; je 8094064 a1 ?? ?? ?? ?? ; mov eax,ds:0x80f5108 8b 55 ec ; mov edx,DWORD PTR [ebp-20] 29 c2 ; sub edx,eax 89 d0 ; mov eax,edx 3d f3 01 00 00 ; cmp eax,0x1f3 7f ?? ; jg 8094064 e9 ?? ?? ?? ?? ; jmp 80942c2 BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? eb ?? ; jmp ; JA BYTES_ORIGINAL 81 ec 20 c5 00 00 ; sub esp,0xc520 89 7d f4 ; mov DWORD PTR [ebp-12],edi 89 75 f0 ; mov DWORD PTR [ebp-16],esi 89 5d f8 ; mov DWORD PTR [ebp-8],ebx e8 ?? ?? ?? ?? ; call 80744e4 8b 15 ?? ?? ?? ?? ; mov edx,DWORD PTR ds:0x81dc464 81 c2 f4 01 00 00 ; add edx,0x1f4 3b c2 ; cmp eax,edx 0f 82 ?? ?? ?? ?? ; jb 8056d50 BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; mohaa BYTES_ORIGINAL 57 ; push edi 56 ; push esi 53 ; push ebx 81 ec 1c c4 00 00 ; sub esp,0xc41c e8 ?? ?? ?? ?? ; call 8067e10 8b 0d ?? ?? ?? ?? ; mov ecx,DWORD PTR ds:0x80cbf14 81 c1 f4 01 00 00 ; add ecx,0x1f4 39 c8 ; cmp eax,ecx 0f 8c ?? ?? ?? ?? ; jl 808cfc5 a3 ?? ?? ?? ?? ; mov ds:0x80cbf14,eax BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; Sof2 BYTES_ORIGINAL 89 7d f4 ; mov DWORD PTR [ebp-12],edi 89 75 f0 ; mov DWORD PTR [ebp-16],esi 89 5d f8 ; mov DWORD PTR [ebp-8],ebx e8 ?? ?? ?? ?? ; call 8081ea4 8b c8 ; mov ecx,eax a1 ?? ?? ?? ?? ; mov eax,ds:0x81765e4 f7 d8 ; neg eax 03 c1 ; add eax,ecx 99 ; cdq 33 c2 ; xor eax,edx 2b c2 ; sub eax,edx 3d f4 01 00 00 ; cmp eax,0x1f4 0f 8c ?? ?? ?? ?? ; jl 8058909 89 0d ?? ?? ?? ?? ; mov DWORD PTR ds:0x81765e4,ecx BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; Wolf BYTES_ORIGINAL 56 ; push esi 53 ; push ebx e8 ?? ?? ?? ?? ; call 8070a40 89 c2 ; mov edx,eax a1 ?? ?? ?? ?? ; mov eax,ds:0x80f2060 05 f4 01 00 00 ; add eax,0x1f4 39 c2 ; cmp edx,eax 0f 82 ?? ?? ?? ?? ; jb 805f1de a1 ?? ?? ?? ?? ; mov eax,ds:0x8288788 BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; ET BYTES_ORIGINAL 53 ; push ebx 81 ec 08 05 00 00 ; sub esp,0x508 e8 ?? ?? ?? ?? ; call 806e940 89 c2 ; mov edx,eax a1 ?? ?? ?? ?? ; mov eax,ds:0x8701c24 05 f4 01 00 00 ; add eax,0x1f4 39 c2 ; cmp edx,eax 0f 82 ?? ?? ?? ?? ; jb 80578fd a1 ?? ?? ?? ?? ; mov eax,ds:0x8874b78 BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; JK2 and possibly any other Linux executable BYTES_ORIGINAL C2 F4 01 00 00 3B C2 0F BYTES_PATCH C2 F4 01 00 00 3B C2 90 90 90 90 90 90 ; CoD4 BYTES_ORIGINAL 85 C0 ; test eax, eax 74 10 ; je 00000014 89 D1 ; mov ecx, edx 29 C1 ; sub ecx, eax 81 F9 F3 01 00 00 ; cmp ecx, 000001F3 0F 8E ?? ?? 00 00 ; jle 0000019A BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 90 90 90 90 90 90 ; nops ; CoD2 (the only addition in 0.1.2b) BYTES_ORIGINAL A1 ?? ?? ?? ?? ; mov eax, dword ptr [0849FBF4] 8B 55 EC ; mov edx, dword ptr [ebp-14] 29 C2 ; sub edx, eax 89 D0 ; mov eax, edx 3D F3 01 00 00 ; cmp eax, 000001F3 7F 13 ; jg 00000026 8D 85 ?? ?? FF FF ; lea eax, dword ptr [ebp+FFFFFBC8] BYTES_PATCH ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? eb ?? ====================================================================================