驗證微軟數字簽名

2021-04-16 20:24:32 字數 1352 閱讀 7590

bool checkfiletrust( lpcwstr lpfilename )

;wintrust_file_info wfi = ;

wintrust_catalog_info wci = ;

catalog_info ci = ;

hcatadmin hcatadmin = null;

if ( !cryptcatadminacquirecontext( &hcatadmin, null, 0 ) )

handle hfile = createfilew( lpfilename, generic_read, file_share_read,

null, open_existing, 0, null );

if ( invalid_handle_value == hfile )

dword dwcnt = 100;

byte byhash[100];

cryptcatadmincalchashfromfilehandle( hfile, &dwcnt, byhash, 0 );

closehandle( hfile );

lpwstr pszmembertag = new wchar[dwcnt * 2 + 1];

for ( dword dw = 0; dw < dwcnt; ++dw )

hcatinfo hcatinfo = cryptcatadminenumcatalogfromhash( hcatadmin,

byhash, dwcnt, 0, null );

if ( null == hcatinfo )

else

guid action = wintrust_action_generic_verify_v2;

hresult hr  = winverifytrust( null, &action, &wd );

bret        = succeeded( hr );

if ( null != hcatinfo )

cryptcatadminreleasecatalogcontext( hcatadmin, hcatinfo, 0 );

delete pszmembertag;

return bret;

}

這段**是在乙個老外的論壇上不經意搜尋到的,乙個貌似德國人(因為他的注釋不是英文寫的,德國亦僅猜測爾,西班牙、葡萄牙、法蘭西、俄羅斯亦都有可能)寫的delphi**,其中使用了wintrust.dll中的匯出函式。使用vs2005的朋友們可以包含wintrust.h、softpub.h和mscat.h,並新增導入庫wintrust.lib;使用vc6的朋友們可以參考msdn上的函式及結構體宣告,並用函式指標進行呼叫。 

C 驗證微軟數字簽名

共享如下,在win2k sp4 winxp sp2上除錯通過。bool checkfiletrust lpcwstr lpfilename wintrust file info wfi wintrust catalog info wci catalog info ci hcatadmin hcata...

C 驗證微軟數字簽名

bool checkfiletrust lpcwstr lpfilename wintrust file info wfi wintrust catalog info wci catalog info ci hcatadmin hcatadmin null if cryptcatadminacqui...

數字簽名的驗證

通常的我們在軟體發布前要對binary dll,exe 進行數字簽名,數字簽名可以標識軟體的發布商,也可以通過數字簽名來檢查此軟體是否被修改或受病毒影響。sigcheck是來自sysinternals的數字簽名驗證工具,可以檢視指定的檔案或目錄下的哪些檔案沒有數字簽名。此工具是命令列工具,可以用來批...