exe逆向,首先查殼,發現有upx殼,upx -d脫殼,拖進ida
找到主函數
這里可以看到創建了兩個線程,先沿着StartAddress,
一直找到sub_411940,這里有一個問題,當使用f5是,會顯示
這是由於堆棧不平衡導致的,看匯編部分
這里要將 -04改為00
改完后
之后再次f5
找到了加密函數,這是將字符串進行了替換,當字符是大寫字母時,替換為off_418000處-38,小寫則替換后-96
這時回過頭來看第二個線程
這個函數使對字符串的加密是隔一個字加密,也就是在奇數位時加密,偶數位時不變,
看一下數據
寫解密腳本
off_418000 = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm" off_418004 = "TOiZiZtOrYaToUwPnToBsOaOapsyS" flag=''
for i in range(len(off_418004)): if i %2 == 0: flag += off_418004[i] continue
for j,k in enumerate(off_418000): if off_418004[i] == k: if chr(j+38).isupper(): flag += chr(j+38) else: flag += chr(j+96) print flag
得到flag,但最后
在比對時只比對了29位,所以得出的flag少了一位,所以需要再加一位提交。