原创 數據逆向(三)——識別字符串與數組

字符串     在C語言中,字符串是由字符組成,單字符不是字符串,至少有兩個字符組成,且結尾字符是'/0'。     例如:"ABCD" 內存中實際儲存結構是 41H 42H 43H 44H 00H       字符串的尋址,依靠首字節進

原创 關於PE病毒編寫的學習(三)

歷史上,在windows95發佈後,用高級語言編寫的外殼病毒,經過簡單地改造編譯,就能從DOS平臺遷移到windows平臺上。 並且在這當中很多“前置病毒”,僅僅需要重新編譯。   另外之所以用“前置病毒”作爲第一分析樣本,理由如下: 1

原创 ASCII壓縮算法實現

#include <stdio.h>#include<string.h>#include<stdlib.h> //壓縮函數,採用開解循環提高效率void ASCII_Compress(char *dest,char *src){     

原创 代碼逆向(五)——switch-case識別技巧提高

我們前面爲各位讀者分別介紹了轉成if-esle與利用跳轉表兩種優化模式,但是在最後我隱含着提出了一個問題,既如果我們的switch-case分支兩個數之差大於50甚至更多的時候,那麼我們此時是否仍需要利用跳轉表來解決問題呢?很顯然我們不能

原创 代碼逆向(八)——除法與取模運算的識別與優化原理

1.9.1、除法與倒數相乘    何爲倒數相乘?很簡單,編譯器世界中倒數相乘的中心思想其實就是用乘法來代替除法運算。它的原理很簡單,就是將被除數乘以除數的倒數,其公式爲x/y = x*(1/y),我們拿10/2作爲例子,我可以得出以下推論

原创 你可能不瞭解的彙編(中)

1.ret結束程序和ExitProcess的區別       在堆棧平衡的情況下,用ret結束程序,系統自然會調用ExitThread來結束線程;另外,如果是單線程進程,系統自然還會調用ExitProcess。然而,在這裏我要說盡量不要使

原创 彙編寫驅動(一)——光速入門

用匯編寫windows驅動非常簡單,只要有彙編基礎和用C寫驅動的能力即可。有了這兩樣基礎,我們距離用匯編寫驅動,只剩下一層窗戶紙,一戳就破。一、準備軟件:Radasm        爲了快速入門,好的IDE是降低入門難度的有效手段。Rad

原创 微軟沒那麼邪惡

此文收集了一些大家對微軟的常見誤解,並予以解釋,本人並非受僱於利益相關團體,立場雖屬主觀,但絕無利益驅使   誤解1:windows源代碼是非公開的,微軟作爲美國政府的看門狗,其中一定隱藏了不可告人的東西    首先,windows是半公

原创 複雜分支結構逆向

一、           條件分支的逆向基礎 (1)簡單if-else 我們知道簡單的if-else的跳轉結構是這樣的。 例如: if(i1<x1)      ……; else      ……; 在反彙編結果中我們會看到類似下面的結果

原创 抗去除花指令(二)——有創意的花指令

一、概述 “jmp/call/ret+垃圾數據”這樣的花指令已經是相當“老掉牙”了,OD的插件對付它們基本是“秒殺”,所以本文想說點“有點創意”的花指令,至少能對付OD的插件。   二、創意的核心 [2.1]花指令因何被發現 “jmp/c

原创 控制流迷惑——控制流整平

一、控制流整平的作用     學逆向的人都知道,if-else、while、for具有典型的跳轉等結構,即使通過多層嵌套、拓展條件等方法,依然可以通過“切片技術”來判斷。有了這些依據,就給程序分析帶來很多便利。     正是這個原因,爲了

原创 抗去除花指令(三)——去除檢測

任何技術都有被攻破的一天,沒有包打天下的方法。再強的花指令也是有可能被清除的,這時我們也要想辦法應對。所以我們經常需要檢測花指令是否被清除,加以應對。一、花指令被清除後的痕跡    我們來看一下,下面一段簡單花指令被清除後的結果:代碼: 

原创 彙編寫驅動(三)——字符串問題的補充——string.mac說明部分的譯文

我的上一篇文章,提到了masm32/macro/string.mac這個文件裏的宏,但是沒有說明使用方法,所以我直接把這個文件裏的使用說明翻譯一下。;; 文本宏的集合;; 作者: Four-F ([email protected]);; 最後更

原创 彙編寫驅動(二)——字符串的一些問題

    剛開始學彙編寫驅動時,最開始遇到的問題就是關於字符串的,因此和大家分享一下經驗。1.如何用匯編實現KdPrint      用C寫驅動時,估計都比較喜歡用自定義的宏函數KdPrint來替代DbgPrint。用C的宏定義來很簡單,但

原创 福島核泄漏必然性的分析

      我作爲一個核專業的學生,就給大家簡單的說明一下,福島核電站泄漏事故固然有天災的緣故,但其背後隱藏着人爲設計缺陷的必然性。         一、日本處於環太平洋火山帶上,是一個地震高發國家。福島核電站就位於地震帶上。而我國核電站