小華的部落格: 2011/6/12 - 2011/6/19

搜尋此網誌

星期四, 6月 16, 2011

關閉螢幕保護程式計時~

因為有些公司的網管有管制一些本機電腦的Policy...像是每隔一段時間到了,沒人使用電腦就要自動進入螢幕保護程式,以免你電腦資料被竊取。

但是,因為有時候會把工作機拿來打ONLINE GAME,尤其是掛網的時候突然給你斷線就真的OOXX了,因此想要手動關閉螢幕保護程式跟他的登入密碼,但卻發現直接修改Windows所提供的選項是無效的 ><
 
原來,有些網管可以透過你的電腦登入公司網域的時候,再偷偷幫你把一些設定調整回來,像是有些會透過WinExit.scr這個方式來強制系統每隔一段時間就跳出保護程式,看樣子我們家網管應該也是用這個方式不過鍵值被我刪除了^^Y

他調整的地方的鍵值是在:



所以只要輸入開始-->執行-->輸入regedit

把ScreenSaveActive那些值改成0就可以強制關閉螢幕保護程式每15分鐘跳出來的問題~

原來的值是:
ScreenSaveActive 1     (啟動螢幕保護程式)
ScreenSaverIsSecure 1  (螢幕保護程式結束後要詢問密碼)
ScreenSaveTimeOut 900 (15分鐘)
 
另外還有一個預設的scrnSave.scr的鍵值也被我刪除了,不過我想應該是跟這個沒有關係...

DIY-DEBUG.EXE

一直都覺得Debugger.exe 很好玩,不過都沒時間自己手動寫一個。
剛好趁最近有閒暇時間,就寫了一個搞笑版的Debug.exe 來測試它的原理。

我把我的主程式分成上圖中左半邊的那幾個區塊,一開始的時候先去把INT1/3中斷向量串走,讓他能夠被我控制,接著就去觸發一個INT 3h,我在自己的NewInt3hHandler內去把TF Flag設定起來,那麼離開INT 3h的時候,CPU自己每執行一行指令就會觸發一次INT 1h。

接著,我在自己的NewInt1hHanlder內去處理我的Command,從可以讓我控制我要的動作,而整個執行的畫面就會像是上圖中的右半邊一樣。

不過,寫到這邊時才發現原來反組譯才是最難的啦~

看起來接下來的功課就是去研究反組譯要怎麼做了 >.<

星期三, 6月 15, 2011

C語言Printf 自動補0

在一般的C語言中顯示HEX時總是會希望能夠補0,像是HEX: 0x10 顯示的時候就希望是0010
那要如何做呢?

其實很簡單,你只要控制printf 內的顯示控制就可以了。

例如:  
 printf ("%4X",MyHex);     <--4個字元,但不會補0
 printf ("%04X",MyHex);   <--會補0

從下圖中的黑色部分中可以看到AX的值會有兩種結果~

星期二, 6月 14, 2011

Win7 認不到USB HDD,出現"磁碟簽章發生衝突"

最近遇到Win7接了一個外接USB HDD結果卻看不到,但是在DeviceManager內可以看到。


查了一下這個錯誤訊息,發現出現"磁碟簽章發生衝突"所以離線,因此Google大神後找到了一個網站也遇過相同的問題,使用這邊的 "diskpart" 解決方式後就可以看到我的USB HDD了。


http://beddingmall.blogspot.com/2011/01/blog-post_04.html

Uninstall TrendMicro PC-cillin 方式

因為某些需求,所以希望把公司的掃毒程式移除,然後裝上自己喜歡的掃毒程式。

可是我並沒有反安裝的密碼,因此當我要反安裝的時候他會出現輸入密碼的對話框@@

但是沒關係,使用下面的方式可以達到我的需求:

1.執行一個批次檔先把掃毒程式停止,這樣子才能改註冊檔的機碼
先使用文字編輯器產生一個批次檔,我的Stop.bat內容如下:

net stop "OfficeScanNT RealTime Scan"
net stop "OfficeScan NT Listener"
taskkill /F /IM TmListen.exe
taskkill /F /IM PccNTMon.exe
taskkill /F /IM OfcPfwSvc.exe
taskkill /F /IM NTRtScan.exe

2.使用管理者權限執行stop.bat

3.開啟->執行 ,鍵入Regedit ,然後修改機碼Allow Uninstall = 1:
位置在: HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\PC-cillinNTCorp\CurrentVersion\Misc.\Allow Uninstall

4.. 開始->所有程式->TrendMicro ->uninstall trend micro officescan ...

Enjoy...

EFI教學(1)-Flashmap.fdf

在傳統的BIOS 中我們都會使用一些Build tool把一些需要的檔案(OPROM/VBIOS...etc)、BIOS程式碼依照一些"描述檔的設定"把它依序擺放在一個BIOS Image file中,而在EFI BIOS中又是如何操作這部分的動作呢?

在EFI環境中已經有現成的Build tool會去做這件事情,他會去參考一個描述檔內的設定來幫你打包好整個BIOS Image file,然後我們就可以把這個BIOS Image file燒進去SPI ROM裡面。

而這個描述的檔案就叫做Flashmap.fdf ,這個檔案可以分成上下兩部分(下圖左邊所示)

上半部為FlashDevice ,簡稱FD,他是用來先區分好整個BIOS Image file的區塊為何? 他就類似像說你先決定好整個抽屜的大小,然後幫這個抽屜放隔板,隔出一塊塊小區塊。

下半部為FlashDeviceImage,也就是當你把抽屜放隔板,隔出一塊塊小區塊後,你要放那些東西進去這些小區塊,這些東西你就要描述在這邊。

所以從範例圖中可以看到上半部先隔出一個區塊叫做NVSTORE,而這個區塊還可以再細分成更多小區塊,例如圖中的SLPKEY,接著在FlashDeviceImage中告訴Build tool說你幫我把Slpkey.bin放到NVSTORE->SLPKEY的這個小區塊中。

而一般我們的EC BIOS也是透過這種方式包進去BIOS Image file內的。

但是你可能會問說那VBIOS跟OPROM也是嗎? 這兩個東西目前是包在DXE code裡面(我們稱FV,firmware volume,有很多的FV,DXE code只是其中之一),所以VBIOSOPROM並非像上面的方式來打包,而是先經過軟體壓縮後放進去FV裡面(可以省Code size),然後再把檔名為XXX.FV依照上面的方式描述在FlashDeviceImage {...} 內,然後Build tool就會把他們打包進去BIOS Image file。

因此,在BIOS開機過程中會把DXE code解壓縮,然後再從裡面把VBIOS/OPROM撈出來。

希望以上的解說對於剛入門EFI的人有幫助啦~