拿到程式放入PE裡檢視發現有Aspack殼
用脫殼軟體進行脫殼處理
打開檔案讓我們注冊,随意輸入後如圖所示:
發現彈出一個框,這是很重要的線索,打開od下斷點分析:
随意輸入後到達登入失敗彈出窗附近
通過分析附近的彙編可以發現兩個值不相等時始終跳轉至004012A1
數了一下有十六個,大緻估計可能正确格式是輸入16個字元,在004012A4 下斷點重新啟動程式輸入16個字元,開始分析:
Pass[0]==B,該字元直接與0x42比較,0x42轉換成ASCII再轉換成字元為B
Pass[15]==Y 可以看出将字元存到eax寄存器,然後加上0x42等于0x57,計算和轉換後的值為Y
Pass[1]==Z 這次将值存放到ecx中,然後用lea指令,意思是将ecx中的值減3存到eax中,用0x57減3轉換後為Z,後面大緻相同的計算方式,注意排序方式為從ebp-0x240到ebp-0x231為pass[0]到pass[15]
Pass[14]==A
Pass[2]==9
Pass[13]==b
Pass[3]==d
Pass[12]==7
Pass[4]==m
Pass[11]==G
Pass[5]==q
Pass[10]==9
Pass[6]==4
Pass[9]==g
Pass[7]==c
Pass[8]==8
排序後得出所需字元串為 BZ9dmq4c8g9G7bAY
郵箱輸入格式為 [email protected]
注冊碼為: BZ9dmq4c8g9G7bAY
flag{ BZ9dmq4c8g9G7bAY }