如何實現對函式的隱藏,看完就會
阿新 • • 發佈:2018-11-10
當你寫了一個函式可以實現某些功能時,你要給其他人使用,卻不想讓別人看到你寫的函式的內容,這時你就可以通過對函式內容進行隱藏來達到目的,函式提供了對過程的封裝和細節的隱藏,那麼今天我們就來看看如何對函式進行隱藏:
這裡以上篇部落格寫的Swap函式為例,這裡先給出全部程式碼:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> void Swap(int *px, int *py) { int tmp = *px; *px = *py; *py = tmp; } int main() { int a = 10; int b = 20; Swap(&a, &b); printf("a=%d b=%d\n", a, b); system("pause"); return 0; }
那麼現在我們要對當中的Swap函式進行隱藏,首先要對程式進行變形:
- 新增一個Swap.c原始檔,將Swap函式從text.c中移出來到Swap.c原始檔中
- 新增一個Swap.h的標頭檔案,將Swap函式的宣告放到標頭檔案中(函式的宣告這裡不過多解釋):
- 重新返回text.c原始檔,在程式碼前加上 #include "Swap.h" 對Swap函式呼叫宣告
- 我們發現改變後的程式碼與改變前的效果是一樣的,仍然可以實現功能:
通過上面幾步,我們已經對程式完成了變形,那麼接下來就要實現對函式的隱藏:
- 首先將之前的程式碼關閉,重新建立一個新專案叫Swap
- 開啟之前的程式碼的檔案,根據之前儲存的路徑目錄去找,將Swap.c和Swap.h剪下:
- 開啟新建的Swap專案所在檔案,貼上進來
- 返回vs,在Swap專案中的原始檔新增->現有項,將剛才新加入的那兩個檔案新增進來
- 放進來後通過滑鼠拖動,將.h的檔案放到標頭檔案目錄下,使之看的清晰明瞭
- 點中Swap這個專案,右擊屬性
- 在這裡面找到配置型別,將後面的應用程式(.exe)改成靜態庫(.lib),在點選應用,最後確定
- 按F7,這時會建立庫。完成之後再次開啟檔案所在目錄,返回到第一個debug檔案,進入發現有一個.lib檔案
- 現在我們其實已經完成了隱藏操作,那麼我們來測試一下。我們剛開始寫的程式碼把Swap.c和Swap.h都移出了,現在只剩下了一個text.c,那麼現在將這個.lib檔案拷貝一份到這個程式碼中,再把之前的.h標頭檔案拷貝一份過來
- 那麼這裡的Swap函式原碼可以看到嗎?我們開啟看一下,這裡還是用之前給大家介紹的notepad++來開啟,因為有人沒看過我之前的文章可能不知道這個軟體,這裡我把下載連結附上,大家可以使用一下
連結:https://pan.baidu.com/s/1odhoP29Im0S4NBLLyMAhZg
提取碼:igbu
開啟後我們會發現出現的並不是程式碼,而是一堆看不懂的符號
- 再次回到vs,將之前的關閉,重新開啟之前最早的那個程式(這裡說明一下我最早那個專案名字是project1 )這裡我們會發現,Swap.c已經出錯了,右鍵將之移除
- 在mian函式前加上一句#pragma comment (lib,"Swap.lib"),這時編譯執行就會成功了
- 這樣我們發現對函式實現了隱藏,只通過text.c和Swap.h這兩個檔案就完成了程式執行。
在操作過程中有時會出現一些錯誤,這裡我是將上面的x64改為x86然後就可以運行了。