原创 vmware NAT共享設置

   使用宿主機的vmnet 8, vmnet 8設置如下:       IP Address. . . . . . . . . . . . : 192.168.5.1      Subnet Mask . . . . . . . . .

原创 基於網絡的內核調試

    驅動調試需要用到兩臺機器,目前主要是通過串\口、usb或者1394接口來連接。對於軟設備驅動來說就多了一種選擇,通過vmware等虛擬化軟件來虛擬測試機。但有些情況下必須在真實的雙機環境進行,如真實設備驅動的調試,以及其他驅動無

原创 從EXE的資源段提取sys文件-轉載自(rootkit:subverting the windows kernel)

    Windows PE executables allow multiple sections to be included in the binary file. Each section can be thought of as

原创 臨界區的內部結構與實現

        做windows開發的人都知道臨界區是應用層同步對象,相對於其它內核同步對象來說,等待臨界區的開銷比較小,其原因在於臨界區採用忙等(自旋)的方式來避免線程切換。這些原理性知識大家都比較清楚,但對於它的實現細節就不是每個人都

原创 總結win7平臺的dep機制-由phoneme jit功能異常說起

        最近在編譯j2me的開源工程phoneme,編譯出來的虛擬機在xp中運行良好,到了win7就出現問題。經過調試發現,虛擬機在開啓jit的時候會把動態編譯的代碼放到堆中執行,而dep開啓的情況下是不允許這麼做的,這樣就引發了

原创 Nt系列函數與Zw系列函數的關係

        常有人搞不清這兩組函數的關係,因爲調用接口和實現功能一樣,有些人就認爲他們是同一個函數的不同名稱。實際上他們是有區別的,藉助windbg這個工具,我們就可以一探究竟。         在ring3層,這兩組函數確實是同一個

原创 RSA加密算法中解密步驟的證明

    pq = N  p,q爲兩個質數     記[N,e], [N,d]分別爲算法中的公鑰和私鑰,根據算法性質知ed = 1 mod (p-1)(q-1)  這裏的等號爲模等,下同    則ed=1 mod (p-1)   ed=1

原创 win7編程接口的一些變化

   原文鏈接:http://www.nirsoft.net/articles/windows_7_kernel_architecture_changes.html Windows 7 introduces a new set of dl

原创 windows平臺編譯phoneme經驗總結

        很多軟件都有動態創建java虛擬機的需要,對此我們可以用java的jni接口來實現。j2se的jvm比較大,帶的東西比較多,對於產品發佈來講往往不是首選。另外,j2se對應的開源工程hotspot相當龐大,不好修改和編譯。

原创 top k算法的3種簡單實現和比較

        top k算法是什麼大家都明白,就不廢話了,這裏直接上代碼。本人用python實現了3種常用算法,命名如下:     heap_bigk1,用堆排序對構建整個數據的大根堆,然後取前k個。     heap_bigk2  

原创 用rm命令批量刪除文件的潛在問題

        最近寫了一個用rm命令批量刪除文件的函數,測試發現有些文件刪除不乾淨。經過分析發現是文件名包含的shell定義的特殊字符,這些特殊在shell有特殊含義。比如我要刪除c$a.class文件,調用rm c$a.class的結

原创 windows程序逆向工具彙總

       對於軟件逆向,有稱手的工具往往事半功倍,這裏簡單羅列出一些常用工具,不做詳細介紹,供新手一個入門指引。         靜態分析工具首推IDA,有了它其他的反彙編工具基本用不着。         動態調試工具有OD和wind

原创 windows同步原理與調試(PPT)

    最近在公司做了一次關於windows同步方面的培訓,以下是本次培訓的PPT文字。      Windows同步原理與調試      richard     2012.10.9    主要內容與講解方式 ..用戶態同步技術 

原创 asprotect脫殼經驗談

    數月前對某一程序分析,拿到程序應PEid掃描了一下,發現是asp 的殼,之前脫過此類殼感覺難度不大,此程序在OEP調用了GetStartupInfo,找到OEP並不困難,結合堆棧基本就可以確定OEP。然後開始用ollydump d

原创 GetLastError函數實現

        MSDN上說這個函數返回的是當前線程最近一次錯誤碼,這個錯誤碼是通過調用SetLastError函數設置的,具體實現其實相當簡單,也就兩句彙編代碼     mov eax, dword ptr fs:[18h]     m