是讀寫屬性
大體意思是:運行時須要輸入命令行參數 --key <內容>
提示錯誤的key
先申請了一個內存空間
命令行參數的比較
爲--key的時候 不跳轉,而後取出第二個命令行參數。比較完不爲 --key 後,要進行下一輪的比較,繼續往下觀察
對另外一個字符串作了個操做 而這個字符串恰好是第二個命令行參數
對字符串(亂碼)作了些操做並輸出猜想是解密函數,有多是輸出正確或者錯誤的提示
觀察對字符串作操做的函數
會對申請的空間作一些操做,能夠下斷點在calloc處,觀察後續 對這個內存的操做
直接寫參數,多個參數以空格間隔
比較命令行參數處設置斷點
除去 --key 比較第二個參數的函數
解密字符串caloc處下斷點,須要它的返回值EAX
循環結束後設置一個斷點,觀察內存變成什麼樣了
點擊運行按鍵 兩條警告後彈出一個選擇調試信息文件(經嘗試選擇原文件自己就能夠了)
比較key的地方
與明文字符串比較的地方
比較完以後對比 EAX的值 跟蹤接下來的流程
解密字符串 F7 進入上邊的 CALL 804853B caloc 後內存窗口跟蹤EAX的值,F9 到函數結束的地方
因此,應該傳入的參數是hello15
比較完長度,比較完每個字符後,返回1
跟蹤接下來的解密 函數F9 到函數結束處的斷點
解密出正確的提示
這個簡單小程序複習了Linux的一些經常使用操做指令,如: 文件的信息 ls -l readelf -h Crackme 文件屬性的修改 chmode 777 Crackme 可執行文件的運行: ./Crackme Linux下IDA 的靜態分析和動態分析方法 因爲這個IDA6.4版本不能直接F5 查看C語言代碼,能夠在Windows下靜態分析完,再到Linux 下進行測試,不過,仍是但願進行直接看彙編代碼。熟能生巧嘛!