一簡單crackme的簡單分析
一簡單crackme的簡單分析
在一個論壇上看到的,閒來無事就順手玩了玩。 跟蹤知註冊碼需為8位,緊接著到關鍵部分: 00445112 > \BA 16FD2D01 mov edx, 12DFD16 00445117 . 8BC6 mov eax, esi 00445119 . 85C0 test eax, eax 0044511B . 7E 1B jle short 00445138 0044511D . BE 01000000 mov esi, 1 00445122 > 8B4D FC mov ecx, [ebp-4] 00445125 . 8A4C31 FF mov cl, [ecx+esi-1] //取用戶名的一位 00445129 . 80F1 CA xor cl, 0CA //與0ca異或 0044512C . 81E1 FF000000 and ecx, 0FF //ecx前三位情零 00445132 . 03D1 add edx, ecx //累加 00445134 . 46 inc esi 00445135 . 48 dec eax 00445136 .^ 75 EA jnz short 00445122 00445138 > 81F2 26117919 xor edx, 19840808 //累加結果與19840808異或 0044513E . 3B55 F4 cmp edx, [ebp-C] //與註冊碼比較 算法總結:去用戶名每位與0ca疑惑後與12df016累加,結果與19840808異或. 註冊機源碼: #include "stdio.h" #include "math.h" #include "conio.h" void main() { char na[80]; int na_len; int i=0; signed char di; unsigned long cs1=0x12DFD16; unsigned long cs2=0x19840808; unsigned long cs3=0x0CA ; char cs4=11; printf("please input your name:"); gets(na); na_len=strlen(na); for(i=0;i<na_len;i++) { na=na^cs3; cs1+=na&0x0ff; } cs2=cs1^cs2; printf("\nYour serial is %lx",cs2); printf("\n\n\nMade By eLance"); getch(); } |
所有時間均為台北時間。現在的時間是 07:31 PM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *