能夠看到,程序只有讓輸入的地方,沒有確認按鈕什麼的。
在程序左側,寫着 Status: UNREGISTRIERT。git
猜測:github
使用 VB 編寫的程序,沒有殼。算法
使用 OD 載入程序,搜索字符串。函數
能夠看到有不少的很類似的字符串,還有不少個 "REGISTRIERT"。spa
咱們也不知道這是什麼東西,隨便雙擊一個進入代碼。3d
能夠發現,這代碼和 009 和 010 很是相像。
都是先求得輸入的長度,而後創建循環,最後再進行比較。
可是這裏,一個代碼塊有不少的這樣的組合。code
這是爲何呢?
咱們先在比較函數處下斷點。blog
咱們沒有進行任何操做,程序就馬上中斷了。
猜測程序可能使用了定時器。咱們使用 VB Decompiler 加載程序事件
能夠看到有4個定時器。
每一個定時器代碼塊,裏面都是不少個上面那樣的代碼。ip
先分析程序的算法
最後程序將這個字符串和一串字符串相比較,相同就註冊成功。
因爲咱們輸入的序列號最後轉化的字符串是十六進制表示的,因此相比較的字符串也應該是在 0-9,A-F 範圍內的,這樣咱們很容易就肯定了真正的用來比較的字符串:"081 7E 74 7D 7A 7D 7C 7F 82 83 6D 74 74 7A 7F 7E 7B 7C 7D 82 6D 8H 7E 7B 7C"。
因爲最後生成的字符串,是和咱們輸入的序列號的前兩位息息相關的。
前兩位越大,最後每一個字符相對應的也就越大。
前兩位不同,最後每一個數字相對應的也就不同。
根據正確的比較碼,咱們能夠反推出正確的序列號:
74*3032589#**0541238#7412