Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
67 lines (59 loc) · 1.36 KB

File metadata and controls

67 lines (59 loc) · 1.36 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "SampleDLL.h"
// TLS
static int v1 = 0;
static int v2 = 0;
VOID WINAPI tls_callback1(
PVOID DllHandle,
DWORD Reason,
PVOID Reserved)
{
if (Reason == DLL_PROCESS_ATTACH)
v1 = 1;
}
VOID WINAPI tls_callback2(
PVOID DllHandle,
DWORD Reason,
PVOID Reserved)
{
if (Reason == DLL_PROCESS_ATTACH)
v2 = 2;
}
// ------------------------------------------------------------------------ -
// TLS 32/64 bits example by Elias Bachaalany <lallousz-x86@yahoo.com>
#ifdef _M_AMD64
#pragma comment (linker, "/INCLUDE:_tls_used")
#pragma comment (linker, "/INCLUDE:p_tls_callback1")
#pragma const_seg(push)
#pragma const_seg(".CRT$XLAAA")
EXTERN_C const PIMAGE_TLS_CALLBACK p_tls_callback1 = tls_callback1;
#pragma const_seg(".CRT$XLAAB")
EXTERN_C const PIMAGE_TLS_CALLBACK p_tls_callback2 = tls_callback2;
#pragma const_seg(pop)
#endif
#ifdef _M_IX86
#pragma comment (linker, "/INCLUDE:__tls_used")
#pragma comment (linker, "/INCLUDE:_p_tls_callback1")
#pragma data_seg(push)
#pragma data_seg(".CRT$XLAAA")
EXTERN_C PIMAGE_TLS_CALLBACK p_tls_callback1 = tls_callback1;
#pragma data_seg(".CRT$XLAAB")
EXTERN_C PIMAGE_TLS_CALLBACK p_tls_callback2 = tls_callback2;
#pragma data_seg(pop)
#endif
// Test TLS
EXPORT int TLS_Test1()
{
return v1;
}
EXPORT int TLS_Test2()
{
return v2;
}
EXPORT int AddNumbers(int a, int b)
{
return a + b;
}
EXPORT int Qux(PFoo foo)
{
return foo->bar[2];
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.