安全中国首页 > 文章中心 > 加密算法
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

拓思建筑工程资料管理系统 1.1.40注册算法

更新时间:2008-1-31 0:08:12
责任编辑:高远
热 点:

0050C0FD  |.  E8 0287EFFF   call    00404804                         ;  这个call把机器码分成两个部分,每个部分6位
0050C102  |.  FF75 E8       push    dword ptr [ebp-18]               ;  前六位入栈
0050C105  |.  FF75 FC       push    dword ptr [ebp-4]                ;  固定字符串入栈
0050C108  |.  FF75 E4       push    dword ptr [ebp-1C]               ;  后六位入栈
0050C10B  |.  8D45 E0       lea     eax, [ebp-20]
0050C10E  |.  BA 03000000   mov     edx, 3
0050C113  |.  E8 4C85EFFF   call    00404664
0050C118  |>  C745 F0 00000>mov     dword ptr [ebp-10], 0
0050C11F  |.  C745 F4 00000>mov     dword ptr [ebp-C], 0
0050C126  |.  8B45 FC       mov     eax, [ebp-4]
0050C129  |.  E8 7684EFFF   call    004045A4                         ;  计算位数
0050C12E  |.  3B46 4C       cmp     eax, [esi+4C]                    ;  和64H比较
0050C131  |.  7F 0D         jg      short 0050C140
0050C133  |.  8B45 FC       mov     eax, [ebp-4]
0050C136  |.  E8 6984EFFF   call    004045A4
0050C13B  |.  3B46 50       cmp     eax, [esi+50]                    ;  和3H比较
0050C13E  |.  7D 0C         jge     short 0050C14C
0050C140  |>  8BC7          mov     eax, edi
0050C142  |.  E8 9D81EFFF   call    004042E4
0050C147  |.  E9 91000000   jmp     0050C1DD
0050C14C  |>  8B45 E0       mov     eax, [ebp-20]                    ;  原来上面搞这么多是为了连接那三个字符串
0050C14F  |.  E8 5084EFFF   call    004045A4                         ;  又计算位数
0050C154  |.  8BD8          mov     ebx, eax
0050C156  |.  EB 37         jmp     short 0050C18F
0050C158  |> /8B45 F0       /mov     eax, [ebp-10]                   ;  循环一次得到的结果放到eax。第一次为0
0050C15B  |.  8B55 F4       |mov     edx, [ebp-C]
0050C15E  |.  0346 68       |add     eax, [esi+68]                   ;  123456789的16进制,这里是上一次循环的结果和123456789的16进制数相加
0050C161  |.  1356 6C       |adc     edx, [esi+6C]
0050C164  |.  52            |push    edx
0050C165  |.  50            |push    eax
0050C166  |.  8B45 E0       |mov     eax, [ebp-20]
0050C169  |.  0FB64418 FF   |movzx   eax, byte ptr [eax+ebx-1]       ;  从后面逐个取字符的AscII码
0050C16E  |.  50            |push    eax
0050C16F  |.  B8 59040000   |mov     eax, 459                        ;  常量459(1113)
0050C174  |.  5A            |pop     edx
0050C175  |.  8BCA          |mov     ecx, edx
0050C177  |.  33D2          |xor     edx, edx
0050C179  |.  F7F1          |div     ecx                             ;  常量除以刚才取出的字符的ascii码
0050C17B  |.  8BC2          |mov     eax, edx                        ;  余数到eax
0050C17D  |.  33D2          |xor     edx, edx
0050C17F  |.  290424        |sub     [esp], eax                      ;  循环开始时候相加的结果-余数
0050C182  |.  195424 04     |sbb     [esp+4], edx
0050C186  |.  58            |pop     eax                             ;  这里是减后的结果
0050C187  |.  5A            |pop     edx
0050C188  |.  8945 F0       |mov     [ebp-10], eax                   ;  存储相减的结果
0050C18B  |.  8955 F4       |mov     [ebp-C], edx
0050C18E  |.  4B            |dec     ebx                             ;  计数器减1
0050C18F  |>  8B45 E0        mov     eax, [ebp-20]                   ;  字符串继续循环
0050C192  |.  E8 0D84EFFF   |call    004045A4
0050C197  |.  3BD8          |cmp     ebx, eax
0050C199  |.  7F 04         |jg      short 0050C19F
0050C19B  |.  85DB          |test    ebx, ebx
0050C19D  |.^ 7F B9         \jg      short 0050C158
0050C19F  |>  8B5E 60       mov     ebx, [esi+60]
0050C1A2  |.  85DB          test    ebx, ebx
0050C1A4  |.  7F 11         jg      short 0050C1B7
0050C1A6  |.  FF75 F4       push    dword ptr [ebp-C]                ; /Arg2
0050C1A9  |.  FF75 F0       push    dword ptr [ebp-10]               ; |Arg1
0050C1AC  |.  8BD7          mov     edx, edi                         ; |
0050C1AE  |.  33C0          xor     eax, eax                         ; |
0050C1B0  |.  E8 77CEEFFF   call    0040902C                         ; \TSJZ.0040902C
0050C1B5  |.  EB 26         jmp     short 0050C1DD
0050C1B7  |>  FF75 F4       push    dword ptr [ebp-C]                ; /Arg2
0050C1BA  |.  FF75 F0       push    dword ptr [ebp-10]               ; |这里出现的应该是上面循环后得到的结果了932C03DC
0050C1BD  |.  8BD7          mov     edx, edi                         ; |
0050C1BF  |.  8BC3          mov     eax, ebx                         ; |
0050C1C1  |.  E8 66CEEFFF   call    0040902C                         ; \这个call是把上面的结果转成字符串。就是16进制直接转成
0050C1C6  |.  8B07          mov     eax, [edi]                       ;  这个应该是真码了      "0000932C03DC"
0050C1C8  |.  E8 D783EFFF   call    004045A4
0050C1CD  |.  8BC8          mov     ecx, eax
0050C1CF  |.  2B4E 60       sub     ecx, [esi+60]
0050C1D2  |.  8B56 60       mov     edx, [esi+60]
0050C1D5  |.  42            inc     edx
0050C1D6  |.  8BC7          mov     eax, edi
0050C1D8  |.  E8 6786EFFF   call    00404844
0050C1DD  |>  33C0          xor     eax, eax
0050C1DF  |.  5A            pop     edx
0050C1E0  |.  59            pop     ecx
0050C1E1  |.  59            pop     ecx
0050C1E2  |.  64:8910       mov     fs:[eax], edx
0050C1E5  |.  68 07C25000   push    0050C207
0050C1EA  |>  8D45 DC       lea     eax, [ebp-24]
0050C1ED  |.  BA 05000000   mov     edx, 5
0050C1F2  |.  E8 1181EFFF   call    00404308
0050C1F7  |.  8D45 FC       lea     eax, [ebp-4]
0050C1FA  |.  E8 E580EFFF   call    004042E4
0050C1FF  \.  C3            retn

易语言注册机源码:

.版本 2

.程序集 窗口程序集1

.子程序 _按钮1_被单击
.局部变量 jiqima, 文本型
.局部变量 j1, 文本型
.局部变量 j2, 文本型
.局部变量 stringyuan, 文本型
.局部变量 len, 整数型
.局部变量 i, 整数型
.局部变量 stringdao, 文本型
.局部变量 a, 长整数型
.局部变量 b, 长整数型
.局部变量 x, 整数型
.局部变量 eax, 长整数型
.局部变量 yushu, 整数型
.局部变量 code1, 文本型

jiqima = 编辑框1.内容
j1 = 取文本左边 (jiqima, 6)
j2 = 取文本右边 (jiqima, 6)
stringyuan = j1 + “TOPTHINK” + j2
stringdao = 倒转字符串 (stringyuan)
len = 取文本长度 (stringdao)
a = 123456789
b = 1113

.计次循环首 (len, i)
    eax = eax + a
    x = 取代码 (stringdao, i)
    yushu = 1113 % x
    eax = eax - yushu
.计次循环尾 ()

code1 = 取十六进制文本 (eax)
编辑框2.内容 = “0000” + code1


.子程序 倒转字符串, 文本型
.参数 string, 文本型
.局部变量 k, 整数型
.局部变量 RChar, 文本型
.局部变量 LChar, 文本型
.局部变量 WChar, 文本型

.判断循环首 (k < 取文本长度 (string))

    LChar = 取文本左边 (string, 取文本长度 (string) - k)
    RChar = 取文本右边 (LChar, 1)
    k = k + 1
    WChar = WChar + RChar
.判断循环尾 ()
返回 (WChar)

【破解总结】
------------------------------------------------------------------------
1、机器码分成两个部分,前6位和后6位。然后把固定字符串“TOPTHINK”插在中间,如:"00003ATOPTHINKDE67AD"。

2、逐个从后面开始取字符串"00003ATOPTHINKDE67AD"的Ascii码。然后常量1113除以取得的Ascii码值,得到余数。

3、在第一次循环的时候,用输入的假码减去上面得到的余数。得到的数再在循环开始时候加上常量123456789,加后的数将作为下一次循环的初始值。

4、在循环取完那个字符串后最终得到的数,转成16进制后直接转化为字符串,然后前面加上4个0就是真码了。如:"0000932C03DC"

上一页 1 2 

 
相关文章
一日一文章
 
一日一软件
一日一动画