首先運作程式觀察程式的提示資訊 可以看到程式首先

一個字元串提示 随便輸一個 ,出現另一個字元串u r wrong
然後
OD載入程式,字元串查找
看到提示的字元串,單擊進入f2 下段點,運作程式,斷在
單步 跟下來
讀取字元函數getch() 随便輸入一個假碼,
eax 的值正是輸入的假碼ascii的碼,可以看出這是一個存儲的過程
繼續單步向下
輸出函數printf
向上 跳了回去 這是一個輸入的過程 沒有不是關鍵的比較算法,直接在下一句,下斷直接 運作過去
這個比較 多次調試,可以發現這是一個字元長度的比較 然後 看來這個注冊碼的長度是17位
這塊就能看出這個程式的算法,很簡單就是在12feb4位址開始每個四個位元組,讀取一個數,在後面字元串swfxc{gdv}fwfctslydRddoepsckaNDMSRITPNsmr1_=2cdsef66246087138
中以上面位址的數為下标檢索字元串
剩下的寫python腳本
跑出來感覺有點不對,放到程式裡運作一個果然不對 ,
重新載入OD ,運作,之前的算法确實是的
向後才發現還有比較 跟蹤一下位址發現這個字元是在我們輸入的字元之後
看來這後面還有一些字元,
根據比較,可以看出來剩下的幾個字元就是那幾個ascii碼,就是1024}
到此就搞定了