0day安全:軟件漏洞分析技術(第二版) 例子一

?書中摘抄的代碼如下,編譯后的EXE文件,實現(xiàn)了簡單的密碼校驗的功能。此次實驗的目的,是按照書中的描述,修改EXE文件,使輸入非匹配的密碼可以通過驗證。


#include <stdio.h>

#include <string.h>


#define PASSWORD "1234567"

int verify_password (char *password)

{???????????

????int authenticated;

????authenticated=strcmp(password,PASSWORD);

????return authenticated;

}

main()

{???????????

????int valid_flag=0;

????char password[1024];

????while(1)

????{

????????printf("please input password:???????");

????????scanf("%s",password);

????????valid_flag = verify_password(password);

????????if(valid_flag)????????????????

????????{

????????????printf("incorrect password!\n\n");

????????}else

????????{

????????????printf("Congratulation! You have passed the verification!\n");

????????????break;

????????}

????}

}

使用Dev-C++ 5.11進行編譯,編譯的時候選擇32位程序發(fā)布,編譯生成文件0day_test1.exe:


圖一


該程序運行效果如下:


圖二

使用IDA靜態(tài)反編譯工具打開該EXE文件,找到匹配PASSWORD的判斷分支指令,嘗試修改EXE的代碼邏輯為:PASSWORD匹配失敗跳轉(zhuǎn)到原來的密碼比較成功邏輯分支,實現(xiàn)輸入非匹配密碼可以通過驗證。


圖三


在該指令上按空格切換命令界面,獲取該指令的VA地址


圖四

得到該指令的VA地址在.text段的00401578,可以看到得到的VA地址和原書中描述的地址并不一樣。

.text:00401578?????????????????jz??????short loc_401588

關掉VA,使用管理員權限打開ollydbg,打開0day_test1.exe:

然后使用CTRL+G直接跳轉(zhuǎn)到上述的VA地址


圖五

雙擊該指令,將原本的“JE SHORT 00401588”改成“JNE SHORT 00401588”


圖六

可以看到指令已經(jīng)被改:


圖七

目前被被改的僅僅是內(nèi)存中的指令,需要寫到EXE文件中。書中使用原始的方式在EXE文件中找到指令并修改,由于ollydbg有現(xiàn)成的功能實現(xiàn)這個功能。

單擊該指令,右鍵--Edit--Copy to executable


圖八

彈出窗口提醒保存文件,確認OK。然后從窗口選擇保存文件


圖九


圖十


運行破解的EXE文件,可以發(fā)現(xiàn)輸入錯誤密碼可以通過認證。


圖十一

上面使用ollydbg實現(xiàn)PE文件(EXE文件)的格式修改,下面實驗手工查找PE文件中的執(zhí)行指令。

使用PE Explorer打開PE文件


圖十二


EXE文件的代碼段.text段,內(nèi)存裝載基地址(Image Base)=00401000

指令的虛擬內(nèi)存地址(VA)=00401578

.text段文件中偏移地址 =?00000400?

計算指令的文件偏移地址

指令在文件偏移地址=虛擬內(nèi)存地址(VA)- 裝載基址(Image Base)+.text段文件中偏移地址

=00401578-00401000+00000400?

=978

使用WinHex直接跳到指令在文件偏移地址:


圖十三



圖十四

改成:


圖十五

保存文件,并運行:


?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • ELF&PE 文件結構分析 說簡單點,ELF 對應于UNIX 下的文件,而PE 則是Windows 的可執(zhí)行文件,...
    刀背藏身閱讀 13,024評論 1 27
  • 一、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運行的地址不確定 關于...
    SeanCST閱讀 8,133評論 0 27
  • 這個世界從來都不稀罕善良的人,這個世界喜歡強者。不過這也合乎于自然法則,優(yōu)勝劣汰,強者為尊。做一個超級強的人,然后...
    懂提莫閱讀 161評論 1 3
  • 很多人都說25歲之前皮膚好是爹媽給的底子好,25歲之后皮膚好,那是自己護膚做的好。 確實,很多女孩子明明有很好的皮...
    大象Y閱讀 341評論 0 1
  • 關于本篇文章 了解一些 servlet 概念,本編文章只進行一些文章格式修改,文章內(nèi)使用的圖片均來自 Runoob...
    LeeSpringFly閱讀 317評論 1 0

友情鏈接更多精彩內(nèi)容