日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用angr解二进制题目1

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用angr解二进制题目1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上圖是程序的流程,大概說一下,int main(int argc,char *argv[],char *env[])
先判斷argc是不是2,如果不是直接打印You need to enter the secret key!
如果是2,就一個文件名,和一個secret key字符串。接著調用verify函數來檢查secret key 是否合法。

這是可執行文件的下載地址:http://pan.baidu.com/s/1pLe8hb9

接下來就用angr來符號化執行這個程序,直到有正確的key出現.

angr是一個python的庫,可以去百度下載安裝,很快就可以安裝好

import angrdef main():p = angr.Project("./ais3_crackme")#建立一個工程argv1 = angr.claripy.BVS("argv1",100*8)#設置第二個參數也就是key的為800個字節長,因為開始不知道長度,其實在后面的verify函數里面可以確定是24.inital_state = p.factory.path(args=["./crackme1",argv1])#設置程序執行的初始條件pg = p.factory.path_group(inital_state)#set the inital state#這是執行流對象pg.explore(find=0x400602)#start to run the program直到執行到0x400602的時候結束,0x400602是:mov edi, offset aCorrectThatIsT ; "Correct! that is the secret key!"的地址,執行到這里就代表找到了正確的keyfound = pg.found[0]#返回一個found對象,也就是一條正確的執行路徑solution = found.state.se.any_str(argv1)#提取輸入的keyprint solution[:solution.find('\00')]#去掉后面的0,因為我們假設有800個字節if __name__=="__main__":main()

總結

以上是生活随笔為你收集整理的用angr解二进制题目1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。