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破解如何给软件脱壳基础教程
查看所有0条评论>>