forked from fancycode/MemoryModule
-
Notifications
You must be signed in to change notification settings - Fork 0
53 lines (45 loc) · 1.68 KB
/
Copy pathbuild-memorymodule.yml
File metadata and controls
53 lines (45 loc) · 1.68 KB
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
name: Build MemoryModule (32-bit)
on:
workflow_dispatch: # 手動觸發
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install MinGW-w64 (32-bit)
run: |
sudo apt-get update
sudo apt-get install -y gcc-mingw-w64-i686
- name: Download MemoryModule.c if not present
shell: bash
run: |
if [ ! -f MemoryModule.c ]; then
echo "MemoryModule.c not found, downloading..."
curl -L -o MemoryModule.c \
https://raw.githubusercontent.com/fancycode/MemoryModule/master/MemoryModule.c
else
echo "MemoryModule.c found in repository."
fi
- name: Compile MemoryModule.c to object file
shell: bash
run: |
# 1. 在 MemoryModule.c 的包含檔下方,動態補上 _wcsnicmp 的安全替代實作
sed -i '/#include <windows.h>/a \
static int my_wcsnicmp(LPCWSTR s1, LPCWSTR s2, size_t count) { \
return CompareStringW(LOCALE_USER_DEFAULT, NORM_IGNORECASE, s1, (int)count, s2, (int)count) - CSTR_EQUAL; \
} \
#define _wcsnicmp my_wcsnicmp' MemoryModule.c
# 2. 編譯並關閉 Stack Probe / Stack Check
i686-w64-mingw32-gcc -c MemoryModule.c -o MemoryModule.o \
-O2 \
-fno-stack-check \
-fno-stack-protector \
-mno-stack-arg-probe \
-D_CRT_SECURE_NO_WARNINGS
ls -l MemoryModule.o
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: MemoryModule-object
path: MemoryModule.o