打開後也是輸入賬號和序列號來進行判斷的。
在彈框處設置斷點,打開堆棧
從msvbm50可知,這是一個vb寫的程序。右鍵顯示調用
調用爲加斷點的那一行,上邊有一個jmp的跳轉。,應該是無條件跳轉到註冊正確的call那裏。那麼推測會有一個判斷並跳轉到jmp的下一行的指令。向上找果然找到了。
這有一個je指令,當ZF爲1時跳轉。即和上邊的test有關。
單步測試,果然過了test以後ZF變成了1。test爲與運算。
在je之前將ZF改成0,測試成功。
因此把je 這一行NOP掉就可以了。
註冊算法的話,向上找到這段程序的開頭開始逐步分析。
上邊乘了0x17CFB,在這裏有一個溢出跳轉
經過上邊的call以後,出現了“585235”
此時已經出來了輸入的654321.
先得到註冊碼的長度, 然後取出註冊碼第一個字符的ANSI值cName, 讓後計算長度*0x17CFB+cName,將計算的值轉換爲10進制文本,前面加上”AKA-”組成最後的註冊碼。