160个Crackme019
生活随笔
收集整理的這篇文章主要介紹了
160个Crackme019
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 查殼
- 分析程序
- 校驗(yàn)結(jié)果
- 寫出注冊機(jī)
查殼
目標(biāo)程序難度一顆星,沒有殼,VC6寫的,終于不再是VB的程序了。VC6的好處就是可以用IDA配合OD調(diào)試了
分析程序
隨便輸入一個(gè)賬號(hào)密碼,根據(jù)字符串提示來到按鈕事件
這個(gè)算法本身并不難,我就直接貼IDA的分析圖了,大家可以根據(jù)我提供的.idb文件動(dòng)態(tài)調(diào)試
程序驗(yàn)證過程如下
到這里整個(gè)程序的校驗(yàn)就完成了,確實(shí)的一顆星的難度
校驗(yàn)結(jié)果
首先來檢查一下結(jié)果是否正確,根據(jù)剛才的分析,直接在比較函數(shù)下斷點(diǎn),拿到正確的密碼
如圖,eax就是正確的密碼,而內(nèi)存窗口是我們輸入的錯(cuò)誤的序列號(hào)和密碼,輸入結(jié)果
提示正確,校驗(yàn)完成
寫出注冊機(jī)
這個(gè)程序的注冊機(jī)也是可以輕松完成的
這一段直接拷下來就是現(xiàn)成的注冊機(jī)了,哈哈,有IDA就是快,能省很多事,如果這個(gè)程序的VB寫的,那注冊機(jī)得自己慢慢逆推了,代碼如下:
int CalcKey() {int result = 0x81276345;char username[20] = { 0 };printf("請輸入用戶名:");scanf_s("%s", username, 20);int UserNameLen = strlen(username);if (UserNameLen <5){printf("用戶名長度最少為五位");return 0;}for (int i = 0; i < UserNameLen; i++){result += username[i];result ^= i << 8;result *= ~(i * UserNameLen) * (i + 1);}printf("%d\n", result);return 0; }隨便輸入一個(gè)用戶名,校驗(yàn)通過,破解完成
需要相關(guān)文件的可以到我的Github下載:https://github.com/TonyChen56/160-Crackme
總結(jié)
以上是生活随笔為你收集整理的160个Crackme019的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双机调试环境搭建
- 下一篇: 160个Crackme020之无OD爆破