動態庫介面 隱蔽暴露的小技巧

2021-10-05 20:57:23 字數 396 閱讀 4760

最近在使用別人庫的時候,懷疑乙個介面存在問題。由於原來**是別人寫的,不知道這個介面是怎麼來的。從包含的標頭檔案中也沒有找到該介面的宣告,就納悶為什麼能夠編譯過去。

後來通過nm檢視庫中的介面,查到該介面。

隱蔽的方式為:

1、給的標頭檔案不完整,只給出了部分;

2、標頭檔案中不存在而又被使用的函式,通過先宣告後使用的方式,進行使用;

如:

#include "libfuncs.h"  // 給的標頭檔案中沒有abc_get宣告

void abc_get(int a, char **p);

// 接下來使用介面的函式

...char *p = null;

abc_get(2, &p);

...

linux編譯動態庫,配置暴露的介面

在linux中,使用gcc進行指令碼編譯,預設情況下,會將非static的方法以及類都匯出到so中 這種特性讓我們方便使用時,有時候也會出現匯出庫的重名以及衝突。linux的動態庫載入庫時,如果存在的就會進行覆蓋,最終形成一套函式表,這就有可能會產生部分匯出函式衝突,呼叫後崩潰的現象。為了解決這種問...

WinForm 清空介面控制項值的小技巧

在winform裡面有時候需要清空自己輸入內容或是選擇的選項,以便重新操作流程,那麼一般你是怎麼清空介面各個控制項值的呢?如果窗體裡面控制項,尤其是textbox控制項比較多的時候,裡面是不是要設定每個控制項的text屬性值為空呢?下面我用這個例子,來 下清空介面控制項值的小技巧。而且還能復用。不必...

WinForm 清空介面控制項值的小技巧

在winform裡面有時候需要清空自己輸入內容或是選擇的選項,以便重新操作流程,那麼一般你是怎麼清空介面各個控制項值的呢?如果窗體裡面控制項,尤其是textbox控制項比較多的時候,裡面是不是要設定每個控制項的text屬性值為空呢?下面我用這個例子,來 下清空介面控制項值的小技巧。而且 還能復用。不...