File tree Expand file tree Collapse file tree 1 file changed +9
-7
lines changed Expand file tree Collapse file tree 1 file changed +9
-7
lines changed Original file line number Diff line number Diff line change @@ -118,17 +118,19 @@ static NTSTATUS NTAPI RtlFindLdrpHandleTlsData10() {
118118 return STATUS_NOT_SUPPORTED;
119119
120120 // C_SCOPE_TABLE$$Begin
121- LPBYTE LdrpHandleTlsDataBlock = *(LPDWORD)(SearchContext.Result - 8 ) + LPBYTE (DllBase);
122- LPBYTE LdrpHandleTlsDataBlockBackup = LdrpHandleTlsDataBlock;
121+ LPDWORD LdrpHandleTlsBlock = LPDWORD (*(LPDWORD)(SearchContext.Result - 8 ) + LPBYTE (DllBase));
122+ // Pad to 0x04
123+ LdrpHandleTlsBlock = LPDWORD (LONGLONG (LdrpHandleTlsBlock) / 0x04 * 0x04 );
124+ LPDWORD LdrpHandleTlsBlockBackup = LdrpHandleTlsBlock;
123125
124126 // Search back for LdrpHandleTls
125- // Search up for 0xCC, and make sure it's not false positive by checking alignment (0x4)
126- while (*LdrpHandleTlsDataBlock != 0xcc || (((LONGLONG)LdrpHandleTlsDataBlock + 1 ) % 0x4 ) != 0 ) {
127+ // Search up for 4 consecutive 0xCC
128+ while (*LdrpHandleTlsBlock != 0xcccccccc ) {
127129 // Normally ~0x140 bytes
128- if (LdrpHandleTlsDataBlockBackup - LdrpHandleTlsDataBlock > 0x400 ) return STATUS_NOT_SUPPORTED;
129- LdrpHandleTlsDataBlock --;
130+ if (LdrpHandleTlsBlockBackup - LdrpHandleTlsBlock > 0x400 ) return STATUS_NOT_SUPPORTED;
131+ LdrpHandleTlsBlock --;
130132 }
131- LdrpHandleTlsDataBlock ++;
133+ LdrpHandleTlsBlock ++;
132134 LdrpHandleTlsData = LdrpHandleTlsDataBlock;
133135 return STATUS_SUCCESS;
134136#else
You can’t perform that action at this time.
0 commit comments