文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页精文荟萃破解文章 → 破解 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破解如何给软件脱壳基础教程