ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:21.90KB ,
资源ID:4575349      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4575349.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第15课keymake算法注册机技巧文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第15课keymake算法注册机技巧文档格式.docx

1、mov eax,a2add eax,edxmov a2,eaxshl ecx,8mov edx,a2xor edx,ecxmov a2,edxadd eax,1mov ecx,lenimul ecx,a1not ecximul eax,ecximul edx,eaxjmp n2n1:invoke wsprintf,addr szBuffer,addr szHex,a2 lea eax,szBuffer说明:将 dword ptr ss:ebp-10定义为a2,用a2替换dword ptr ss:ebp-20定义为a1,用a1替换ebp-1C定义为len,用len替换,表征姓名字符串的长度注意:

2、在程序的反汇编代码中寻找a1、a2的初始值。假设你看不懂算法,乱七八糟的一堆汇编代码,依然可以写出它的注册机。二、keymake使用说明:keymake程序初始时,默认的是,令EAX指向第一个编辑框(也就是输入序列号的窗口)收到用户输入的数据;令EBX指向第二个编辑框收到用户输入的数据;令ECX指向第三个编辑框收到用户输入的数据。你如果要对用户输入的序列号或用户名等信息进行操作,那么可以就对EAX、EBX、ECX进行操作。在keymake目录 EXAMPLE 下有一个例子程序,主要用来举例说明这个程序的使用(我先假设自己并不太懂Win32汇编)。1. 通过动态调试或反汇编例子程序可以得到以下注

3、册码的计算过程(它不是根据你的序列号来计算注册码): xxxx:00401077 CALL GetCommandLineA 0040107C CMPBYTE PTR EAX,22 0040107F JNZ401082 00401081 INCEAX 00401082 MOVCX,WORD PTR EAX 00401085 MOVWORD PTR 0040306C,CX 0040108C MOVWORD PTR 0040306E,5C 00401095 PUSH 0 00401097 PUSH 0 00401099 PUSH 0 0040109B PUSH 0 0040109D PUSH DWO

4、RD 00403058 004010A2 PUSH 0 004010A4 PUSH 0 004010A6 PUSH DWORD 0040306C 004010AB CALL GetVolumeInformationA 0040112F0040305C0040113C40306C40305C种算注册码的方法不是直接从用户所输入的序列号来计算注册码的,所以并不适用于所有情况。有时我们可能需要根据用户所填入的序列号来计算注册码。下面的代码是本例根据用户所填入的序列号来计算注册码的方法:MOV ECX,EAX; EAX指向用户输入的八位序列号,现在暂将它移动到ECX寄存器XOR EBX,EBX ;EB

5、X清零 以下是一段典型的将内存中的ASCII码转换为十六进制代码。MOVZX EAX,BYTE PTR ECXOR AL,ALJZ n3CMP AL,3AhJC n2SUB AL,7SUB AL,30hSHL EBX,4ADD EBX,EAXINC ECXJMP n1 我想以上的一段代码应该懂汇编就能写的出(如果不是很明白,那么你对我编写好的注册机用ollydbg调试一次就知道了)。PUSH EBX 最后的十六进制结果都保存在寄存器EBX中 将EBX入栈,这是为了将EBX寄存器的数据保存起来。因为经过CPUID这个指令后EBX的值将被修改。然后后面就和上面一样照抄程序中的指令。以下计算注册码的

6、方法很简短。但在实际的破解过程中,程序的算法可能会相当复杂。这就需要你通过调试或反汇编将关键的运算指令都找出来,再写进来。MOVEAX,1CPUIDPOP ECX 恢复EBX的值到ECX寄存器,开始计算注册码XOREDX,EDXMULECXADDEAX,EDX 下面的指令指的是输出格式,除了“%lX”可以修改,其他的请照抄PUSH EAXLEAEAX,a3 令EAX指向a3,也就是指向字符“%lX”。%lX指的是输出数据的格式,你会C语言就肯定懂了LEAEAX,a4CALL wsprintfALEA EAX,a4 令EAX指向a4。因为程序最后显示的就是EAX寄存器所指向的内存地址的数据。以下

7、几个是进制转换函数和我加入的部分自定义函数,你也可以在编写注册机的过程中调用它们(使用时千万不要把大小写弄错了)。atodw将十进制的内存ASCII数值转换为数据元素使用格式:invoke atodw,指向存放内存数值的缓冲区htodw将十六进制的内存ASCII数值转换为数据元素invoke htodw,指向存放内存数值的缓冲区MakeCrypt对内存缓冲区数据进行加密invoke MakeCrypt,指向要加密的字符缓冲区,指向接收加密后的字符缓冲区UnMakeCrypt对内存缓冲区数据进行解密invoke UnMakeCrypt,指向要解密的字符缓冲区,指向接收解密后的字符缓冲区wspri

8、ntf 使用给定格式格式化数据元素invoke wsprintf,指向存储输出的字符缓冲区,指向以空值结尾的包含格式化选项的字符串,指向一个数据元素列表数据格式化选项:%d,%i有符号十进制数值;%ld,%li长的有符号十进制整数值;%u 无符号十进制整数值;%lu长的无符号十进制整数值;%x,%X十六进制整数值,%x输出小写,%X输出大写;%lx,%lX长的十六进制整数值,%lx输出小写,%lX输出大写;#0x字符串的前缀数据,一般在显示十六进制值时使用。精度修饰符小数点后跟一个数,指定复制到输出缓冲区数字的最小数目。如果给定数字位数小于精度指定位数,域中用0填充,默认情况从左边填充。假如给

9、定精度“.10”,数“”复制到输出缓冲区后变为“”如无特别说明或已经指定了输出位置,在Win32程序中所有的结果都返回在eax中。使用举例一:比如要将内存中的十进制数值“”转换为十六进制,输出结果以0x为前缀,再进行加密。数据区:szXor16 db %#lXszNum10 db szOutMem db 50 dup (0)代码区:invoke atodw,addr szNum10;这一句是将内存中的数值当做十进制转换为数据元素,返回的结果在eax中,那么eax=bc614einvoke wsprintf,addr szBuffer,addr szXor16,eax;这一句是将eax中的值以十

10、六进制大写输出到内存szBuffer位置。invoke MakeCrypt,addr szBuffer,addr szOutMem;这一句是将指向内存szBuffer的数据加密后输出到内存szOutMem的位置。使用举例二:比如要将内存中的十六进制数值“ABCDEF”转换为十进制,输出长度为20位数,再进行解密。szXor10 db %szNum16 db ABCDEFinvoke htodw,addr szNum16;这一句是将内存中的数值ABCDEF当做十六进制转换为数据元素,返回的结果在eax中,那么eax=abcdefinvoke wsprintf,addr szBuffer,addr

11、 szXor10,eax;这一句是将eax中的值以十进制输出到内存szBuffer位置。invoke UnMakeCrypt,addr szBuffer,addr szOutMem;这一句是将指向内存szBuffer的数据解密后输出到内存szOutMem的位置。以上部分摘自keymake的说明书例2某软件:小护士 ,注册算法为:注册码=机器码 XOR 78AB1234 的十进制值!显然,78AB1234为16进制数。根据上面学的,用atodw函数输入的机器码不正确!szFMT db %dszBuffer db 30 dup (0)invoke atodw,eaxxor eax,78AB1234

12、hinvoke wsprintf,addr szBuffer,addr szFMT,eax例3象棋桥关键代码如下:004846B7 33C9 xor ecx,ecx004846B9 8A08 mov cl,byte ptr ds:eax004846BB 8B45 F4 mov eax,dword ptr ss:ebp-C004846BE 33DB xor ebx,ebx004846C0 8A58 01 mov bl,byte ptr ds:eax+1004846C3 8B45 F4 mov eax,dword ptr ss:004846C6 0FB670 02 movzx esi,byte p

13、tr ds:eax+2004846CA 8B45 F4 mov eax,dword ptr ss:004846CD 0FB678 03 movzx edi,byte ptr ds:eax+3004846D1 8B45 F4 mov eax,dword ptr ss:004846D4 0FB640 04 movzx eax,byte ptr ds:eax+4004846D8 8945 F0 mov dword ptr ss:ebp-10,eax004846DB 8D040B lea eax,dword ptr ds:ebx+ecx004846DE 03FE add edi,esi004846E0

14、 F7EF imul edi004846E2 F76D F0 imul dword ptr ss:ebp-10004846E5 B9 A0860100 mov ecx,186A0004846EA 99 cdq004846EB F7F9 idiv ecx004846ED 8BDA mov ebx,edx004846EF 8D55 F4 lea edx,dword ptr ss:输入的序列号不正确!TempBuffer db 100 dup (0) CCB21R-%luxor ecx,ecxmov cl,byte ptr eaxxor ebx,ebxmov bl,byte ptr eax+1mov

15、zx esi,byte ptr eax+2movzx edi,byte ptr eax+3movzx eax,byte ptr eax+4mov a1,eaxlea eax,dword ptr ebx+ecxadd edi,esiimul ediimul a1mov ecx,000186A0hcdqidiv ecxmov ebx,edxinvoke wsprintf,addr TempBuffer,addr szHex,ebxlea eax,TempBuffer留意红色字体的部分例4Flash 注册算法关键代码(企业版)如下::005168E1 BBDB070000 mov ebx, 0000

16、07DB005168E6 8B45FC mov eax, dword ptr ebp-04005168E9 E832D8EEFF call 00404120005168EE 8BF0 mov esi, eax005168F0 85F6 test esi, esi005168F2 7E4A jle 0051693E005168F4 BF01000000 mov edi, 00000001* Referenced by a (U)nconditional or (C)onditional Jump at Address:|:0051693C(C)|005168F9 8B45FC mov eax,

17、dword ptr ebp-04005168FC 8A4C38FF mov cl, byte ptr eax+edi-0100516900 33C0 xor eax, eax00516902 8AC1 mov al, cl00516904 8D570D lea edx, dword ptr edi+0D00516907 F7EA imul edx00516909 03D8 add ebx, eax0051690B 8BC3 mov eax, ebx0051690D BBFFC99A3B mov ebx, 3B9AC9FF00516912 99 cdq00516913 F7FB idiv ebx

18、00516915 8BDA mov ebx, edx00516917 8B45FC mov eax, dword ptr ebp-040051691A 80F145 xor cl, 450051691D 33C0 xor eax, eax0051691F 8AC1 mov al, cl00516921 F76DF8 imul ebp-0800516924 03D8 add ebx, eax00516926 8BC3 mov eax, ebx00516928 B9FFC99A3B mov ecx, 3B9AC9FF0051692D 99 cdq0051692E F7F9 idiv ecx0051

19、6930 8BDA mov ebx, edx00516932 69C72B300600 imul eax, edi, 0006302B00516938 03D8 add ebx, eax0051693A 47 inc edi0051693B 4E dec esi0051693C 75BB jne 005168F9005168F2(C)0051693E 8BC3 mov eax, ebx00516940 B9FFE0F505 mov ecx, 05F5E0FF00516945 99 cdq00516946 F7F9 idiv ecx00516948 8BDA mov ebx, edx005169

20、4A 8BC3 mov eax, ebx0051694C B0 mov ecx, 0000000600516951 99 cdq00516952 F7F9 idiv ecx00516954 83C241 add edx, 0000004100516957 8855F3 mov byte ptr ebp-0D, dl0051695A 895DEC mov dword ptr ebp-14, ebx0051695D DB45EC fild dword ptr ebp-1400516960 83C4F4 add esp, FFFFFFF400516963 DB3C24 fstp tbyte ptr

21、esp00516966 9B wait00516967 8D45E8 lea eax, dword ptr ebp-180051696A 8A55F3 mov dl, byte ptr ebp-0D0051696D E8D6D6EEFF call 0040404800516972 8D45E8 lea eax, dword ptr ebp-18* Possible StringData Ref from Code Obj -00-000-000 |00516975 BAC0695100 mov edx, 005169C0其文件如下:,0 没输入姓名!szFmt db szTemp db 10

22、dup(0) szCode db 14 dup(0) a1 dd 147hmov ebx,7DBh invoke lstrlen,eax mov esi,eax mov edi,1 lea eax,hInput1 mov cl,byte ptr eax+edi-1 xor eax,eax mov al,cl lea edx,dword ptr edi+0Dh imul edx add ebx,eax mov eax,ebx mov ebx,3B9AC9FFh cdq idiv ebx mov ebx,edx xor cl,45h imul a1 mov ecx,3B9AC9FFh idiv e

23、cx imul eax,edi,0006302Bh inc edi dec esi jne n1 mov ecx,05F5E0FFh mov ecx,6 add edx,41h mov byte ptr szTemp,dl invoke wsprintf,addr szTemp+1,addr szFmt,ebx mov edx,3 lea esi,szTemp lea edi,szCode mov ecx,3 rep movsb mov edi,byte ptr -dec edx jnz n2 mov edi-1,byte ptr 0 lea eax,szCode注意其中的红色的部分。例5k4

24、n2的注册算法(KEYGENNING4NEWBIES #2)此软件有bug。注册码的计算中涉及到一个edi的初值。不同的机器是不同的。无法制作通用在任何机器上的注册机。但作为教学来说,还是一个很不错的例子。可以制作针对本机的注册机。我机器的edi初值为12F55C。004010F7 33D2 xor edx,edx004010F9 33DB xor ebx,ebx004010FB 8B55 D4 mov edx,dword ptr ss:ebp-2C004010FE 0155 C4 add dword ptr ss:ebp-3C,edx00401101 0155 C4 add dword ptr ss:00401104 8BC2 mov eax,edx00401106 83C0 05 add eax,500401109 8945 B8 mov dword ptr ss:ebp-48,eax0040110C 33C0 xor eax,eax0040110E 8BCF mov ecx,edi00401110 83C1 04 add ecx,400401113 894D B4 mov dword ptr ss:ebp-4C,ecx00401116 33C9 xor ecx,ecx00401118 0155 BC add

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2