主頁 > 後端開發 > [安全攻防進階篇] 十.熊貓燒香病毒機理IDA和OD逆向分析--病毒釋放程序(中)

[安全攻防進階篇] 十.熊貓燒香病毒機理IDA和OD逆向分析--病毒釋放程序(中)

2020-12-22 12:00:37 後端開發

如果你想成為一名逆向分析或惡意代碼檢測工程師,或者對系統安全非常感興趣,就必須要認真分析一些惡意樣本,熊貓燒香病毒就是一款非常具有代表性的病毒,當年造成了非常大的影響,并且也有一定技術手段,本文將詳細講解熊貓燒香的行為機理,并通過軟體對其功能行為進行分析,這將有助于我們學習逆向分析和反病毒作業,后續作者還將對其進行逆向除錯,以及WannaCry勒索蠕蟲、各種惡意樣本及木馬的分析,基礎性文章,希望您喜歡!

IDA和OD作為逆向分析的“倚天劍和“屠龍刀”,學好它們的基本用法至關重要,本文重點分析熊貓燒香病毒的功能函式,大家掌握這些技巧后才能更好地分析更多的代碼,同時,本文部分實驗參考姜曄老師的視頻分析,真的非常佩服和值得去學習的一位老師,技術路上哪有享樂,為了提升安全能力,別抱怨,干就對了~

在這里插入圖片描述

上一篇文章講解了“熊貓燒香”病毒樣本的反匯編代碼入口處的分析,接下來我們分析病毒的核心部,其分析思路基本一致,同時越深入核心部分會遇到越多的API函式,我們將利用OD和IDA工具結合呼叫函式的引數進行分析,它將有助于我們更好地理解病毒行為,同時,將分析出的每一個CALL函式,改為我們能夠理解的名字,這往往也有助于對后續程式的理解,作者結合兩篇文章繪制了一張分析圖,希望加深大家對熊貓燒香的了解,這系列文章寫得不容易,希望大家給點個贊和收藏,也歡迎評論和交流,

在這里插入圖片描述

從2019年7月開始,我來到了一個陌生的專業——網路空間安全,初入安全領域,是非常痛苦和難受的,要學的東西太多、涉及面太廣,但好在自己通過分享100篇“網路安全自學”系列文章,艱難前行著,感恩這一年相識、相知、相趣的安全大佬和朋友們,如果寫得不好或不足之處,還請大家海涵!

接下來我將開啟新的安全系列,叫“安全攻防進階篇”,也是免費的100篇文章,作者將更加深入的去研究惡意樣本分析、逆向分析、內網滲透、網路攻防實戰等,也將通過在線筆記和實踐操作的形式分享與博友們學習,希望能與您一起進步,加油~

  • 推薦前文:網路安全自學篇系列-100篇

文章目錄

  • 一.實驗背景
  • 二.sub_408024核心函式分析
    • 1.sub_40277C子函式
    • 2.sub_405684子函式
    • 3.sub_403ED4子函式
    • 4.sub_4057A4子函式
    • 5.分析sub_4057A4后續洗掉功能
    • 6.sub_4078E0子函式
    • 7.sub_403C44子函式
    • 8.sub_403ECC子函式
  • 三.總結


一.實驗背景

對病毒進行逆向分析,可以徹底弄清楚病毒的行為,從而采取更有效的針對手段,為了節省篇幅,在這里我不打算將“熊貓燒香”進行徹底的分析,只會講解一些比較重要的部分,大家只要掌握了這些思想,那么就可以處理很多的惡意程式了,

這里主要使用的工具包括:

  • PEiD:病毒加殼、脫殼基礎性分析
  • IDA Pro:靜態分析
  • OllyDbg:動態分析

實驗檔案:

  • setup.exe:熊貓燒香病毒

基本流程:

  • 利用查殼工具檢查病毒是否帶殼
  • 利用OD動態分析病毒
  • 利用IDA靜態分析病毒

注意:由于OD工具會將程式運行起來,所以我們在進行惡意代碼分析時盡量在搭建好的虛擬機中操作,如果病毒傳播性較強如WannaCry,建議斷開網路和斷開共享分析,

在這里插入圖片描述

實驗思路:

  • 1.利用OD分析每一個CALL的功能
  • 2.使用IDA Pro在宏觀上把握程式的功能并及時對函式進行重命名操作

上篇回顧:

  • 0x0040CB7E call sub_403C98
    – 重命名為:AllocStackAndCopyString
    – sub_403D08:分配記憶體空間
    – sub_402650:字串拷貝功能
  • 0x0040CB9F call sub_00405360
    – 重命名為:DecodeString
    – 0x004053CC:回圈入口點
    – 0x004053E8:獲取“xboy”解密字符
    – 0x00405408:完成異或解密操作
  • 0x0040CBAC call sub_404018
    – 重命名為:CMPString
    – 0x00404041:回圈入口點
    – 功能:字串比較“武漢男生感染下載者”
  • 0x0040CBCC loc_40CBBC
    – 功能:字串解密和比較操作,解密字符“whboy”
    – DecodeString
    – CMPString

二.sub_408024核心函式分析

上一篇文章我們詳細介紹了熊貓燒香病毒起始階段的初始化操作,這篇文章將進入該病毒的核心功能函式,進行相關的逆向分析,Let’s Go!!!

1.sub_40277C子函式

第一步,打開IDA Pro載入我們的病毒樣本,

在這里插入圖片描述

第二步,定位到loc_40CBE6位置,
這里看到了三個call函式,它們又是什么功能呢?這三個call是熊貓燒香病毒最重要的功能,也是我們接下來要深入逆向分析的內容,

  • sub_408024
  • sub_40CA5C
  • sub_40C97C

在這里插入圖片描述

第三步,查看函式sub_408024內容,
在這個函式的最開始位置我們看到了將84h賦值給ecx,84h表示回圈的次數,回圈的主體是下面兩個push,其中每一個push能開辟8個位元組(32位)的空間,兩個位元組能獲得16個位元組的空間,這樣的空間一共申請了ecx(84h)次,

  • mov ecx, 84h
  • push 0
  • push 0

在這里插入圖片描述


第四步,我們主要分析call函式,往下看到第一個函式sub_40277c,

在這里插入圖片描述

第五步,接著用OD載入exe程式,進行動態的分析,直接跳轉到該地址,

  • 0x0040804D call sub_40277C

基本流程為右鍵“轉到”->“運算式”->輸入“0040804D”,按下F2增加斷點,

在這里插入圖片描述

按F9直接執行到該位置,

在這里插入圖片描述

該函式我們可以在IDA中先雙擊查看,會發現該函式首先呼叫了GetModuleFileNameA,

  • 0x004027A0 call GetModuleFileNameA
  • 該函式功能主要是獲取當前行程已加載模塊檔案的完整路徑

在這里插入圖片描述


第六步,回到OD中sub_40277C函式,按下F7單步進入函式,
接著進入函式后按F8單步步過,可以看到GetModuleFileNameA右下角的內容,在這個PathBuffer里,會保存即將獲取的路徑資訊,

  • 0x004027A0 call 00401100
  • PathBuffer

在這里插入圖片描述

接著選中PathBuffer值,右鍵點擊“資料視窗中跟隨”,

在這里插入圖片描述

注意:按下F8,大家可以在資料視窗中留意該值的前后變化,發現它成功獲取了該樣本的本地路徑,

  • C:\Users\14551\Desktop\setup.exe

在這里插入圖片描述


第七步,我們打開IDA給sub_40277C函式重命名,

小技巧
IDA中雙擊會進入對應的函式,那么如何回傳上一層呢?按下ESC即可回傳,如下圖所示,從GetModuleFileNameA中按ESC回傳sub_40277C位置,而按F5鍵會逆向出C語言程式,

在這里插入圖片描述

然后選中函式重命名,快捷鍵為N,

在這里插入圖片描述

總結,重命名及對應功能如下:

  • sub_40277C -> GetFilePathAndName
  • 功能:獲取檔案的完整路徑及檔案名稱

在這里插入圖片描述


2.sub_405684子函式

接著往下看,函式如下:

  • 0x0040805E call sub_405684

在這里插入圖片描述

第一步,繼續在OD中進行跟進,
首先我們運算式跳轉到“00408052”位置,然后按下F2增加斷點,按下F9執行過來,

在這里插入圖片描述

我們首先可以看看它壓入的引數是什么?

第二步,在資料視窗中跟隨EAX,
按下F7單步執行,在暫存器中選中EAX,右鍵“資料視窗中跟隨”,

在這里插入圖片描述

顯示結果如下圖所示,可以看到EAX中保存的是剛付訓取的病毒檔案完整路徑,

在這里插入圖片描述

第三步,在資料視窗中跟隨EDX,
按下F7單步執行,在暫存器中選中EDX,右鍵“資料視窗中跟隨”,目前EDX還是空值,

在這里插入圖片描述

第四步,進入后面的call(00405684),查看它的內容,
先選中EAX右鍵“資料視窗中跟隨”,

在這里插入圖片描述

然后按下F7進入函式,可以看到這里出現了粗線條,說明它是一個回圈,我們步入回圈分析其內容,

在這里插入圖片描述

前面按下F8執行,然后到回圈位置按F7步入,

  • mov eax, [local.1]

在這里插入圖片描述

注意這里簡單介紹下區域變數的概念,

小技巧
[LOCAL]是區域變數的意思,例如[LOCAL.1]就是第一個區域變數,存放在堆疊里的[EBP-4]位置,[LOCAL.2]就是[EBP-8],圖片上的命令其實就是MOV EAX, [EBP-4],

方法一:可以在OD的選項->除錯設定->分析里面有個選項把勾去掉設定

在這里插入圖片描述
方法二:選中該命令右鍵“匯編”即可,但修改后會顯示灰色

在這里插入圖片描述


第五步,接著分析回圈,
分析陳述句“mov eax, dword ptr ss:[ebp-0x4]”,首先將EBP-4賦值給EAX,而當前的EBP-4就是所獲取的病毒的完整路徑,**

  • mov eax, [local.1]
  • mov eax, dword ptr ss:[ebp-0x4]

在這里插入圖片描述

然后再按F8,這里是將EAX加上EBX再減1,其中EAX是病毒完整路徑的首地址,EBX是20,它又是什么呢?

  • mov al, byte ptr ds:[eax+ebx-0x1]

我們查看EBX,如下圖所示,凡是由Delphi撰寫的程式,它會在字串減4的位置保存一個數值,這個數值就是字串的長度,我們可以看到當前路徑長度是0x20,

  • [eax+ebx-0x1]:計算字串最后一個字母的位置,即“e”,下圖中也顯示出來了“ds:[02140127]=65(e)”

在這里插入圖片描述


第六步,繼續按F8執行,這里結合IDA分析分析0x5C、0x2F、0x3A對應的值,
我們在0x004056B4看到有一系列的比對,然后右鍵分別選中0x5C、0x2F、0x3A,決議成對應的值,或者選中按下R鍵,

在這里插入圖片描述

5C代表斜杠(\),2F代表反斜杠(/),3A代表冒號(:),

在這里插入圖片描述

小結,該回圈是將病毒所在完整的路徑從后向前檢索,直到遇到斜杠(\)、反斜杠(/)、冒號(:)結束,結合病毒來看,它找斜杠的位置,其實這段程式要么是想不包含病毒檔案名的路徑,要么想獲取病毒的檔案名(setup.exe),

在這里插入圖片描述


第七步,在OD中繼續按F8除錯,注意觀察資料視窗的變化,
發現該程式不斷地從后往前獲取路徑資訊,并進行對比,

在這里插入圖片描述

接著發現程式在呼叫完call函式之后,會出現一個新的字串,事實上很明顯,它是想獲取去除病毒檔案名后的路徑,可見,程式將去除了檔案名的路徑拷貝到了之前申請的空間中,于是可以將sub_405684重命名,

  • 0x004056D8 call 0040412C

在這里插入圖片描述

總結,重命名及對應功能如下:

  • sub_405684 -> GetFilePath
  • 功能:獲取去除病毒檔案名后的路徑
  • IDA位置:0x0040805E

在這里插入圖片描述


3.sub_403ED4子函式

第一步,繼續在OD中往下分析代碼,賦值陳述句,
回傳的第一句代碼是將我們之前所獲取的不帶檔案名的地址賦值給EAX,

  • lea eax, dword ptr ss:[ebp-0x3B4]

在這里插入圖片描述

我們選中EAX在資料視窗中跟隨,可以看到對應的值是“02140138”,

在這里插入圖片描述

對應的值如下圖所示,即不帶檔案名的檔案路徑,現在EAX保存的就是這個地址,

在這里插入圖片描述


第二步,繼續分析代碼,接下來將“Desktop_.ini”賦值給EDX,注意,0x44表示為D(十進制68對應的ASCII碼),

  • mov edx, 0x40862C

在這里插入圖片描述

第三步,通過IDA大致看看call函式00403ED4,

  • 0x0040806E call sub_403ED4

在這里插入圖片描述

但是通過這個很難分析出它的具體功能,我們不妨只關注它的兩個引數,觀察執行完該函式后的引數位置有什么變化,

第四步,我們留意著資料視窗,然后按F8執行,
可以看到剛才所獲取的不帶檔案的路徑名,在其后面增加了一個“Desktop_.ini”,從而組成了新的字串,

在這里插入圖片描述

分析這里我們就知道sub_403ED4功能是將上面所獲取的不帶檔案名的路徑的地址賦值給eax,然后將字串“Desktop_.ini”的地址賦給edx,

總結,重命名及對應功能如下:

  • sub_403ED4 -> StringCat
  • 功能:拼接字串,包含“Desktop_.ini”后綴

在這里插入圖片描述

同樣,我們可以進入sub_403ED4進行詳細分析,

在這里插入圖片描述


4.sub_4057A4子函式

接著繼續分析sub_4057A4子函式功能,

  • 0x00408079 call sub_4057A4

在這里插入圖片描述

第一步,我們在OD中查看EAX的地址,
在這里我們跟蹤查看這個地址,選中堆疊數值,右鍵“資料視窗中跟隨數值”,

在這里插入圖片描述

可以看到,它的這個引數是我們之前已經連接好的字串的首地址,

  • 0x020F0138

在這里插入圖片描述


第二步,按下F8運行至Call 4057A4函式,再按F7進入該函式分析,

在這里插入圖片描述

繼續按下F7進入call 0040573C,發現有個FindFirstFileA函式,我們直接來看看它的引數,注意,很多時候右邊注釋內容是沒有的,需要我們手動分析,

在這里插入圖片描述

按下F8執行到函式呼叫前位置,可以看到EAX中存放是的是剛才連接出來的字串,該函式的作用就是說明要查找當前目錄下Desktop_.ini檔案是否存在,

  • C:\Users\14551\Desktop\Desktop_.ini

在這里插入圖片描述

總結,重命名及對應功能如下:

  • sub_4057A4 -> CheckFileExist
  • 功能:檢測檔案“Desktop_.ini”是否存在

在這里插入圖片描述


5.分析sub_4057A4后續洗掉功能

接著我們繼續分析,由于之前進行了重命名操作,所以代碼的可讀性更好了,從0x00408079位置下面的代碼我們都能看懂,

  • 0x0040807E test al, al
  • 0x00408086 push 80h
  • 0x 004080C5 call SetFileAttributesA

它會根據上一段代碼的查找結果進行判定al,即如果當前目錄下Desktop_.ini檔案存在,那么就會呼叫SetFileAttributesA函式,該函式會改變他的屬性,將它的屬性改為80h所代表的值,即該檔案的檔案屬性調整為NORMAL(正常屬性),

在這里插入圖片描述

繼續往下看, 呼叫了一個Sleep函式停止1毫秒,停止1毫秒之后,它接著呼叫DeleteFileA函式將Desktop_.ini洗掉,正常來講,病毒還沒有運行的時候,這個Desktop_.ini檔案應當是不存在的;如果存在的話,病毒首先會改變這個檔案的屬性,再將這個病毒給洗掉掉,

  • push 1
  • call Sleep
  • call DeleteFileA

在這里插入圖片描述

這里看到一個未知函式sub_4040CC,它的引數是[ebp+var_3C4],事實上3C4就是檔案的路徑,將檔案路徑賦值給EAX,我們進入sub_4040CC函式,發現其功能:

  • 驗證EAX是否存在,即判定檔案的路徑是否為空

如果檔案不存在它會直接執行loc_408110位置的函式,sub_4040CC其實就是一個驗證機制,在IDA中按下ESC回傳,我們給它進行重命名,

在這里插入圖片描述

總結,重命名及對應功能如下:

  • sub_4040CC -> CheckPathIsExist
  • 功能:檢測檔案的路徑是否存在

在這里插入圖片描述


6.sub_4078E0子函式

繼續往下分析,我們看到sub_4078E0函式,

  • 0x00408126 call sub_4078E0

在這里插入圖片描述

第一步,我們在IDA中大致看下函式的內容,
我們可以看到這個函式非常的長,且也呼叫了很多其它的函式,那么看上去很難分析清楚這個函式到底是做什么的,這里我們先不管其具體的實作細節,只看看該函式執行完后,這些引數或暫存器位置發生了什么變化,主要關注該函式執行前后,程式使用了哪些暫存器,

在這里插入圖片描述

第二步,打開OD跳轉到40811D位置,按下F2增加斷點,再按F9執行過來,
注意,病毒逆向分析就是呼叫IDA和OD反復除錯的程序,

在這里插入圖片描述

第三步,在OD中分析具體代碼,

  • mov eax, dword ptr ss:[ebp-0x3CC]
  • lea edx, dword ptr ss:[ebp-0x4]
  • call 004078E0

首先它是將EBP-3CC賦值給EAX,再將EBP-4賦值給EDX,呼叫call函式,

在這里插入圖片描述

我們現在按F8來步過這個call函式,再觀察資料視窗中存在什么變化,可以看到執行完call函式后,這個函式用了很大一片區域寫入了非常多看似無意義的字符,結合右邊的ASCII碼,可以將這些內容理解為暴力P解的字典,

  • 病毒的撰寫者企圖利用暴力P解的方式來攻破計算機中某些驗證機制

在這里插入圖片描述

當然這些內容還是非常多的,病毒作者也寫入了很多其他資訊,有興趣的作者可以好好分析下,這些資訊有助于我們獲取病毒的行為資訊,只有當我們深入分析其原理和實作程序,才有助于我們獲取病毒的行為資訊,

在這里插入圖片描述

在這里插入圖片描述

總結,重命名及對應功能如下:

  • sub_4078E0 -> WriteVirusInfoToMem
  • 功能:寫入病毒資訊到記憶體中,病毒作者企圖利用暴力P解的方式,來攻破計算機中的某些驗證機制

在這里插入圖片描述


7.sub_403C44子函式

繼續在OD中分析sub_403C44子函式,

第一步,查看[EBP-8]地址對應的值,
在資料視窗中,可以看到eax的值為ebp+var_8的地址,通過OD可以知道,這個地址中保存的是0,可以理解為沒有資料,

  • 00 00 00 00

在這里插入圖片描述

第二步,我們按下F7進入這個call,查看具體內容,

  • 0x0040812E call 00403C44

在這里插入圖片描述

可以看到,它首先是將EAX的內容賦值給EDX,我們按下F8可以看到EDX也變成了0值,

  • mov edx, dword ptr ds:[eax]

在這里插入圖片描述

之后的test運算,使得ZF變為1,滿足跳轉條件,直接跳轉至retn,那么本段函式也就結束了,

在這里插入圖片描述

剛才我們通過test edx, edx發現ZeroFlag標志位變成了1,這個標志位變為1,說明這個值是一個0,這段函式似乎并沒有實作什么特別清晰具體的功能,那么不妨將這個操作理解為某種標志的設定,

在這里插入圖片描述

總結,重命名及對應功能如下:

  • sub_403C44 -> SetZeroFlag
  • 功能:設定零標志位重設,將其設定為0

在這里插入圖片描述


8.sub_403ECC子函式

回到OD,我們分析sub_403ECC子函式,

第一步,查看并分析[EBP-4]保存的內容,

  • mov eax, dword ptr ss:[ebp-0x4]

在這里插入圖片描述

在資料視窗中跟隨,可以看到“MZP”,這里大致是保存了一個PE檔案,事實上就是將這個PE檔案的首地址賦值給這個EAX,接著看看這個call,

在這里插入圖片描述

第二步,分析call 403ECC函式,
按下F7進入這個call函式,首先呼叫“TEST EAX, EAX”驗證PE檔案是否存在,

在這里插入圖片描述

按下F8繼續,這里是跳轉不成立,然后出現在EAX-4位置,我們在資料視窗中跟隨內容,

  • mov eax, dword ptr ds:[eax-0x4]

小技巧
這里需要特別強調的是,由于本病毒程式是使用Delphi撰寫的,因此字串的首地址減去4后,所取出的4個位元組的內容就是此字串的長度,

換句話說,這段代碼中的[eax-4]就是eax所指向的檔案長度,字串長度就是EC00,這條陳述句就是將EC00保存在暫存器里面,于是可以將sub_403ECC重命名,

  • 字串長度:EC00
  • 現在EAX保存的就是字串的長度,即PE檔案的長度

在這里插入圖片描述

在這里插入圖片描述

總結,重命名及對應功能如下:

  • sub_403ECC -> GetFileLen
  • 功能:獲取PE檔案的長度

之前這個檔案的長度是保存在EAX里面,這里又將檔案長度賦值給EBX,

在這里插入圖片描述

接下來,在獲取檔案長度后,程式會跳轉到loc_408163處執行,首先它會驗證EBX是否為零(檔案長度是否為0),正常來說檔案長度是不為0的,也就是這個檔案是真實存在的,所以接下來的跳轉不成立,會繼續往下執行,

  • test ebx, ebx
  • jle short loc_408171
  • mov eax, [ebp+var_4]

在這里插入圖片描述

接著我們嘗試用OD進行分析,跳轉到0x00408163的位置,按下F2增加斷點,再按F9讓它執行過來,

在這里插入圖片描述

按F8跳轉不成立繼續執行,可以看到將[EBP-4]賦值給EAX,事實上就是讓EAX重新指向這個PE檔案的起始位置,

  • mov eax, dword ptr ss:[ebp-0x4]

在這里插入圖片描述

按下F8繼續執行,這里是將 [EAX+EBX-1],由于EAX指向的是檔案起始地址,而EBX是檔案的長度,減一是獲取整個PE檔案最后一個字符它是什么,事實上,CMP陳述句就是驗證這個檔案最后一個資料它是否為零,如果為0,則接下來的跳轉不成立,

  • cmp byte ptr [eax+ebx-0x1], 0x0

在這里插入圖片描述

經過OD的動態分析發現,因為這里顯示跳轉未實作,故檔案尾端的值為0,所以不執行跳轉,繼續向下執行,

在這里插入圖片描述


三.總結

寫到這里,該部分關于sub_408024核心函式的部分功能就介紹完畢,請大家一定要動手跟著除錯,先感受下這部分的實驗,后面的文章我們將繼續分析熊貓燒香病毒感染的程序,

在這里插入圖片描述

再次感謝姜曄老師,經過這篇文章的討論,我們詳細除錯了病毒的各個模塊,當然,整個病毒的所有功能都沒時間完全概述,文章更多是提供一種惡意樣本分析的方法和思路,帶領大家入門,正如姜老師所說“只要各位讀者勤于動手,并將所講的逆向分析的基本原理搞清楚,那么這個病毒分析根本不在話下”,

最后簡單總結這篇文章的逆向程序,主要分析sub_408024核心函式,

  • 0x0040804D call sub_40277C
    – 重命名為:GetFilePathAndName
    – 功能:獲取檔案的完整路徑及檔案名稱
  • 0x0040805E call sub_405684
    – 重命名為:GetFilePath
    – 功能:獲取去除病毒檔案名后的路徑
    – IDA位置:0x0040805E
    – 技巧:回圈將病毒的完整路徑從后往前檢索,直到遇到斜杠(\)、反斜杠(/)、冒號(:)結束,從而提取病毒的路徑或病毒的檔案名(如setup.exe)
  • 0x0040806E call sub_403ED4
    – 重命名:StringCat
    – 功能:拼接字串,包含“Desktop_.ini”后綴
  • 0x00408079 call sub_4057A4
    – CheckFileExist
    – 功能:檢測檔案“Desktop_.ini”是否存在
  • 0x00408105 call sub_4040CC
    – CheckPathIsExist
    – 功能:檢測檔案的路徑是否存在
  • 0x00408126 call sub_4078E0
    – WriteVirusInfoToMem
    – 功能:寫入病毒資訊到記憶體中,病毒作者企圖利用暴力P解的方式,來攻破計算機中的某些驗證機制
  • 0x0040812E call sub_403C44
    – SetZeroFlag
    – 功能:設定零標志位,將其設定為0
  • 0x00408136 call sub_403ECC
    – GetFileLen
    – 功能:獲取PE檔案的長度
  • CMP陳述句就是驗證PE檔案最后一個資料是否為零

再給出這張圖,希望加深大家對熊貓燒香的了解,這系列文章寫得不容易,您的點贊、評論、收藏將是對我最大的支持,感恩安全路上一路前行,如果有寫得不好或侵權的地方,可以聯系我洗掉,基礎性文章,希望對您有所幫助,作者目的是與安全人共同進步,加油~

在這里插入圖片描述


學安全一年,認識了很多安全大佬和朋友,希望大家一起進步,這篇文章中如果存在一些不足,還請海涵,作者作為網路安全和系統安全初學者的慢慢成長路吧!希望未來能更透徹撰寫相關文章,同時非常感謝參考文獻中的安全大佬們的文章分享,深知自己很菜,得努力前行,編程沒有捷徑,逆向也沒有捷徑,它們都是搬磚活,少琢磨技巧,干就對了,什么時候你把攻擊對手按在地上摩擦,你就贏了,也會慢慢形成了自己的安全經驗和技巧,加油吧,少年希望這個路線對你有所幫助,共勉,

2020年8月18新開的“娜璋AI安全之家”,主要圍繞Python大資料分析、網路空間安全、人工智能、Web滲透及攻防技術進行講解,同時分享CCF、SCI、南核北核論文的演算法實作,娜璋之家會更加系統,并重構作者的所有文章,從零講解Python和安全,寫了近十年文章,真心想把自己所學所感所做分享出來,還請各位多多指教,真誠邀請您的關注!謝謝,

(By:Eastmount 2020-12-19 星期六 下午6點寫于武漢 http://blog.csdn.net/eastmount/ )


參考文獻:
姜曄老師真的非常佩服和值得去學習,包括他蘇寧到卡巴斯基的故事,推薦大家去閱讀,也希望自己和大家的技術能不斷提升,加油!
[1] 姜曄老師技術分享 - B站
[2] 姜曄老師的技術空間目錄 - CSDN
[3] [網路安全自學篇] 木馬原理詳解、遠程服務器IPC $漏洞及木馬植入實驗
[4] 騰訊安全聯合實驗室 - 知乎文章
[5] [網路安全自學篇] 七十九.Windows PE病毒原理、分類及感染方式詳解
[6] [網路安全自學篇] 四十九.Procmon軟體基本用法及檔案行程、注冊表查看
[7] [安全攻防進階篇] 八.那些年的熊貓燒香及PE病毒行為機理分析
[8] [網路安全自學篇] 七十三.WannaCry勒索病毒復現及分析(四)蠕蟲傳播機制原始碼詳解
[9] https://blog.csdn.net/ioio_jy/article/details/41207265

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/238540.html

標籤:java

上一篇:《因果科學周刊》第6期:領域自適應

下一篇:Mysql - 百萬級資料查詢優化筆記 (PHP Script) ②

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more