iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
Software Development

Python GUI 專案設計模式及好用的開發技巧系列 第 29

關於code signing [程式碼簽章] 這檔事 ...

所謂的程式碼簽章,就是一個指一個數位的簽章,在編譯好的軟體上簽章。軟體一旦被重新編譯、修改,上面的簽章就會自然消失。簽章,不代表你的軟體就是無毒無害的,只是說多一層保障而已。

網路上的教學都是建議使用自然人憑證或花錢購買的形式。。。

那有沒有辦法產生出測試用的簽章呢?

作法:

  1. 先下載Windows 10 SDK software Development kit並安裝

    PS: 安裝後長這樣 ...
    1-1 偷懶版的作法,直接下載signtool.exe
    1-1-1 下載點
  2. 使用系統管理員打開powershell ISE
  3. 啟用ExecutionPolicy 為 Bypass
Set-ExecutionPolicy Bypass -Scope Process

[筆記] 如果沒有做這個動作,憑證會產生失敗
4. 撰寫憑證腳本並執行

[筆記] 請參考 產生憑證的powershell腳本
5. 執行後會看到有一個mycert.pfx的憑證檔被產生

6. signtool 的位置如下

[筆記] 如果是直接下載,就不需要去找位置了
7. 向程式做簽章的動作

signtool.exe sign /f mycert.pfx /p helloworld demo.exe
  1. 簽章做完啦
  2. 檢查程式屬性

SignTool 套件簽署的一般命令列語法是:

  • SignTool sign [options] <filename(s)>
    使用 .pfx 檔案中的憑證簽署您的應用程式套件,使用語法:
SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.appx

引用自sign-app-package-using-signtool

  1. 使用virtustotal檢查是否還會被偵測成病毒
    未使用簽章,偵測到六種木馬或後門

    使用簽章後,偵測到四種木馬或後門

    [筆記] 使用簽章後居然沒有被AV (防毒軟體)認定為病毒或後門了
    /images/emoticon/emoticon58.gif

結論:
使用數位簽章,只代表你的程式不容易被竄改,但不代表安全,但好像可以拿來繞過AV ,筆者使用來簽章的程式是使用pyinstaller 包出來的,正常情況下會被windows Defender 視為病毒或後門。


上一篇
程式中出現問號(?)跟冒號(:),這是什麼表達方式?
下一篇
今晚,我想來點。。。 (菜單在哪?)
系列文
Python GUI 專案設計模式及好用的開發技巧31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
juck30808
iT邦研究生 1 級 ‧ 2021-10-14 12:11:59

恭喜即將邁入完賽~/images/emoticon/emoticon08.gif

1
penguin5
iT邦新手 5 級 ‧ 2023-01-15 10:55:47
@echo off
echo 正在簽名: %~nx1
pause
signtool.exe sign /f mycert.pfx /p helloworld %~nx1 > singlog.txt

將以上程式碼複製到新BAT檔案,並產生證書,就可以透過拖放來新增數位證書囉。

我要留言

立即登入留言