[安全攻防进阶篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加壳判断
前文作者講解了OllyDbg和在線沙箱的逆向分析過(guò)程,分享了惡意軟件如何通過(guò)宏腳本發(fā)送勒索信息或密碼至用戶郵箱。這篇文件將帶領(lǐng)大家逆向分析兩個(gè)CrackMe程序,包括逆向分析和源碼還原,基礎(chǔ)性文章,希望對(duì)您有所幫助。技術(shù)路上哪有享樂(lè),為了提升安全能力,別抱怨,干就對(duì)了,
從2019年7月開(kāi)始,我來(lái)到了一個(gè)陌生的專業(yè)——網(wǎng)絡(luò)空間安全。初入安全領(lǐng)域,是非常痛苦和難受的,要學(xué)的東西太多、涉及面太廣,但好在自己通過(guò)分享100篇“網(wǎng)絡(luò)安全自學(xué)”系列文章,艱難前行著。感恩這一年相識(shí)、相知、相趣的安全大佬和朋友們,如果寫得不好或不足之處,還請(qǐng)大家海涵!
接下來(lái)我將開(kāi)啟新的安全系列,叫“安全攻防進(jìn)階篇”,也是免費(fèi)的100篇文章,作者將更加深入的去研究惡意樣本分析、逆向分析、內(nèi)網(wǎng)滲透、網(wǎng)絡(luò)攻防實(shí)戰(zhàn)等,也將通過(guò)在線筆記和實(shí)踐操作的形式分享與博友們學(xué)習(xí),希望能與您一起進(jìn)步,加油~
- 推薦前文:網(wǎng)絡(luò)安全自學(xué)篇系列-100篇
話不多說(shuō),讓我們開(kāi)始新的征程吧!您的點(diǎn)贊、評(píng)論、收藏將是對(duì)我最大的支持,感恩安全路上一路前行,如果有寫得不好或侵權(quán)的地方,可以聯(lián)系我刪除。基礎(chǔ)性文章,希望對(duì)您有所幫助,作者目的是與安全人共同進(jìn)步,也強(qiáng)烈推薦大家去看看錢老師的視頻,加油~
文章目錄
- 一.OllyDbg基礎(chǔ)用法
- 二.CrackMe01
- 1.題目描述
- 2.逆向分析
- 3.原理分享及序列號(hào)提取
- 三.CrackMe02
- 1.題目描述
- 2.逆向分析
- 3.原理分享及序列號(hào)提取
- 四.總結(jié)
作者的github資源:
軟件安全:https://github.com/eastmountyxz/Software-Security-Course
其他工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
Windows-Hacker:https://github.com/eastmountyxz/Windows-Hacker-Exp
聲明:本人堅(jiān)決反對(duì)利用教學(xué)方法進(jìn)行犯罪的行為,一切犯罪行為必將受到嚴(yán)懲,綠色網(wǎng)絡(luò)需要我們共同維護(hù),更推薦大家了解它們背后的原理,更好地進(jìn)行防護(hù)。(參考文獻(xiàn)見(jiàn)后)
前文回顧:
[安全攻防進(jìn)階篇] 一.什么是逆向分析、逆向分析應(yīng)用及經(jīng)典掃雷游戲逆向
[安全攻防進(jìn)階篇] 二.如何學(xué)好逆向分析、逆向路線推薦及呂布傳游戲逆向案例
[安全攻防進(jìn)階篇] 三.OllyDbg和Cheat Engine工具逆向分析植物大戰(zhàn)僵尸游戲
[安全攻防進(jìn)階篇] 四.逆向分析之條件語(yǔ)句和循環(huán)語(yǔ)句源碼還原及流程控制逆向
[安全攻防進(jìn)階篇] 五.逆向分析之Win32 API獲取及加解密目錄文件、OllyDbg逆向其原理
一.OllyDbg基礎(chǔ)用法
OllyDbg是一個(gè)新的動(dòng)態(tài)追蹤工具,將IDA與SoftICE結(jié)合起來(lái)的思想,Ring 3級(jí)調(diào)試器,非常容易上手,是當(dāng)今最為流行的調(diào)試解密工具之一。它還支持插件擴(kuò)展功能,是目前最強(qiáng)大的調(diào)試工具之一。
OllyDbg打開(kāi)如下圖所示,包括反匯編窗口、寄存器窗口、信息窗口、數(shù)據(jù)窗口、堆棧窗口。
- 反匯編窗口:顯示被調(diào)試程序的反匯編代碼,包括地址、HEX數(shù)據(jù)、反匯編、注釋
- 寄存器窗口:顯示當(dāng)前所選線程的CPU寄存器內(nèi)容,點(diǎn)擊標(biāo)簽可切換顯示寄存器的方式
- 信息窗口:顯示反匯編窗口中選中的第一個(gè)命令的參數(shù)及跳轉(zhuǎn)目標(biāo)地址、字符等
- 數(shù)據(jù)窗口:顯示內(nèi)存或文件的內(nèi)容,右鍵菜單可切換顯示方式
- 堆棧窗口:顯示當(dāng)前線程的堆棧
下圖是打開(kāi)EXE后顯示的界面。
下面簡(jiǎn)單講解常用的快捷鍵調(diào)試方式。
F2
設(shè)置斷點(diǎn),如下圖所示的紅色位置,程序運(yùn)行到此處會(huì)暫停,再按一次F2鍵會(huì)刪除斷點(diǎn)。
F9
按下這個(gè)鍵運(yùn)行程序,如果沒(méi)有設(shè)置相應(yīng)的點(diǎn),被調(diào)試的程序直接開(kāi)始運(yùn)行。
F8
單步步過(guò),每按一次這個(gè)按鍵,將執(zhí)行反匯編窗口中的一條指令,遇到CALL等子程序不進(jìn)入其代碼。
F7
單步步入,功能通單步步過(guò)(F8)類似,區(qū)別是遇到CALL等子程序時(shí)會(huì)進(jìn)入其中,進(jìn)入后首先停留在子程序的第一條指令上。如下圖進(jìn)入CALL子程序。
F4
運(yùn)行到選定位置,即運(yùn)行到光標(biāo)所在位置處暫停。
CTRL+F9
執(zhí)行到返回,按下此鍵會(huì)執(zhí)行到一個(gè)返回指令時(shí)暫停,常用于從系統(tǒng)領(lǐng)空返回到我們調(diào)試的程序領(lǐng)空。
ALT+F9
執(zhí)行到用戶代碼,從系統(tǒng)領(lǐng)空快速返回我們調(diào)試的程序領(lǐng)空。
OllyDbg動(dòng)態(tài)分析的基本流程如下:
- 通常拿到一個(gè)軟件先試著運(yùn)行軟件,如果有幫助文檔查閱幫助文檔,熟悉軟件的基本用法,接著嘗試輸入錯(cuò)誤的注冊(cè)碼,觀察錯(cuò)誤提示。
- 如果沒(méi)有輸入注冊(cè)碼的地方,要考慮是否是讀取注冊(cè)表或Key文件(程序讀取一個(gè)文件中的內(nèi)容判斷是否注冊(cè)),這些可以用其他工具來(lái)輔助分析。
- 如果都不是,原程序只是一個(gè)功能不全的試用版,那要注冊(cè)為正式版需要手動(dòng)寫代碼完善。
- 如果需要輸入注冊(cè)碼,如上圖所示,則調(diào)用查殼軟件檢查程序是否加殼(如PeiD、FI),有殼的需要脫殼之后再調(diào)用OllyDbg分析調(diào)試,無(wú)殼的直接調(diào)用工具調(diào)試。
二.CrackMe01
題目: 第1題是Acid_burn
1.題目描述
首先打開(kāi)軟件提示如下信息,然后主頁(yè)面包括三個(gè)核心按鈕,一個(gè)是“序列號(hào)+用戶名”,一個(gè)是退出按鈕,另一個(gè)是“序列號(hào)”。
主界面如下圖所示,我們點(diǎn)擊“Serial / Name”按鈕。
顯示如下圖所示,隨機(jī)輸入用戶名和序列號(hào)后點(diǎn)擊“Check it Baby!”按鈕。
它會(huì)提示你輸入錯(cuò)誤的信息,即“Sorry,The serial is incorect!”
接著點(diǎn)擊“I give Up!!!”退回主界面,點(diǎn)擊“Serial”按鈕。
輸入序列號(hào)點(diǎn)擊“Check it Baby!”,顯示如下圖所示對(duì)話框“Try Again!!”。
2.逆向分析
第一步,調(diào)用PEiD或Exeinfo PE工具進(jìn)行查殼。
顯示結(jié)果沒(méi)有殼,采用Dephi 3.0編寫。
第二步,通過(guò)OD打開(kāi)軟件,模塊入口地址是0x0042FD68。
按下F9運(yùn)行程序,彈出第一個(gè)歡迎界面。
點(diǎn)擊“確定”后會(huì)彈出程序的主界面,如下圖所示。
第三步,查找失敗提示的關(guān)鍵詞“Sorry”。
在彈出的主頁(yè)面中點(diǎn)擊“Serial / Name”按鈕,然后隨機(jī)輸入信息后會(huì)提示錯(cuò)誤信息,這里記住關(guān)鍵詞“Sorry”。
然后,在反匯編窗口右鍵鼠標(biāo),選擇“查找”->“所有參考文本字串”。
彈出如下圖所示的對(duì)話框,我們看到了非常多的信息,其中有一條是“Good job dude =)”。
第四步,選中指定字符串右鍵鼠標(biāo),點(diǎn)擊“反匯編窗口中跟隨”,或者直接雙擊該行去到指定匯編窗口。
如果字符串較多,可以右鍵選擇“查找文本”,輸入“Good”定位字符串的位置。
接著定位到如下圖所示位置。
第五步,在JNZ跳轉(zhuǎn)處按下F2增加斷點(diǎn),地址為0x0042FB03。
- JNZ : jump if not zero 結(jié)果不為零則轉(zhuǎn)移
第六步,繼續(xù)在反匯編窗口右鍵鼠標(biāo),選擇“查找”->“所有參考文本字串”,接著定位關(guān)鍵字符串“Try Again”然后在反匯編窗口中跟隨。
找到JGE跳轉(zhuǎn)處按下F2添加斷點(diǎn),地址為0x0042FA5A。
- JGE: 大于或等于轉(zhuǎn)移指令
接著回到EXE可執(zhí)行程序,當(dāng)我們輸入序列號(hào)和用戶名后,點(diǎn)擊“Sorry”提示,并且此時(shí)程序自動(dòng)跳到斷點(diǎn)處,如下圖所示:
此時(shí)包括兩個(gè)斷點(diǎn)。
第七步,按下F8進(jìn)行單步步過(guò)調(diào)試,注意CALL函數(shù)不進(jìn)入,一直運(yùn)行到下一個(gè)斷點(diǎn)0x0042FB03處。
第七步,選中該行右鍵“二進(jìn)制”->“用NOP填充”。
顯示如下圖所示:
第八步,繼續(xù)按下F8單步步過(guò)調(diào)試,當(dāng)執(zhí)行到0x0042FB18位置,會(huì)CALL函數(shù)然后彈出“Good job dude =)”對(duì)話框,成功實(shí)現(xiàn)繞過(guò)。
第九步,按下F9運(yùn)行程序,然后會(huì)停到0x0042FA5A斷點(diǎn)處,繼續(xù)按下F9運(yùn)行程序就會(huì)提示成功的對(duì)話框。
第十步,同樣的方法查找第二個(gè)對(duì)話框的關(guān)鍵信息,然后在0x0042F4D5處增加斷點(diǎn)。
按下F2增加斷點(diǎn)。
第十一步,我們點(diǎn)擊“Serial”按鈕,然后在彈出的對(duì)話框中點(diǎn)擊“Check it Baby!”按鈕后,會(huì)自動(dòng)定位到0x0042F4D5跳轉(zhuǎn)位置。
第十二步,右鍵“二進(jìn)制”->“用NOP填充”,接著F8單步步過(guò)調(diào)試。
最終成功逆向該程序。
第十三步,保存修改后的可執(zhí)行文件。
右鍵選擇“復(fù)制到可執(zhí)行文件”->“所有修改”按鈕。
在彈出的窗口中選擇“全部復(fù)制”。
在彈出的窗口中選擇右鍵“保存文件”,重命名保存即可。
最終效果如下圖所示,只要點(diǎn)擊按鈕就提示你成功!
3.原理分享及序列號(hào)提取
前面我們成功繞過(guò)序列號(hào)和用戶名的判斷,下面我們簡(jiǎn)單還原其原理和獲取序列號(hào)。先分析第一個(gè)對(duì)話框。
首先,我們通過(guò)“Good Job”定位關(guān)鍵位置,在0x0042F4D5處添加斷點(diǎn),JNZ跳轉(zhuǎn)前面的CALL函數(shù)非常重要,并且該函數(shù)是根據(jù)EAX和EDX結(jié)果執(zhí)行,所以我們需要在CALL函數(shù)處再增加一個(gè)斷點(diǎn),從而獲取對(duì)應(yīng)的值。
第二步,按下F9運(yùn)行程序然后點(diǎn)擊對(duì)話框會(huì)停止在斷點(diǎn)處,對(duì)應(yīng)的EDX值為“Hello Dude!”,顯然第一個(gè)序列號(hào)與這個(gè)固定的硬編碼“Hello Dude!”比較。
- 第一個(gè)序列號(hào):Hello Dude!
第三步,我們按下F7進(jìn)入CALL函數(shù),進(jìn)一步驗(yàn)證該值,發(fā)現(xiàn)它CMP比較的正是我們輸入的值是否等于“Hello Dude!”,自此判斷成功。
第四步,CALL函數(shù)發(fā)現(xiàn)輸入序列號(hào)不正確會(huì)JNZ直接跳轉(zhuǎn)到PUSH 0處,然后彈出錯(cuò)誤的對(duì)話框。
輸入正確的值會(huì)提示正確對(duì)話框。
接著我們繼續(xù)分析第二個(gè)對(duì)話框的原理。
第五步,通過(guò)字符串跟隨在0x0042FAFE和0x0042FB03位置增加斷點(diǎn),分別是CALL函數(shù)的JNZ跳轉(zhuǎn)執(zhí)行錯(cuò)誤對(duì)話框。
第六步,可以看到EAX存儲(chǔ)的值為“CV-6560-CRACKED”時(shí)彈出“Good job”的對(duì)話框。
F7進(jìn)入CALL函數(shù)可以看到它判斷的過(guò)程。
但如果你只輸入序列號(hào),用戶名沒(méi)有驗(yàn)證,也會(huì)有錯(cuò)誤的提示信息,而且這個(gè)序列號(hào)真的是固定的嗎?
第七步,接著我們繼續(xù)往前分析用戶名的構(gòu)成過(guò)程,用戶名首先要求長(zhǎng)度必須大于等于4,否則不執(zhí)行JGE跳轉(zhuǎn)并彈出錯(cuò)誤提示。
- JGE: 大于或等于轉(zhuǎn)移指令
第八步,接著分析用戶名第一位值,乘以0x29,再乘以2。
假設(shè)結(jié)果為16BE,也就是十進(jìn)制的5822,接著將計(jì)算的結(jié)果轉(zhuǎn)為字符串;然后和實(shí)現(xiàn)準(zhǔn)備好的字符串進(jìn)行拼接,結(jié)果為:CW-5658-CRACKED。
注意,這個(gè)序列號(hào)是根據(jù)用戶名動(dòng)態(tài)生成的,變化的。
下面我們按下F8進(jìn)行單步步過(guò)調(diào)試。
下圖是獲取第一個(gè)值和第二個(gè)值的代碼。
核心匯編代碼如下,建議大家在0x0042F9C8位置下斷點(diǎn),多調(diào)試觀察寄存器值變化。
/* 用戶名第一位:左移0x3位再減去原來(lái)的值 */ 0042F9EB |. 0FB600 MOVZX EAX,BYTE PTR DS:[EAX] 0042F9EE |. 8BF0 MOV ESI,EAX 0042F9F0 |. C1E6 03 SHL ESI,3 0042F9F3 |. 2BF0 SUB ESI,EAXusername1 = username[0]; result1 = (username1 << 0x3) - username1; /* 用戶名第二位:左移4位再加上原來(lái)的結(jié)果 */ 0042FA06 |. 0FB640 01 MOVZX EAX,BYTE PTR DS:[EAX+1] 0042FA0A |. C1E0 04 SHL EAX,4 0042FA0D |. 03F0 ADD ESI,EAXusername2 = username[1]; result1 = (username1 << 0x4) + result1;/* 用戶名第四位:乘以0xB */ 0042FA26 |. 0FB640 03 MOVZX EAX,BYTE PTR DS:[EAX+3] 0042FA2A |. 6BF0 0B IMUL ESI,EAX,0Busername4 = username[3]; result2 = username4 * 0xB; /* 用戶名第三位:乘以0xE在加上第四位的結(jié)果 */ 0042FA3E |. 0FB640 02 MOVZX EAX,BYTE PTR DS:[EAX+2] 0042FA42 |. 6BC0 0E IMUL EAX,EAX,0E 0042FA45 |. 03F0 ADD ESI,EAXusername3 = username[2]; result2 = (username3 * 0xE) + result2;/* 再次計(jì)算第一位 乘以0x29再乘以2 */ 0042FA8A |. 0FB600 MOVZX EAX,BYTE PTR DS:[EAX] 0042FA8D |. F72D 50174300 IMUL DWORD PTR DS:[431750] 0042FA93 |. A3 50174300 MOV DWORD PTR DS:[431750],EAX 0042FA98 |. A1 50174300 MOV EAX,DWORD PTR DS:[431750] 0042FA9D |. 0105 50174300 ADD DWORD PTR DS:[431750],EAXresult3 = username1 * 0x29 * 2;/* 將result3轉(zhuǎn)為ASCII 并拼接密鑰 */ sprintf(key, "%s-%d-%s", key1, result3, key2);最終運(yùn)行效果如下圖所示:
- Eastmount
- CW-5658-CRACKED
最后給出鬼手56師傅的C語(yǔ)言代碼,非常推薦大家去閱讀這位大佬在CSDN和看雪的文章。
#include<stdio.h> #include <stdlib.h> #include <windows.h> int main() {//密碼char key1[3] = "CW";char key2[8] = "CRACKED";//輸入用戶名char username[10] = { 0 };printf("請(qǐng)輸入用戶名 長(zhǎng)度必須大于等于4:");scanf_s("%s", username, 10);//判斷長(zhǎng)度if (strlen(username) < 4){printf("長(zhǎng)度必須大于等于4,請(qǐng)重新輸入\n");}//根據(jù)用戶名生成密碼//計(jì)算用戶名的第一位int username1 = username[0];int result1 = (username1 << 0x3) - username1; //左移0x3位再減去原來(lái)的值//計(jì)算用戶名第二位int username2 = username[1];result1 = (username1 << 0x4) + result1; //左移4位再加上原來(lái)的結(jié)果//計(jì)算用戶名的第四位int username4 = username[3];int result2 = username4 * 0xB; //乘以0xB//計(jì)算用戶名的第三位int username3 = username[2];result2 = (username3 * 0xE) + result2; //乘以0xE在加上第四位的結(jié)果//再次計(jì)算第一位int result3 = username1 * 0x29 * 2; //乘以0x29再乘以2//將result3轉(zhuǎn)為ASCII 并拼接密鑰char key[50] = { 0 };sprintf(key, "%s-%d-%s", key1, result3, key2);//打印keyprintf("密鑰為:%s\n", key);system("pause");return 0; }三.CrackMe02
題目: Afkayas.1.Exe
1.題目描述
首先打開(kāi)軟件如下所示,需要輸入用戶名和序列號(hào)然后注冊(cè)。
隨機(jī)輸入名字和序列號(hào)后點(diǎn)擊“OK”按鈕后,它會(huì)提示你輸入錯(cuò)誤的信息,即“Try Again”。
2.逆向分析
第一步,通過(guò)PEiD軟件分析是無(wú)殼,VB編寫的。
第二步,用OD打開(kāi)可執(zhí)行文件,定位起始地址是0x00401124。
第三步,右鍵“查找”->“所有參考文本字符”。
第四步,雙擊“You Get It”去到反匯編窗口位置。
第五步,在JE跳轉(zhuǎn)處按下F2增加一個(gè)斷點(diǎn)。
第六步,然后運(yùn)行程序會(huì)彈出對(duì)話框,輸入下圖所示的用戶名和序列號(hào)。
第七步,然后點(diǎn)擊“OK”會(huì)停在斷點(diǎn)0x0040258B位置,右鍵“二進(jìn)制”->“用NOP填充”。
第八步,接著F9運(yùn)行程序發(fā)現(xiàn)成功跳轉(zhuǎn)到“Get it”對(duì)話框。
第九步,右鍵“復(fù)制到可執(zhí)行文件”->“所有修改”,然后保存文件即可。
第十步,當(dāng)我們?cè)俅未蜷_(kāi)程序時(shí),隨機(jī)輸入字符點(diǎn)擊“OK”就會(huì)提示成功。
3.原理分享及序列號(hào)提取
第一步,OD重新打開(kāi)程序然后隨機(jī)輸入用戶名和序列號(hào)。
第二步,右鍵“反匯編窗口中跟隨”,然后可以看到JE跳轉(zhuǎn)到了我們的錯(cuò)誤提示未知,F2增加斷點(diǎn)。
可以看到正是JE跳轉(zhuǎn)直接讓其輸入錯(cuò)誤信息,說(shuō)明前面就是對(duì)輸入用戶名和序列號(hào)的判斷。重點(diǎn)分析全面部分的代碼。
第三步,右鍵“查找”->“當(dāng)前模塊中的名稱”。
注意到VB字符串比較函數(shù)vbaStrCmp,我們?cè)黾訑帱c(diǎn)。
右鍵“在每個(gè)參考上設(shè)置斷點(diǎn)”進(jìn)行設(shè)置。
第四步,F9運(yùn)行并點(diǎn)擊“確定”,在斷點(diǎn)位置發(fā)現(xiàn)下面不遠(yuǎn)處就有關(guān)鍵字符串“You Get Wrong”。
但右上角泄露了注冊(cè)碼信息,即為“AKA-877848”。
簡(jiǎn)單驗(yàn)證下發(fā)現(xiàn)成功。
第五步,重新運(yùn)行代碼,在0x00402403和0x0040242D增加斷點(diǎn),閱讀匯編源碼,進(jìn)行相應(yīng)還原。
- 計(jì)算用戶名的長(zhǎng)度
- 將用戶名長(zhǎng)度乘以0x17CFB得到結(jié)果,如果溢出則跳轉(zhuǎn)
- 將結(jié)果再加上用戶名的第一個(gè)字符的ASCII
- 結(jié)果轉(zhuǎn)為十進(jìn)制
- 結(jié)果和AKA進(jìn)行拼接,得到最后的序列號(hào)
最后同樣給出鬼手師傅的還原代碼。
#include<stdio.h> #include <stdlib.h> #include <windows.h> int main() {//密碼char key1[4] = "AKA";//輸入用戶名char username[10] = { 0 };printf("請(qǐng)輸入用戶名:");scanf_s("%s", username, 10);//1\. 取長(zhǎng)度int iUsernameLen = strlen(username);//2\. 將用戶名長(zhǎng)度乘以0x17CFB 得到結(jié)果int result = iUsernameLen * 0x17CFB;//3\. 將結(jié)果再加上用戶名的第一個(gè)字符的ASCIIresult = result + username[0];//4\. 將結(jié)果轉(zhuǎn)為十進(jìn)制 此步驟省略//5\. 拼接序列號(hào)char key[MAX_PATH] = { 0 };sprintf(key, "%s-%d", key1, result);//打印序列號(hào)printf("生成的序列號(hào)為:%s\n", key);system("pause");return 0; }四.總結(jié)
寫到這里,這篇文章就介紹完畢,希望對(duì)您有所幫助,最后進(jìn)行簡(jiǎn)單的總結(jié)下。
- OllyDbg基礎(chǔ)用法
- CrackMe01逆向分析及原理分享
- CrackMe02逆向分析及原理分享
學(xué)安全一年,認(rèn)識(shí)了很多安全大佬和朋友,希望大家一起進(jìn)步。這篇文章中如果存在一些不足,還請(qǐng)海涵。作者作為網(wǎng)絡(luò)安全初學(xué)者的慢慢成長(zhǎng)路吧!希望未來(lái)能更透徹撰寫相關(guān)文章。同時(shí)非常感謝參考文獻(xiàn)中的安全大佬們的文章分享,深知自己很菜,得努力前行。
有點(diǎn)想家和女神了!月是故鄉(xiāng)圓啊~接著加油。
2020年8月18新開(kāi)的“娜璋AI安全之家”,主要圍繞Python大數(shù)據(jù)分析、網(wǎng)絡(luò)空間安全、人工智能、Web滲透及攻防技術(shù)進(jìn)行講解,同時(shí)分享CCF、SCI、南核北核論文的算法實(shí)現(xiàn)。娜璋之家會(huì)更加系統(tǒng),并重構(gòu)作者的所有文章,從零講解Python和安全,寫了近十年文章,真心想把自己所學(xué)所感所做分享出來(lái),還請(qǐng)各位多多指教,真誠(chéng)邀請(qǐng)您的關(guān)注!謝謝。
參考文獻(xiàn):
非常推薦鬼手大佬的文章,還有一個(gè)是姜曄老師。
[1] 鬼手56大神的CrackMe系列文章
[2] https://www.bilibili.com/video/BV1z7411j7R1?p=2
總結(jié)
以上是生活随笔為你收集整理的[安全攻防进阶篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加壳判断的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [安全攻防进阶篇] 四.逆向分析之条件语
- 下一篇: [论文阅读] (03) 清华张超老师 -