您的位置:首页精文荟萃破解文章 → 破解 Noterpro V1.1

破解 Noterpro V1.1

时间:2004/10/15 0:49:00来源:本站整理作者:蓝点我要评论(0)

 

Noterpro V1.1
                    程式猎人
简介:这个软件是一个小型的编辑软件,功能比note强大。
追踪:name:dahuilang
      RN:01234567
      在写这个教程前,我看到了看雪关于这个软件的整个计算过程,在他的文章中讲解的非常清楚,如何得到的注册码大家想必一看就知道了。但是看雪没有写出来如何能够追踪到计算的地方,我想对于初学者来说追踪到这里是非常关键的,而大家没有追踪出来的原因大多数也就在此,所以我就将它从开始处直到追踪到计算过程处写出来,供大家学习。
    下bpx hmemcpy后你将被拦下。跳跃到主程序中,如下:
0040b1f7  call 0049a768
          lea edx [ebp-08]  <-出来
          xor eax eax
          ……
          ……
0040b214  call 0049a768
          lea edx [ebp-08]
          mov edx [edx]
          mov eax [004e9c80]
          pop eax
          call 00406bb0
          push eax      ****
          ……
          ……
0040b245  call 004dccc
          pop ecx
          test cl cl
          jz 0040b38b
  现在我们就追踪到这里,你将首先从上面标记的地方出来,因为程序要读取两次,所以它使用了call 0049a768两次的,程序读取完后下面的那个call就是关键的地方,我在这里向大家解释一下为什么说call 00406bb0就是重要的地方。
  因为在下面0040b245处开始,如果程序在这里跳跃的话,将出现错误提示,所以说这个跳跃是一个相当关键的地方,那么ecx的值决定这个程序能够注册成功与否了。程序调用ecx是使用出栈的方法得到ecx的,那么就要看在那里进栈了,观察程序发现只有****处进入堆栈,所以现在就知道call 00406bb0是一个重要的函数了。
  进入call 00406bb0中,如下:

00406e6b  mov edx [ebp-08]
          call notepro!@stratil@xordecord$qqrx17
          lea edx [ebp-2c]
          lea eax [ebp-14]
          call 004dcd9c
          push eax      ****
          ……
          ……
00406e92  call 004dcccc
          pop ecx
          test cl cl
          jz 00406e98
          mov byte [ebp-51] 01  ****
00406e98  dec dword [ebp-34]
          ……
          ……
00406eae  mov al [ebp-51] ***
          mov edx 02
          push eax  **
          leax eax [ebp-08]
          ……
          ……
00406ecd  call 004dcccc
          pop eax  *
          mov edx [ebp-50]
  现在开始介绍程序在这个call中如何得到的eax值的,因为出这个call后我们最关心的就是eax值,那么就要注意这个值的变化。我先从后面看,这个eax就是程序返回的值,它从这里得到的。
          pop eax  *
  那么在上面就有进入堆栈的地方
          push eax  **
    它又是mov al [ebp-51]从这得到的,再向上查找程序在这里使用mov byte [ebp-51] 01,这个是决定你注册成功的关键,那么上面正好有一个jz,这就应当找到了关键地方了。但是在这里你不要进入
00406e92  call 004dcccc
  中,因为它不是最后的运行call,为什么?还是使用前面讲到的地方,因为程序使用的是pop ecx来传值的,所以上面才是关键的地方。
          call 004dcd9c
          push eax 
  这里者关键的地方,那么如果你进入这里call中你会发现这里只是一个比较过程,它的两个值一个是明码,另一个不是,其中名码就是通过你的name计算得到的,而不是明码的就是通过你的注册码计算得到的。现在的关键是找到如何通过你的注册码计算得到这个比较码的。那么在上面茫茫的代码中如何找呢?
  这里也有一个技巧,因为如果你进入call 00406bb0这里后,你会发现程序前面的计算入口值都是name,也就是前面的计算都真对name的,而在这里你可以看到它的入口值是你输入的RN
00406e6b  mov edx [ebp-08]  <-RN    *******
          call notepro!@stratil@xordecord$qqrx17
          lea edx [ebp-2c]
          lea eax [ebp-14]
那么下面的那个call就是运行的关键了,进入后你就会发现它同看雪介绍的一样,你手中一定要有一个XOR表,如果没有话,自己做一个就行了。下面就是看雪破解的计算过程。

程序名是:notepro  1.04
下载:http://www.newhua.com.cn/down/notepro.zip

我们看看这个程序的算法,这程序先跟据姓名如:toye,计算出一中间数m,这里m=4091327126,然后将这m各位依次转换ASCII码,再依次与内部固定字串:67gjhab480klvn176 异或运算,结果就是以两位十六进制表示,这就是注册码。
如:设我们输入的姓名格式:a1 a2 a3 ...a(n)
m分成三段,依次根据姓名计算。设m=m1+m2+m3
m1=a1+a2+a3+--+a(n-1)+61  (全部数字是以十进制表示计算的)
m2=(a1+a(n))*3D  (全部数字以十六进制计算,结果转换成十进制)
m3=3D+3D+n  (全部数字以十六进制计算,结果转换成十进制)

在这里:toye
m=m1 m2 m3= 409  1327  126 =4091327126

      m=4091327126
展开:34 30 39 31 33 32 37 31 32 36  (将m转换成ASDCII码)
XOR:36 37 67 6A 68 61 62 34 38 30  (固定字串67gjhab480klvn176以ASCII表示)
——————————————————
          02 07 5e 5b 5b 53 51 03 09 02 5d

因此:注册码就是:02075e5b5b53510309025d

至此,注册机应不难写了。

下面简单将破解过程的代码例出:

用SOFTICE来破,用WF打开浮点开关。

①计算m1部分

ST0  111.                              ST4  empty                             
ST1  empty                              ST5  empty                             
ST2  empty                              ST6  empty                             
ST3  empty                              ST7  empty
-----------------------------------------------------------------------------                                   
0167:00406898  MOV      ESI,EBX                                       
0167:0040689A  PUSH      ESI                                                   
0167:0040689B  LEA      EAX,[EBP-04]                                         
0167:0040689E  PUSH      EAX                                                   
0167:0040689F  CALL      004DBEDC                                             
0167:004068A4  ADD      ESP,08                                               
0167:004068A7  LEA      EAX,[EBP-04]                                         
0167:004068AA  CALL      004DC178                                             
0167:004068AF  ADD      ESI,[EBP-04]                                         
0167:004068B2  DEC      ESI                                                   
0167:004068B3  MOVSX    EDX,BYTE PTR [ESI]  //依次将姓名各个字符传给edx                                 
0167:004068B6  AND      EDX,7F                                               
0167:004068B9  MOV      [EBP-70],EDX                                         
0167:004068BC  FILD      DWORD PTR [EBP-70]    //将这个字符放进浮点寄存器ST0                         
0167:004068BF  FADD      REAL8 PTR [EBP-5C]    //ebp-5c的初值为0 ,ST0与ebp-5c的值相加                             
0167:004068C2  FSTP      REAL8 PTR [EBP-5C]      //将结果取出,放进ebp-5c                             
0167:004068C5  INC      EBX                                                   
0167:004068C6  CMP      DWORD PTR [EBP-04],00                       
0167:004068CA  JZ        004068D4                                       
0167:004068CC  MOV      ECX,[EBP-04]   
0167:004068CF  MOV      EAX,[ECX-04]                                         
0167:004068D2  JMP      004068D6                                             
0167:004068D4  XOR      EAX,EAX                                               
0167:004068D6  CMP      EBX,EAX    //依次循环n-1次,只有姓名的最后一字符没参加运算。                               
0167:004068D8  JL        00406898                                    (JUMP ) 
0167:004068DA  FILD      DWORD PTR [EDI+000005C8]  //将定值 61(十进制)放进浮点寄存器 ST1                             
0167:004068E0  FADD      REAL8 PTR [EBP-5C]    //将61加上前n-1位的和。成为m1                               
0167:004068E3  FSTP      REAL8 PTR [EBP-5C]                                   
0167:004068E6  PUSH      01                                                   
0167:004068E8  LEA      EDX,[EBP-04]                                         
0167:004068EB  PUSH      EDX     


②m2部分计算
ST0  13237.                            ST4  empty                             
ST1  empty                              ST5  empty                             
ST2  empty                              ST6  empty                             
ST3  empty                              ST7  empty       
————————————————————————————————
                       
0167:00406929  ADD      EBX,[EBP-04]                                         
0167:0040692C  DEC      EBX                                                   
0167:0040692D  MOVSX    EDX,BYTE PTR [EBX]                                   
0167:00406930  AND      EDX,7F                                               
0167:00406933  POP      ECX                                                   
0167:00406934  ADD      ECX,EDX      //ecx=是姓名第一字符,edx=姓名的第后一字符                                       
0167:00406936  IMUL      ECX,[EDI+000005C8] //将上面的结果乘以十六进制数:3D.    成为m2                             
0167:0040693D  MOV      [EBP-70],ECX                                         
0167:00406940  FILD      DWORD PTR [EBP-70]                                   
0167:00406943  FSTP      REAL8 PTR [EBP-64]                                   
0167:00406946  CMP      DWORD PTR [EBP-04],00                                 
0167:0040694A  JZ        00406954                                             
0167:0040694C  MOV      EAX,[EBP-04]                                         
0167:0040694F  MOV      EDX,[EAX-04]                                        
0167:00406952  JMP      00406956     

③m3的计算
                                 
0167:0040695C  ADD      EAX,EAX  //EAX的值是定值:3D(十六进制)                                           
0167:0040695E  ADD      EDX,EAX  //EDX值是姓名的位数n  计算的结果就是m3                                           
0167:00406960  MOV      [EBP-70],EDX                                         
0167:00406963  FILD      DWORD PTR [EBP-70]                                   
0167:00406966  FSTP      REAL8 PTR [EBP-6C]                                   
0167:00406969  MOV      WORD PTR [EBP-40],0038                               
0167:0040696F  FLD      REAL8 PTR [EBP-6C]                                   
0167:00406972  CALL      004D5094                                             
0167:00406977  PUSH      EDX               

④                 
167:00406A4E  XOR      ECX,ECX                                             
0167:00406A50  MOV      [EBP-2C],ECX                                         
0167:00406A53  LEA      ECX,[EBP-2C]                                         
0167:00406A56  INC      DWORD PTR [EBP-34]                                   
0167:00406A59  MOV      EAX,[EDI+000005DC]                                   
0167:00406A5F  MOV      EDX,[EBP-08]                                         
0167:00406A62  CALL      004354D8  //将输入的注册码与定值67gjhab480klvn176 异或运算,以结果K表示
0167:00406A67  LEA      EDX,[EBP-2C]
0167:00406A6A  LEA      EAX,[EBP-14]                                         
0167:00406A6D  CALL      004DC0F0  // 将结果k与M比较 
0167:00406A72  PUSH      EAX  //如相等EAX =1  ,将EAX入栈                                           
0167:00406A73  DEC      DWORD PTR [EBP-34]                                   
0167:00406A76  LEA      EAX,[EBP-2C]                                         
0167:00406A79  MOV      EDX,00000002                                         
0167:00406A7E  CALL      004DC020                                     
0167:00406A83  POP      ECX //cl出栈,即将EAX的值传到cl                                                 
0167:00406A84  TEST      CL,CL  //  如相等cl =1                                         
0167:00406A86  JZ        00406A8C                                             
0167:00406A88  MOV      BYTE PTR [EBP-51],01                               
0167:00406A8C  DEC      DWORD PTR [EBP-34]         

---------------------------------end------------------------


    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程