|
| 1 | +"Games" |
| 2 | +{ |
| 3 | + "#default" |
| 4 | + { |
| 5 | + "Functions" |
| 6 | + { |
| 7 | + "CBaseAbility::UpdateAbility" |
| 8 | + { |
| 9 | + "offset" "CBaseAbility::UpdateAbility" |
| 10 | + "hooktype" "entity" |
| 11 | + "return" "void" |
| 12 | + "this" "entity" |
| 13 | + } |
| 14 | + |
| 15 | + "CBaseEntity::PhysicsSolidMaskForEntity" |
| 16 | + { |
| 17 | + "offset" "CBaseEntity::PhysicsSolidMaskForEntity" |
| 18 | + "hooktype" "entity" |
| 19 | + "return" "int" |
| 20 | + "this" "ignore" |
| 21 | + } |
| 22 | + } |
| 23 | + } |
| 24 | + |
| 25 | + "left4dead" |
| 26 | + { |
| 27 | + "MemPatches" |
| 28 | + { |
| 29 | + "ShouldHitEntity_MyInfectedPointer" |
| 30 | + { |
| 31 | + "signature" "CTraceFilterSimpleListNoInfectedOrGhosts_ShouldHitEntity" |
| 32 | + "linux" |
| 33 | + { |
| 34 | + "offset" "101" |
| 35 | + |
| 36 | + /* |
| 37 | + * 8B 06 mov eax, [esi] |
| 38 | + * 89 34 24 mov [esp+2Ch+var_2C], esi ; IHandleEntity * |
| 39 | + * |
| 40 | + * OUR_PATCH: |
| 41 | + * FF 90 24 01 00 00 call dword ptr [eax+124h] ; CBaseEntity::MyInfectedPointer(void) |
| 42 | + * 85 C0 test eax, eax |
| 43 | + * 8B 54 24 0C mov edx, [esp+2Ch+var_20] |
| 44 | + * 75 CB jnz short loc_2A614C ; return 0 (no collision) |
| 45 | + */ |
| 46 | + "verify" "\xFF\x90\x2A\x2A\x2A\x2A\x85\xC0\x2A\x2A\x2A\x2A\x75" |
| 47 | + |
| 48 | + "preserve" "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x00" |
| 49 | + |
| 50 | + /* |
| 51 | + * E8 ? ? ? ? call CBaseEntity::GetTeamNumber(void) |
| 52 | + * 83 F8 03 cmp eax, 3 |
| 53 | + * 8B 54 24 0C mov edx, [esp+2Ch+var_20] |
| 54 | + * 74 CB jz short loc_2A614C ; return 0 (no collision) |
| 55 | + */ |
| 56 | + "patch" "\xE8\x00\x00\x00\x00\x83\xF8\x03\x90\x90\x90\x90\x74" |
| 57 | + } |
| 58 | + "windows" |
| 59 | + { |
| 60 | + "offset" "46" |
| 61 | + |
| 62 | + /* |
| 63 | + * 8B 06 mov eax, [esi] ; IHandleEntity * |
| 64 | + * 8B 90 20 01 00 00 mov edx, [eax+120h] ; CBaseEntity::MyInfectedPointer(void) |
| 65 | + * 8B CE mov ecx, esi |
| 66 | + * FF D2 call edx |
| 67 | + * 85 C0 test eax, eax |
| 68 | + * 75 0F jnz short loc_102CCC1D |
| 69 | + */ |
| 70 | + "verify" "\x8B\x06\x8B\x2A\x2A\x2A\x2A\x2A\x8B\xCE\xFF\x2A\x85\xC0\x75" |
| 71 | + |
| 72 | + /* |
| 73 | + * EB 02 jmp short OUR_PATCH |
| 74 | + * 66 90 NOP |
| 75 | + * |
| 76 | + * OUR_PATCH: |
| 77 | + * 8B CE mov ecx, esi ; IHandleEntity * |
| 78 | + * E8 ? ? ? ? call sub_1003FA90 ; CBaseEntity::GetTeamNumber(void) |
| 79 | + * 83 F8 03 cmp eax, 3 |
| 80 | + * 74 0F jz short loc_102CCC1D |
| 81 | + */ |
| 82 | + "patch" "\xEB\x02\x66\x90\x8B\xCE\xE8\x00\x00\x00\x00\x83\xF8\x03\x74" |
| 83 | + } |
| 84 | + } |
| 85 | + |
| 86 | + "OnVomitCollide__TraceRayMask_patch" |
| 87 | + { |
| 88 | + "signature" "OnVomitCollide" |
| 89 | + "linux" |
| 90 | + { |
| 91 | + "offset" "16Eh" |
| 92 | + "verify" "\x0B\x40\x00\x46" |
| 93 | + "patch" "\x03\x40\x00\x46" |
| 94 | + } |
| 95 | + "windows" |
| 96 | + { |
| 97 | + "offset" "5Ch" |
| 98 | + "verify" "\x0B\x40\x00\x46" |
| 99 | + "patch" "\x03\x40\x00\x46" |
| 100 | + } |
| 101 | + } |
| 102 | + |
| 103 | + "OnVomitCollide__ClipRayMask_patch" |
| 104 | + { |
| 105 | + "signature" "OnVomitCollide" |
| 106 | + "linux" |
| 107 | + { |
| 108 | + "offset" "252h" |
| 109 | + "verify" "\x0B\x40\x00\x46" |
| 110 | + "patch" "\x03\x40\x00\x46" |
| 111 | + } |
| 112 | + "windows" |
| 113 | + { |
| 114 | + "offset" "F1h" |
| 115 | + "verify" "\x0B\x40\x00\x46" |
| 116 | + "patch" "\x03\x40\x00\x46" |
| 117 | + } |
| 118 | + } |
| 119 | + } |
| 120 | + |
| 121 | + "Offsets" |
| 122 | + { |
| 123 | + "CBaseAbility::UpdateAbility" |
| 124 | + { |
| 125 | + "linux" "190" |
| 126 | + "windows" "189" |
| 127 | + } |
| 128 | + |
| 129 | + "PatchOffset" |
| 130 | + { |
| 131 | + "linux" "1" |
| 132 | + "windows" "7" |
| 133 | + } |
| 134 | + |
| 135 | + "CBaseEntity::PhysicsSolidMaskForEntity" |
| 136 | + { |
| 137 | + "linux" "164" |
| 138 | + "windows" "163" |
| 139 | + } |
| 140 | + } |
| 141 | + |
| 142 | + "Addresses" |
| 143 | + { |
| 144 | + "CBaseEntity_GetTeamNumber" |
| 145 | + { |
| 146 | + "linux" |
| 147 | + { |
| 148 | + "signature" "CBaseEntity_GetTeamNumber" |
| 149 | + } |
| 150 | + "windows" |
| 151 | + { |
| 152 | + "signature" "CBaseEntity_GetTeamNumber" |
| 153 | + } |
| 154 | + } |
| 155 | + } |
| 156 | + |
| 157 | + "Signatures" |
| 158 | + { |
| 159 | + "CTraceFilterSimpleListNoInfectedOrGhosts_ShouldHitEntity" |
| 160 | + { |
| 161 | + "library" "server" |
| 162 | + "linux" "@_ZN40CTraceFilterSimpleListNoInfectedOrGhosts15ShouldHitEntityEP13IHandleEntityi" |
| 163 | + "windows" "\x53\x8B\x2A\x2A\x2A\x56\x8B\x2A\x2A\x2A\x57\x53\x56\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x84\x2A\x74" |
| 164 | + /* 53 8B ? ? ? 56 8B ? ? ? 57 53 56 8B ? E8 ? ? ? ? 84 ? 74 */ |
| 165 | + } |
| 166 | + |
| 167 | + "CBaseEntity_GetTeamNumber" |
| 168 | + { |
| 169 | + "library" "server" |
| 170 | + "linux" "@_ZNK11CBaseEntity13GetTeamNumberEv" |
| 171 | + "windows" "\x8B\x81\xEC\x01\x00\x00\xC3" |
| 172 | + /* 8B 81 EC 01 00 00 C3 */ |
| 173 | + } |
| 174 | + |
| 175 | + "OnVomitCollide" |
| 176 | + { |
| 177 | + "library" "server" |
| 178 | + "linux" "@_Z14OnVomitCollideP13CTerrorPlayerP11CBaseEntityS2_i6VectorS3_" |
| 179 | + "windows" "\x81\xEC\x2A\x2A\x2A\x2A\x8B\x84\x24\x2A\x2A\x2A\x2A\x8B\x8C\x24\x2A\x2A\x2A\x2A\x8B\x94\x24" |
| 180 | + /* 81 EC ? ? ? ? 8B 84 24 ? ? ? ? 8B 8C 24 ? ? ? ? 8B 94 24 */ |
| 181 | + } |
| 182 | + } |
| 183 | + } |
| 184 | + |
| 185 | + "left4dead2" |
| 186 | + { |
| 187 | + "Offsets" |
| 188 | + { |
| 189 | + "CBaseEntity::PhysicsSolidMaskForEntity" |
| 190 | + { |
| 191 | + "linux" "178" |
| 192 | + "windows" "177" |
| 193 | + } |
| 194 | + } |
| 195 | + } |
| 196 | +} |
0 commit comments