防止測試機(jī)系統(tǒng)時間被非法修改的方法
【專利摘要】本發(fā)明提供一種通過Windows API攔截手段防止測試機(jī)系統(tǒng)時間被修改的方法。首先通過注入手段將DLL模塊注入攔截的程序,比如通過注冊表鍵LoadAppInit_DLLs實(shí)現(xiàn)注入,然后獲取需要攔截的目標(biāo)API在NTDLL中的地址,即NtSetSystemTime函數(shù)的地址,修改該函數(shù)起始代碼,使跳轉(zhuǎn)到自己的代碼,在自己的代碼中要求密碼驗(yàn)證,只有輸入正確密碼才能修改,因此可以達(dá)到防止非法修改系統(tǒng)時間的目的。
【專利說明】
防止測試機(jī)系統(tǒng)時間被非法修改的方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及一種通過Windows API攔截手段防止測試機(jī)系統(tǒng)時間被非法修改的方法,屬于集成電路測試生產(chǎn)線技術(shù)管理領(lǐng)域。
【背景技術(shù)】
[0002]在集成電路量產(chǎn)測試時,測試機(jī)系統(tǒng)時間會被記錄到測試數(shù)據(jù),測試數(shù)據(jù)需要保存作為日后電路故障的追溯;同時,測試數(shù)據(jù)上的時間也是測試成本合算的依據(jù);比如,計算某個集成電路型號的測試成本,需要知道一顆集成電路的測試時間、以及一個批量的測試時間;測試時間也是生產(chǎn)線調(diào)度的依據(jù),所以系統(tǒng)時間不能被惡意修改,維護(hù)系統(tǒng)時間非常重要。Windows API是Windows提供的應(yīng)用程序編程接口函數(shù);Windows系統(tǒng)API攔截是用來定制和增強(qiáng)系統(tǒng)功能的常用手段,但大部分?jǐn)r截方法要么不夠穩(wěn)定、要么兼容性不佳、要么實(shí)現(xiàn)過程過于復(fù)雜,本發(fā)明攔截技術(shù)則能很好解決了上述技術(shù)難題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明提供一種通過Windows API攔截手段防止測試機(jī)系統(tǒng)時間被修改的方法,對Windows API簡單可靠的攔截,步驟如下:
[0004]1.注入需要攔截的程序;
[0005]2.獲取要攔截的目標(biāo)API在NTDLL.DLL模塊中的地址;
[0006]3.修改目標(biāo)API入口代碼,替換為跳轉(zhuǎn)到自定義代碼處的指令,跳轉(zhuǎn)指令使用字節(jié)指令即可,無需使用匯編代碼,非常簡單;
[0007]4.在自定義代碼執(zhí)行個性功能。
[0008]進(jìn)一步的,攔截CMD.EXE、RUNDLL.EXE,只要攔截這兩個程序中的NtSetSystemTime,則能限制時間修改,在攔截代碼中,可以提示輸入密碼,只要密碼正確才接受修改,具體實(shí)施步驟如下:
[0009]1.將程序注入 cmd.exe 和 rundll.exe ;
[0010]2.對程序中ntdll.dll動態(tài)庫的函數(shù)NtSetSystemTime進(jìn)行攔截,使轉(zhuǎn)向自定義的函數(shù)密碼;
[0011]3.在自定義函數(shù)中要求輸入密碼;
[0012]4.密碼正確則調(diào)用ntdlltmp的NtSetSystemTime函數(shù)進(jìn)行時間設(shè)置,否則禁止修改時間。
[0013]本發(fā)明達(dá)到的技術(shù)效果是達(dá)到防止非法修改系統(tǒng)時間的目的,保證了測試生產(chǎn)線的測試時間的準(zhǔn)確性、唯一性。
【附圖說明】
[0014]為了更清楚地說明本發(fā)明的技術(shù)方案,下面結(jié)合附圖和具體實(shí)施方案對本發(fā)明做進(jìn)一步說明;
[0015]附圖1是API攔截原理圖
[0016]附圖2是API攔截流程圖
【具體實(shí)施方式】
[0017]下面將本發(fā)明結(jié)合附圖作進(jìn)一步詳述:如附圖1所示,首先要對Windows API進(jìn)行簡單可靠的攔截,其實(shí)施步驟如下:
[0018]1.注入需要攔截的程序;
[0019]2.獲取要攔截的目標(biāo)API在NTDLL.DLL模塊中的地址;
[0020]3.修改目標(biāo)API入口代碼,替換為跳轉(zhuǎn)到自定義代碼處的指令,跳轉(zhuǎn)指令使用字節(jié)指令即可,無需使用匯編代碼,非常簡單;
[0021 ] 4.在自定義代碼執(zhí)行個性功能;
[0022]為防止測試機(jī)系統(tǒng)時間被修改,需要攔截CMD.EXE、RUNDLL.ΕΧΕ,只要攔截這兩個程序中的NtSetSystemTime,則能很好地限制時間修改,在攔截代碼中,可以提示輸入密碼,只要密碼正確才接受修改,具體流程見附圖2。
[0023]具體實(shí)施步驟如下:
[0024]1.將程序注入 cmd.exe 和 rundll.exe ;
[0025]2.對程序中ntdll.dll動態(tài)庫的函數(shù)NtSetSystemTime進(jìn)行攔截,使轉(zhuǎn)向自定義的函數(shù)密碼;
[0026]3.在自定義函數(shù)中要求輸入密碼;
[0027]4.密碼正確則調(diào)用ntdlltmp的NtSetSystemTime函數(shù)進(jìn)行時間設(shè)置,否則禁止修改時間。
[0028]本發(fā)明達(dá)到的技術(shù)效果是防止非法修改系統(tǒng)時間的目的,保證測試生產(chǎn)線測試機(jī)系統(tǒng)時間的準(zhǔn)確性、唯一性。
【主權(quán)項(xiàng)】
1.一種通過Windows API攔截手段防止測試機(jī)系統(tǒng)時間被修改的方法其特征在于如下步驟: 1)注入需要攔截的程序; 2)獲取要攔截的目標(biāo)API在NTDLL.DLL模塊中的地址; 3)修改目標(biāo)API入口代碼,替換為跳轉(zhuǎn)到自定義代碼處的指令,跳轉(zhuǎn)指令使用字節(jié)指令即可,無需使用匯編代碼,非常簡單; 4)在自定義代碼執(zhí)行個性功能。2.根據(jù)權(quán)利要求1所述的步驟,其特征在于:依次執(zhí)行以下步驟: 1)將程序注入cmd.exe 和 rundll.exe ; 2)對程序中ntdll.dll動態(tài)庫的函數(shù)NtSetSystemTime進(jìn)行攔截,使轉(zhuǎn)向自定義的函數(shù)密碼; 3)在自定義函數(shù)中要求輸入密碼; 4)密碼正確則調(diào)用ntdlltmp的NtSetSystemTime函數(shù)進(jìn)行時間設(shè)置,否則禁止修改時間。
【文檔編號】G06F9/44GK105893000SQ201410582998
【公開日】2016年8月24日
【申請日】2014年10月28日
【發(fā)明人】周乃新, 石志剛
【申請人】北京確安科技股份有限公司