君子如受吧 关注:110贴子:10,658
  • 6回复贴,共1
Ultra 字符串参考
地址       反汇编                             文本字符串
00402AE3   push 0_38.0041F370                 系统提示  //双击来到这里,往上找段首下
断!
00402AE8   push 0_38.0041F35C                 注册码不能为空!!!
00402B11   push 0_38.0041F350                 已注册
00402880    .  6A FF         push -1  //直接下断
运行,输入假注册码即可看到算法!
0040291A    > /8B4C24 >mov ecx,dword ptr ss:[esp+18] ;  机器码入ecx
0040291E    . |DB4424 >fild dword ptr ss:[esp+1C]    ;  把ESI转化成浮点数
00402922    . |8A5C31 >mov bl,byte ptr ds:[ecx+esi-1>;  取机器码每一位
00402926    . |0FBED3  movsx edx,bl                  ;  取出来放到edx
00402929    . |DD5C24 >fstp qword ptr ss:[esp+24]    ;  转化成ASII存入到edx
0040292D    . |895424 >mov dword ptr ss:[esp+1C],edx ;  edx里面的ASII转移
00402931    . |DB4424 >fild dword ptr ss:[esp+1C]    ;  转化成10进制
00402935    . |0FBEC3  movsx eax,bl                  ;  ASII存入eax
00402938    . |D9FA    fsqrt                         ;  对应ASII的十进制开方
0040293A    . |0FAFC6  imul eax,esi                  ;  eax*esi=eax
0040293D    . |DC4C24 >fmul qword ptr ss:[esp+24]    ;  st*?/?是esi的浮点数值
00402941    . |DC05 60>fadd qword ptr ds:[41A760]    ;  st+1=st(1)



1楼2009-08-23 22:06回复
    00402947    . |0FAFC6  imul eax,esi                  ;  eax*esi=eax
    0040294A    . |894424 >mov dword ptr ss:[esp+1C],eax ;  乘出来的结果转移到esp+1C
    0040294E    . |DB4424 >fild dword ptr ss:[esp+1C]    ;  esp+1C转浮点存储
    00402952    . |DEC9    fmulp st(1),st                ;  (st=esp+1C的10进制)*st(1)
    =st(1)
    00402954    . |D8C1    fadd st,st(1)                 ;  st(1)+st=st
    00402956    . |E8 7513>call 0_38.00403CD0            ;  F7进去
    0040295B    . |99      cdq                           ;  edx清0
    0040295C    . |DDD8    fstp st                       ;  st转10进制
    0040295E    . |B9 A086>mov ecx,186A0                 ;  除数186A0放入ecx
    00402963    . |F7F9    idiv ecx                      ;  商数放edx
    00402965    . |895424 >mov dword ptr ss:[esp+14],edx ;  商数转移
    00402969    . |0FBED3  movsx edx,bl                  ;  单个机器码入edx
    0040296C    . |895424 >mov dword ptr ss:[esp+1C],edx ;  单个机器码转移
    00402970    . |DB4424 >fild dword ptr ss:[esp+1C]    ;  单个机器码转浮点存储
    00402974    . |DD05 58>fld qword ptr ds:[41A758]     ;  ds:[0041A758]
    =2.000000000000000
    0040297A    . |E8 3111>call 0_38.00403AB0            ;  F7进去
    


    2楼2009-08-23 22:06
    回复
      0040297F    . |DC4C24 >fmul qword ptr ss:[esp+24]    ;  st*ESI
      00402983    . |E8 4813>call 0_38.00403CD0            ;  进去
      00402988    . |DB4424 >fild dword ptr ss:[esp+14]    ;  上面的商数
      0040298C    . |8BCE    mov ecx,esi                   ;  ESI入ECX
      0040298E    . |0FAFCD  imul ecx,ebp                  ;  ecx*ebp
      00402991    . |D9C0    fld st                        ;  装入浮点数
      00402993    . |D9FA    fsqrt                         ;  st开方
      00402995    . |03C1    add eax,ecx                   ;  eax+ecx
      00402997    . |B9 A086>mov ecx,186A0                 ;  除数186A0入栈
      0040299C    . |99      cdq                           ;  edx清0
      0040299D    . |F7F9    idiv ecx                      ;  商数入edx
      0040299F    . |8BEA    mov ebp,edx                   ;  商数转移
      004029A1    . |E8 2A13>call 0_38.00403CD0            ;  F7进去
      004029A6    . |03C5    add eax,ebp                   ;  EAX+EBP
      004029A8    . |B9 A086>mov ecx,186A0                 ;  除数186A0入栈
      


      3楼2009-08-23 22:06
      回复
        004029AD    . |99      cdq                           ;  edx清0
        004029AE    . |F7F9    idiv ecx                      ;  商数入edx
        004029B0    . |46      inc esi                       ;  ESI+1=ESI
        004029B1    . |3BF7    cmp esi,edi
        004029B3    . |897424 >mov dword ptr ss:[esp+1C],esi ;  [esp+1C]=esi
        004029B7    .^\0F8E 5D>jle 0_38.0040291A
        00403CD0   /$  55      push ebp
        00403CD1   |.  8BEC    mov ebp,esp
        00403CD3   |.  83C4 F4 add esp,-0C
        00403CD6   |.  9B      wait                          ;  同步FPU与CPU:停止CPU的运行
        ,直到FPU完成当前操作码
        00403CD7   |.  D97D FE fstcw word ptr ss:[ebp-2]     ;  将FPU的控制字保存到
        00403CDA   |.  9B      wait                          ;  同步FPU与CPU:停止CPU的运行
        ,直到FPU完成当前操作码
        00403CDB   |.  66:8B45>mov ax,word ptr ss:[ebp-2]    ;  FPU的控制字保存ax
        00403CDF   |.  80CC 0C or ah,0C
        00403CE2   |.  66:8945>mov word ptr ss:[ebp-4],ax
        00403CE6   |.  D96D FC fldcw word ptr ss:[ebp-4]     ;  把控制字存入16位寄存器
        00403CE9   |.  DF7D F4 fistp qword ptr ss:[ebp-C]    ;  dest <- st(0) 
        (mem16/mem32/mem64);然后再执行一次出栈操作
        00403CEC   |.  D96D FE fldcw word ptr ss:[ebp-2]     ;  把控制字存入16位寄存器
        00403CEF   |.  8B45 F4 mov eax,dword ptr ss:[ebp-C]
        


        4楼2009-08-23 22:06
        回复
          00403CF2   |.  8B55 F8 mov edx,dword ptr ss:[ebp-8]
          00403CF5   |.  C9      leave
          00403CF6   \.  C3      retn
          00403AB0   /$  83EC 10 sub esp,10
          00403AB3   |.  D9C9    fxch st(1)                    ;  st=2.0000000000000000000/ST
          (1)=62.000000000000000000/交换内容
          00403AB5   |.  DD1C24  fstp qword ptr ss:[esp]       ;  dest <- st(0) 
          (mem32/mem64/mem80);然后再执行一次出栈操作
          00403AB8   |.  DD5424 >fst qword ptr ss:[esp+8]      ;  保存实数st(0)到dest
          00403ABC   |.  8B4424 >mov eax,dword ptr ss:[esp+C]
          00403AC0   |.  E8 0D00>call 0_38.00403AD2            ;  进去
          00403AC5   |.  83C4 10 add esp,10
          00403AC8   \.  C3      retn
          00403AD2    $  8BC8    mov ecx,eax
          00403AD4    .  50      push eax
          00403AD5    .  9B      wait
          00403AD6    .  D93C24  fstcw word ptr ss:[esp]       ;  存入16进制寄存器
          00403AD9    .  66:813C>cmp word ptr ss:[esp],27F
          00403ADF    .  74 05   je short 0_38.00403AE6
          00403AE1    .  E8 4F2E>call 0_38.00406935
          00403AE6    >  81E1 00>and ecx,7FF00000
          00403AEC    .  8D5424 >lea edx,dword ptr ss:[esp+8]
          00403AF0    .  81F9 00>cmp ecx,7FF00000
          00403AF6    .  0F84 9D>je 0_38.00403B99
          00403AFC    .  E8 642E>call 0_38.00406965            ;  F7进去
          00403B01    . /0F84 8E>je 0_38.00403B95
          00403B07    . |A9 0000>test eax,7FF00000
          00403B0C    . |0F84 F6>je 0_38.00403C08
          


          5楼2009-08-23 22:06
          回复
            00403B12    > |8A4C24 >mov cl,byte ptr ss:[esp+F]
            00403B16    . |80E1 80 and cl,80
            00403B19    . |0F85 61>jnz 0_38.00403C80
            00403B1F    > |D9F1    fyl2x                         ;  计算Y * log2(X)/st(0)为Y;
            st(1)为X;将st(0)和st(1)变为st(0) * log2( st(1) )的值
            00403B21    . |E8 FA2D>call 0_38.00406920            ;  F7进去
            00406920   /$  D9C0    fld st
            00406922   |.  D9FC    frndint                       ;  取整(四舍五入)
            00406924   |.  DCE1    fsubr st(1),st                ;  st(0) <- st(i) - st(0)
            00406926   |.  D9C9    fxch st(1)                    ;  交换
            00406928   |.  D9E0    fchs                          ;  改变符号位(求负数)
            0040692A   |.  D9F0    f2xm1                         ;  st(0) <- (2 ^ st(0)) - 1
            0040692C   |.  D9E8    fld1                          ;  将1.0装入st(0)
            0040692E   |.  DEC1    faddp st(1),st                ;  st(i) <- st(i) + st(0);然后
            执行一次出栈操作
            00406930   |.  D9FD    fscale                        ;  2的st(0)次方
            00406932   |.  DDD9    fstp st(1)
            00406934   \.  C3      retn
            


            6楼2009-08-23 22:06
            回复

              *****************************
              00402A45    > /8A4434 >mov al,byte ptr ss:[esp+esi+2C]     ;  主要算法的开始,注意第
              一个注册码是由谁算出来的
              00402A49    . |3C 30   cmp al,30                           ;  是否小于数字0
              00402A4B    . |7C 04   jl short 0_38.00402A51
              00402A4D    . |3C 39   cmp al,39                           ;  是否小于等于数字9
              00402A4F    . |7E 29   jle short 0_38.00402A7A
              00402A51    > |3C 41   cmp al,41                           ;  是否小于字母A
              00402A53    . |7C 04   jl short 0_38.00402A59
              00402A55    . |3C 5A   cmp al,5A                           ;  是否小于等于字母Z
              00402A57    . |7E 21   jle short 0_38.00402A7A
              00402A59    > |3C 61   cmp al,61                           ;  是否小于字母a
              00402A5B    . |7C 04   jl short 0_38.00402A61
              00402A5D    . |3C 7A   cmp al,7A                           ;  是否小于等于字母z
              00402A5F    . |7E 19   jle short 0_38.00402A7A
              00402A61    > |0FBED0  movsx edx,al
              00402A64    . |8D440A >lea eax,dword ptr ds:[edx+ecx+1F]
              00402A68    . |25 7F00>and eax,8000007F
              00402A6D    . |79 05   jns short 0_38.00402A74
              00402A6F    . |48      dec eax
              00402A70    . |83C8 80 or eax,FFFFFF80
              00402A73    . |40      inc eax
              00402A74    > |884434 >mov byte ptr ss:[esp+esi+2C],al
              00402A78    .^ EB CB   jmp short 0_38.00402A45
              00402A7A    > |83C1 07 add ecx,7                           ;  ecz的初值0+7
              00402A7D    . |46      inc esi                             ;  esi+1
              00402A7E    . |83F9 69 cmp ecx,69
              00402A81    .^\7C C2   jl short 0_38.00402A45
              *********************************
              经过上面的循环后有M6DFOdQNgZDn7z0
              每4位用"-"相连即是注册码!
              *********************************
              >DQQJJFJHF
              M6DFO-dQNgZ-Dn7z0
              *********************************
              晕。。12月28号完成动画
              29号在看雪上出现他的算法分析


              7楼2009-08-23 22:06
              回复