史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   Hacker/Cracker 及加解密技術文件 (http://forum.slime.com.tw/f132.html)
-   -   一簡單crackme的簡單分析 (http://forum.slime.com.tw/thread182764.html)

psac 2006-08-11 02:49 PM

一簡單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.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1