防多開 data seg 共享記憶體

2021-10-09 22:07:06 字數 774 閱讀 7731

#pragma data_seg()一般用在 dll 中,用來在不同程序間共享一段資料(兩個程序對應不同的 exe ),如果是相同檔案的多個程序間共享,就不需要 dll。

這裡我們只做防多開功能,所以不需要 dll。

另外,這種防多開技術必須在程式關閉時將資料恢復,否則會出現邏輯錯誤。(恢復功能在**中沒有體現)。

因為它的本質是乙個全域性變數,所以一定是綠色的基位址。再者,因為它屬於乙個資料段,所以在 pe 的區段表裡可以看到,資料的基位址就是該exe模組基位址(如果是dll 的話就是dll 的模組基位址)加上該區段的 virtual address。

使用 ce 在第乙個例項中搜尋,依據開啟關閉新的例項來篩選增加的值和減少的值,最後過濾出基位址。

關於防多開的幾種方法

1 使用findwindow api函式。通過查詢視窗標題 或 和類名 來判斷程式是否正在執行。如果找到了,表明程式正在執行,這時可退出程式,達到不重複執行的效果 反之表明程式是第一次執行。這種方法不適用於以下情況,程式的標題是動態變化的 系統中執行了相同標題 或 和類名 的程式 2 mutex e...

Linux共享記憶體及共享記憶體API

共享記憶體區是最快的ipc 程序間通訊 形式。用共享記憶體從伺服器拷貝檔案資料到客戶端 共享記憶體基本api include include 1.int shmget key t key,size t size,int shm 功能 用來建立共享記憶體 key 是這個共享記憶體段的名字 size 共...

mysql共享記憶體 MySQL全域性共享記憶體介紹

前言 全域性共享記憶體則主要是 mysql instance mysqld程序 以及底層儲存引擎用來暫存各種全域性運算及可共享的暫存資訊,如儲存查詢快取的 query cache,快取連線線程的 thread cache,快取表檔案控制代碼資訊的 table cache,快取二進位制日誌的 binl...