ci(macos): add re-sign control experiment + otool diagnostics
这个提交包含在:
@@ -95,6 +95,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
ARCH_FLAG: ${{ matrix.arch == 'arm64' && '--arch arm' || '' }}
|
ARCH_FLAG: ${{ matrix.arch == 'arm64' && '--arch arm' || '' }}
|
||||||
run: |
|
run: |
|
||||||
|
set +e
|
||||||
BIN="staging/paze-${{ steps.meta.outputs.version }}-macos-${{ matrix.arch }}/bin"
|
BIN="staging/paze-${{ steps.meta.outputs.version }}-macos-${{ matrix.arch }}/bin"
|
||||||
PAZE="$BIN/paze"
|
PAZE="$BIN/paze"
|
||||||
if [ -f "$BIN/paze.dll" ] && [ ! -f "$PAZE" ]; then PAZE="dotnet $BIN/paze.dll"; fi
|
if [ -f "$BIN/paze.dll" ] && [ ! -f "$PAZE" ]; then PAZE="dotnet $BIN/paze.dll"; fi
|
||||||
@@ -104,19 +105,42 @@ jobs:
|
|||||||
$PAZE tests/hello.pe --target macos $ARCH_FLAG -o /tmp/hello.macos
|
$PAZE tests/hello.pe --target macos $ARCH_FLAG -o /tmp/hello.macos
|
||||||
file /tmp/hello.macos
|
file /tmp/hello.macos
|
||||||
chmod +x /tmp/hello.macos
|
chmod +x /tmp/hello.macos
|
||||||
# 诊断代码签名
|
|
||||||
echo "=== codesign display ==="
|
echo "=== codesign display (paze-generated) ==="
|
||||||
codesign -dv --verbose=4 /tmp/hello.macos 2>&1 || true
|
codesign -dv --verbose=4 /tmp/hello.macos 2>&1 || true
|
||||||
echo "=== codesign verify ==="
|
echo "=== codesign verify (paze-generated) ==="
|
||||||
codesign --verify --deep --strict /tmp/hello.macos 2>&1 && echo "SIGNATURE OK" || echo "SIGNATURE FAILED"
|
codesign --verify --deep --strict /tmp/hello.macos 2>&1 && echo "SIGNATURE OK" || echo "SIGNATURE FAILED"
|
||||||
echo "=== spctl assessment ==="
|
|
||||||
spctl --assess --type execute /tmp/hello.macos 2>&1 || true
|
echo "=== try run (paze-generated signature) ==="
|
||||||
echo "=== try run ==="
|
|
||||||
/tmp/hello.macos 2>&1; echo "exit code: $?"
|
/tmp/hello.macos 2>&1; echo "exit code: $?"
|
||||||
|
|
||||||
|
# 对照实验:用系统 codesign -s - 重新签名,排除 paze 签名生成器的问题
|
||||||
|
echo "=== re-sign with system codesign -s - ==="
|
||||||
|
cp /tmp/hello.macos /tmp/hello_resigned.macos
|
||||||
|
chmod +x /tmp/hello_resigned.macos
|
||||||
|
codesign -s - --force /tmp/hello_resigned.macos 2>&1 || true
|
||||||
|
codesign -dv --verbose=4 /tmp/hello_resigned.macos 2>&1 || true
|
||||||
|
echo "=== try run (system re-signed) ==="
|
||||||
|
/tmp/hello_resigned.macos 2>&1; echo "exit code: $?"
|
||||||
|
|
||||||
|
# 对比两次签名的差异
|
||||||
|
echo "=== signature size comparison ==="
|
||||||
|
echo "paze-generated:"; codesign -d /tmp/hello.macos 2>&1 || true
|
||||||
|
echo "system-signed:"; codesign -d /tmp/hello_resigned.macos 2>&1 || true
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
- name: Dump Mach-O load commands
|
- name: Dump Mach-O load commands
|
||||||
|
if: always()
|
||||||
run: |
|
run: |
|
||||||
otool -l /tmp/hello.macos 2>&1 | head -120 || true
|
echo "=== otool -L (dylib deps) ==="
|
||||||
|
otool -L /tmp/hello.macos 2>&1 || true
|
||||||
|
echo "=== otool -l (load commands) ==="
|
||||||
|
otool -l /tmp/hello.macos 2>&1 | head -150 || true
|
||||||
|
echo "=== pagestop / segments ==="
|
||||||
|
otool -l /tmp/hello.macos 2>&1 | grep -A4 "LC_SEGMENT_64" || true
|
||||||
|
echo "=== dyld_info ==="
|
||||||
|
dyld_info /tmp/hello.macos 2>&1 || true
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户