1. 程式人生 > >如何實現對函式的隱藏,看完就會

如何實現對函式的隱藏,看完就會

      當你寫了一個函式可以實現某些功能時,你要給其他人使用,卻不想讓別人看到你寫的函式的內容,這時你就可以通過對函式內容進行隱藏來達到目的,函式提供了對過程的封裝和細節的隱藏,那麼今天我們就來看看如何對函式進行隱藏:

 

這裡以上篇部落格寫的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函式進行隱藏,首先要對程式進行變形:

  1. 新增一個Swap.c原始檔,將Swap函式從text.c中移出來到Swap.c原始檔中
  2. 新增一個Swap.h的標頭檔案,將Swap函式的宣告放到標頭檔案中(函式的宣告這裡不過多解釋):
  3. 重新返回text.c原始檔,在程式碼前加上   #include "Swap.h"   對Swap函式呼叫宣告
  4. 我們發現改變後的程式碼與改變前的效果是一樣的,仍然可以實現功能:

通過上面幾步,我們已經對程式完成了變形,那麼接下來就要實現對函式的隱藏:

  • 首先將之前的程式碼關閉,重新建立一個新專案叫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然後就可以運行了。