学习[PYG]算法分析入门第四课求助
飘云老大的算法分析入门第四课中的软件私人保险箱已经更新到6.48版(下载地址http://www3.skycn.com/soft/14176.html),按照老大的教程可以提示注册成功。可是工具集里的还原功能不能使用,提示只有注册用户才能使用,而且软件使用15次以后提示过期。自己分析了一下,软件在第一次启动的时候会在系统目录生成一个Mgprend4.dll文件,用记事本打开里面是试用次数15,次数不能改大,因为程序启动时会判断这个值,如果大于15直接跳到过期,出现过期提示的同时会在注册表HKEY_LOCAL_MACHINE\SOFTWARE\FinalVer里建立一个end4的项目,每次程序启动会先检测这个项目,那就直接提示过期。过期后,会提示注册,注册窗口要求填入用户名和注册码,不知道注册码是不是要用用户名参与运算,一直没把这个注册的地方断下来,所以想请各位高手看看这个软件到底该怎么注册?另外,在前面提到的使用工具集里的还原功能提示只有注册用户才能使用,在这里跟踪,发现软件是读取注册表HKEY_CURRENT_USER\Software\SafeBox里面的RegNo项目,而且在试用时我们注册成功时,建立的项目名称是RegNum,尝试把RegNum改成RegNo,可以通过第一步验证,可是第二步通不过(使用这个功能要通过2步验证)。困扰自己2天了,实在是找不到好的头绪,不知道怎样才能算是真正的注册,所以发贴请教大家,请大家多指教!代码贴在下面。
004E8E06|.E8 BD25F8FF call 0046B3C8
004E8E0B|.8BD8 mov ebx, eax
004E8E0D|.BA 02000080 mov edx, 80000002
004E8E12|.8BC3 mov eax, ebx
004E8E14|.E8 4F26F8FF call 0046B468
004E8E19|.B1 01 mov cl, 1
004E8E1B|.BA 04924E00 mov edx, 004E9204 ;ASCII"Software\FinalVer"
004E8E20|.8BC3 mov eax, ebx
004E8E22|.E8 8527F8FF call 0046B5AC
004E8E27|.BA 20924E00 mov edx, 004E9220 ;ASCII "end4"
004E8E2C|.8BC3 mov eax, ebx
004E8E2E|.E8 692EF8FF call 0046BC9C ;判断注册表里是否用end4这个项目
004E8E33|.84C0 test al, al
004E8E35|.0F85 24030000 jnz 004E915F ;如果用end4这个项目跳向过期
004E8E3B|.8D85 2CFEFFFF lea eax, dword ptr
004E8E41|.E8 0AD3FFFF call 004E6150 ;获得系统目录
004E8E46|.8D85 2CFEFFFF lea eax, dword ptr
004E8E4C|.BA 30924E00 mov edx, 004E9230 ;ASCII "\Mgprend4.dll"
004E8E51|.E8 3AC1F1FF call 00404F90
004E8E56|.8B85 2CFEFFFF mov eax, dword ptr
004E8E5C|.E8 EB0AF2FF call 0040994C ;判断系统里是否有Mgprend4.dll这个文件
004E8E61|.84C0 test al, al
004E8E63|.0F84 8E020000 je 004E90F7 ;没有就跳走,然后建立这个文件
004E8E69|.8D85 28FEFFFF lea eax, dword ptr
004E8E6F|.E8 DCD2FFFF call 004E6150
004E8E74|.8D85 28FEFFFF lea eax, dword ptr
004E8E7A|.BA 30924E00 mov edx, 004E9230 ;ASCII "\Mgprend4.dll"
004E8E7F|.E8 0CC1F1FF call 00404F90
004E8E84|.8B95 28FEFFFF mov edx, dword ptr
004E8E8A|.8D85 30FEFFFF lea eax, dword ptr
004E8E90|.E8 4FA1F1FF call 00402FE4
004E8E95|.8D85 30FEFFFF lea eax, dword ptr
004E8E9B|.E8 D49EF1FF call 00402D74
004E8EA0|.E8 739AF1FF call 00402918
004E8EA5|.8D55 FC lea edx, dword ptr
004E8EA8|.8D85 30FEFFFF lea eax, dword ptr
004E8EAE|.E8 D5A6F1FF call 00403588
004E8EB3|.8D85 30FEFFFF lea eax, dword ptr
004E8EB9|.E8 36A7F1FF call 004035F4
004E8EBE|.E8 559AF1FF call 00402918
004E8EC3|.8D85 30FEFFFF lea eax, dword ptr
004E8EC9|.E8 92A2F1FF call 00403160
004E8ECE|.E8 459AF1FF call 00402918
004E8ED3|.8B45 FC mov eax, dword ptr
004E8ED6|.E8 3908F2FF call 00409714 ;上面是读取Mgprend4.dll中的次数
004E8EDB|.8BF8 mov edi, eax
004E8EDD|.85FF test edi, edi ;判断次数是否等于0
004E8EDF|.7E 05 jle short 004E8EE6 ;等于0就跳到过期
004E8EE1|.83FF 0F cmp edi, 0F ;判断是否大于15
004E8EE4|.7E 73 jle short 004E8F59 ;跳走就继续判断是否大于3
004E8EE6|>33C9 xor ecx, ecx ;不跳走就直接提示过期
004E8EE8|.BA 20924E00 mov edx, 004E9220 ;ASCII "end4"
004E8EED|.8BC3 mov eax, ebx
004E8EEF|.E8 E42BF8FF call 0046BAD8
004E8EF4|.33D2 xor edx, edx
004E8EF6|.8B86 2C030000 mov eax, dword ptr
004E8EFC|.8B08 mov ecx, dword ptr
004E8EFE|.FF51 64 call dword ptr
004E8F01|.B2 01 mov dl, 1
004E8F03|.8B86 6C030000 mov eax, dword ptr
004E8F09|.E8 2EF1F5FF call 0044803C
004E8F0E|.BA 48924E00 mov edx, 004E9248
004E8F13|.8B86 78030000 mov eax, dword ptr
004E8F19|.E8 7620FBFF call 0049AF94
004E8F1E|.BA 58924E00 mov edx, 004E9258
004E8F23|.8B86 74030000 mov eax, dword ptr
004E8F29|.E8 1EF2F5FF call 0044814C
004E8F2E|.6A 01 push 1
004E8F30|.68 84924E00 push 004E9284
004E8F35|.68 84924E00 push 004E9284
004E8F3A|.68 88924E00 push 004E9288 ;ASCII
"http://www.sharebank.com.cn/soft/softbuy.php?soid=10816"
004E8F3F|.68 C0924E00 push 004E92C0 ;ASCII "Open"
004E8F44|.A1 68DE4E00 mov eax, dword ptr
004E8F49|.E8 DA58F6FF call 0044E828
004E8F4E|.50 push eax ; |hWnd
004E8F4F|.E8 34F7F4FF call <jmp.&shell32.ShellExecuteA>; \ShellExecuteA
004E8F54|.E9 6D020000 jmp 004E91C6
004E8F59|>83FF 04 cmp edi, 4 ;判断是否大于3,小于3会提示试用剩余次数
004E8F5C|.0F8F 0A010000 jg 004E906C ;没跳
004E8F62|.33D2 xor edx, edx
004E8F64|.8B86 2C030000 mov eax, dword ptr
004E8F6A|.8B08 mov ecx, dword ptr
004E8F6C|.FF51 64 call dword ptr
004E8F6F|.B2 01 mov dl, 1
004E8F71|.8B86 6C030000 mov eax, dword ptr
004E8F77|.E8 C0F0F5FF call 0044803C
004E8F7C|.68 D0924E00 push 004E92D0 ;您还能再使用几次,几<3
004E8F81|.8D95 20FEFFFF lea edx, dword ptr
004E8F87|.8BC7 mov eax, edi
004E8F89|.48 dec eax
004E8F8A|.E8 E506F2FF call 00409674
004E8F8F|.FFB5 20FEFFFF push dword ptr
004E8F95|.68 E8924E00 push 004E92E8
004E8F9A|.8D85 24FEFFFF lea eax, dword ptr
004E8FA0|.BA 03000000 mov edx, 3
004E8FA5|.E8 9EC0F1FF call 00405048
004E8FAA|.8B95 24FEFFFF mov edx, dword ptr
004E8FB0|.8B86 74030000 mov eax, dword ptr
004E8FB6|.E8 91F1F5FF call 0044814C
004E8FBB|.6A 01 push 1
004E8FBD|.68 84924E00 push 004E9284
004E8FC2|.68 84924E00 push 004E9284
004E8FC7|.68 88924E00 push 004E9288 ;ASCII"http://www.sharebank.com.cn/soft/softbuy.php?soid=10816"
004E8FCC|.68 C0924E00 push 004E92C0 ;ASCII "Open"
004E8FD1|.A1 68DE4E00 mov eax, dword ptr
004E8FD6|.E8 4D58F6FF call 0044E828
004E8FDB|.50 push eax ; |hWnd
004E8FDC|.E8 A7F6F4FF call <jmp.&shell32.ShellExecuteA>; \ShellExecuteA
004E8FE1|.8B45 FC mov eax, dword ptr
004E8FE4|.E8 2B07F2FF call 00409714
004E8FE9|.48 dec eax
004E8FEA|.8D95 1CFEFFFF lea edx, dword ptr
004E8FF0|.E8 7F06F2FF call 00409674
004E8FF5|.8B95 1CFEFFFF mov edx, dword ptr
004E8FFB|.8D45 FC lea eax, dword ptr
004E8FFE|.E8 65BDF1FF call 00404D68
004E9003|.8D85 18FEFFFF lea eax, dword ptr
004E9009|.E8 42D1FFFF call 004E6150
004E900E|.8D85 18FEFFFF lea eax, dword ptr
004E9014|.BA 30924E00 mov edx, 004E9230 ;ASCII "\Mgprend4.dll"
004E9019|.E8 72BFF1FF call 00404F90
004E901E|.8B95 18FEFFFF mov edx, dword ptr
004E9024|.8D85 30FEFFFF lea eax, dword ptr
004E902A|.E8 B59FF1FF call 00402FE4
004E902F|.8D85 30FEFFFF lea eax, dword ptr
004E9035|.E8 469DF1FF call 00402D80
004E903A|.E8 D998F1FF call 00402918
004E903F|.8B55 FC mov edx, dword ptr
004E9042|.8D85 30FEFFFF lea eax, dword ptr
004E9048|.E8 4FC3F1FF call 0040539C
004E904D|.E8 5EA9F1FF call 004039B0
004E9052|.E8 C198F1FF call 00402918
004E9057|.8D85 30FEFFFF lea eax, dword ptr
004E905D|.E8 FEA0F1FF call 00403160
004E9062|.E8 B198F1FF call 00402918
004E9067|.E9 5A010000 jmp 004E91C6
004E906C|>8B45 FC mov eax, dword ptr
004E906F|.E8 A006F2FF call 00409714
004E9074|.48 dec eax
004E9075|.8D95 14FEFFFF lea edx, dword ptr
004E907B|.E8 F405F2FF call 00409674
004E9080|.8B95 14FEFFFF mov edx, dword ptr
004E9086|.8D45 FC lea eax, dword ptr
004E9089|.E8 DABCF1FF call 00404D68
004E908E|.8D85 10FEFFFF lea eax, dword ptr
004E9094|.E8 B7D0FFFF call 004E6150
004E9099|.8D85 10FEFFFF lea eax, dword ptr
004E909F|.BA 30924E00 mov edx, 004E9230 ;ASCII "\Mgprend4.dll"
004E90A4|.E8 E7BEF1FF call 00404F90
004E90A9|.8B95 10FEFFFF mov edx, dword ptr
004E90AF|.8D85 30FEFFFF lea eax, dword ptr
004E90B5|.E8 2A9FF1FF call 00402FE4
004E90BA|.8D85 30FEFFFF lea eax, dword ptr
004E90C0|.E8 BB9CF1FF call 00402D80
004E90C5|.E8 4E98F1FF call 00402918
004E90CA|.8B55 FC mov edx, dword ptr
004E90CD|.8D85 30FEFFFF lea eax, dword ptr
004E90D3|.E8 C4C2F1FF call 0040539C
004E90D8|.E8 D3A8F1FF call 004039B0
004E90DD|.E8 3698F1FF call 00402918
004E90E2|.8D85 30FEFFFF lea eax, dword ptr
004E90E8|.E8 73A0F1FF call 00403160
004E90ED|.E8 2698F1FF call 00402918
004E90F2|.E9 C8000000 jmp 004E91BF
004E90F7|>8D85 0CFEFFFF lea eax, dword ptr ;从004E8E63跳过来的
004E90FD|.E8 4ED0FFFF call 004E6150 ;下面就是建立Mgprend4.dll这个文件的过程
004E9102|.8D85 0CFEFFFF lea eax, dword ptr
004E9108|.BA 30924E00 mov edx, 004E9230 ;ASCII "\Mgprend4.dll"
004E910D|.E8 7EBEF1FF call 00404F90
004E9112|.8B95 0CFEFFFF mov edx, dword ptr
004E9118|.8D85 30FEFFFF lea eax, dword ptr
004E911E|.E8 C19EF1FF call 00402FE4
004E9123|.8D85 30FEFFFF lea eax, dword ptr
004E9129|.E8 529CF1FF call 00402D80
004E912E|.E8 E597F1FF call 00402918
004E9133|.BA 44934E00 mov edx, 004E9344 ;ASCII "15"
004E9138|.8D85 30FEFFFF lea eax, dword ptr
004E913E|.E8 59C2F1FF call 0040539C ;这里是写入试用次数15
004E9143|.E8 68A8F1FF call 004039B0
004E9148|.E8 CB97F1FF call 00402918
004E914D|.8D85 30FEFFFF lea eax, dword ptr
004E9153|.E8 08A0F1FF call 00403160
004E9158|.E8 BB97F1FF call 00402918
004E915D|.EB 60 jmp short 004E91BF
004E915F|>33D2 xor edx, edx
004E9161|.8B86 2C030000 mov eax, dword ptr
另外使用工具集里的还原功能,会用2次验证,代码如下:
004E3DE1|.8BC6 mov eax, esi
004E3DE3|.E8 8076F8FF call 0046B468
004E3DE8|.B1 01 mov cl, 1
004E3DEA|.BA 34424E00 mov edx, 004E4234 ;ASCII "Software\SafeBox"
004E3DEF|.8BC6 mov eax, esi
004E3DF1|.E8 B677F8FF call 0046B5AC
004E3DF6|.BA 50424E00 mov edx, 004E4250 ;ASCII "RegNo"
004E3DFB|.8BC6 mov eax, esi ;上面是读取注册表
004E3DFD|.E8 9A7EF8FF call 0046BC9C ;第一次验证
004E3E02|.84C0 test al, al
004E3E04|.75 24 jnz short 004E3E2A ;通过验证就跳走
004E3E06|.8BC6 mov eax, esi
004E3E08|.E8 3701F2FF call 00403F44
004E3E0D|.6A 00 push 0
004E3E0F|.B9 58424E00 mov ecx, 004E4258
004E3E14|.BA 64424E00 mov edx, 004E4264 ;本功能仅限注册用户使用!
004E3E19|.A1 C0CD4E00 mov eax, dword ptr
004E3E1E|.8B00 mov eax, dword ptr
004E3E20|.E8 5751F8FF call 00468F7C
004E3E25|.E9 BB030000 jmp 004E41E5
004E3E2A|>8D4D F8 lea ecx, dword ptr
004E3E2D|.BA 50424E00 mov edx, 004E4250 ;ASCII "RegNo"
004E3E32|.8BC6 mov eax, esi
004E3E34|.E8 CB7CF8FF call 0046BB04 ;再一次读取注册表
004E3E39|.8B45 F8 mov eax, dword ptr
004E3E3C|.50 push eax
004E3E3D|.6A 03 push 3
004E3E3F|.8D45 EC lea eax, dword ptr
004E3E42|.50 push eax
004E3E43|.B9 02000000 mov ecx, 2
004E3E48|.BA 01000000 mov edx, 1
004E3E4D|.8B45 FC mov eax, dword ptr
004E3E50|.E8 7FBDFEFF call 004CFBD4
004E3E55|.8B45 EC mov eax, dword ptr
004E3E58|.8D4D F0 lea ecx, dword ptr
004E3E5B|.BA 03000000 mov edx, 3
004E3E60|.E8 AFDCF5FF call 00441B14
004E3E65|.FF75 F0 push dword ptr
004E3E68|.6A 03 push 3
004E3E6A|.8D45 E4 lea eax, dword ptr
004E3E6D|.50 push eax
004E3E6E|.B9 02000000 mov ecx, 2
004E3E73|.BA 01000000 mov edx, 1
004E3E78|.8B45 FC mov eax, dword ptr
004E3E7B|.E8 F8BDFEFF call 004CFC78
004E3E80|.8B45 E4 mov eax, dword ptr
004E3E83|.8D4D E8 lea ecx, dword ptr
004E3E86|.BA 03000000 mov edx, 3
004E3E8B|.E8 A0DCF5FF call 00441B30
004E3E90|.FF75 E8 push dword ptr
004E3E93|.8D45 E0 lea eax, dword ptr
004E3E96|.50 push eax
004E3E97|.6A 03 push 3
004E3E99|.8D45 DC lea eax, dword ptr
004E3E9C|.50 push eax
004E3E9D|.B9 02000000 mov ecx, 2
004E3EA2|.BA 01000000 mov edx, 1
004E3EA7|.8B45 FC mov eax, dword ptr
004E3EAA|.E8 25BDFEFF call 004CFBD4
004E3EAF|.8B45 DC mov eax, dword ptr
004E3EB2|.B9 02000000 mov ecx, 2
004E3EB7|.BA 03000000 mov edx, 3
004E3EBC|.E8 93DCF5FF call 00441B54
004E3EC1|.FF75 E0 push dword ptr
004E3EC4|.8D45 F4 lea eax, dword ptr
004E3EC7|.BA 03000000 mov edx, 3
004E3ECC|.E8 7711F2FF call 00405048
004E3ED1|.8B55 F4 mov edx, dword ptr
004E3ED4|.58 pop eax
004E3ED5|.E8 F211F2FF call 004050CC ;第二次验证
004E3EDA|.74 24 je short 004E3F00 ;通过就跳走
004E3EDC|.8BC6 mov eax, esi
004E3EDE|.E8 6100F2FF call 00403F44
004E3EE3|.6A 00 push 0
004E3EE5|.B9 58424E00 mov ecx, 004E4258
004E3EEA|.BA 64424E00 mov edx, 004E4264 ;本功能仅限注册用户使用!
004E3EEF|.A1 C0CD4E00 mov eax, dword ptr
004E3EF4|.8B00 mov eax, dword ptr
004E3EF6|.E8 8150F8FF call 00468F7C
004E3EFB|.E9 E5020000 jmp 004E41E5
004E3F00|>8D55 D4 lea edx, dword ptr
004E3F03|.8B83 E8030000 mov eax, dword ptr
[ 本帖最后由 2005ljb 于 2009-9-10 16:09 编辑 ] 没人来指教一下么?还是大家都不在? 004E3ED5|.E8 F211F2FF call 004050CC ;第二次验证 进这个里面看看 是什么意思
004E3EDA|.74 24 je short 004E3F00 ;通过就跳走判断这个跳了没有啊
004E3EDC|.8BC6 mov eax, esi
004E3EDE|.E8 6100F2FF call 00403F44
004E3EE3|.6A 00 push 0
004E3EE5|.B9 58424E00 mov ecx, 004E4258
004E3EEA|.BA 64424E00 mov edx, 004E4264 ;本功能仅限注册用户使用!
004E3EEF|.A1 C0CD4E00 mov eax, dword ptr
004E3EF4|.8B00 mov eax, dword ptr
004E3EF6|.E8 8150F8FF call 00468F7C
004E3EFB|.E9 E5020000 jmp 004E41E5
004E3F00|>8D55 D4 lea edx, dword ptr
004E3F03|.8B83 E8030000 mov eax, dword ptr 004E3DBA|.55 PUSH EBP
004E3DBB|.68 1D424E00 PUSH _UnPacke.004E421D
004E3DC0|.64:FF30 PUSH DWORD PTR FS:
004E3DC3|.64:8920 MOV DWORD PTR FS:,ESP
004E3DC6|.8D45 FC LEA EAX,DWORD PTR SS:
004E3DC9|.E8 2EBDFEFF CALL _UnPacke.004CFAFC
004E3DCE|.B2 01 MOV DL,1
004E3DD0|.A1 C8B24600 MOV EAX,DWORD PTR DS:
004E3DD5|.E8 EE75F8FF CALL _UnPacke.0046B3C8
004E3DDA|.8BF0 MOV ESI,EAX
004E3DDC|.BA 01000080 MOV EDX,80000001
004E3DE1|.8BC6 MOV EAX,ESI
004E3DE3|.E8 8076F8FF CALL _UnPacke.0046B468
004E3DE8|.B1 01 MOV CL,1
004E3DEA|.BA 34424E00 MOV EDX,_UnPacke.004E4234 ;Software\SafeBox
004E3DEF|.8BC6 MOV EAX,ESI
004E3DF1|.E8 B677F8FF CALL _UnPacke.0046B5AC
004E3DF6|.BA 50424E00 MOV EDX,_UnPacke.004E4250 ;RegNo
004E3DFB|.8BC6 MOV EAX,ESI
004E3DFD|.E8 9A7EF8FF CALL _UnPacke.0046BC9C
004E3E02|.84C0 TEST AL,AL
004E3E04|.75 24 JNZ SHORT _UnPacke.004E3E2A
004E3E06|.8BC6 MOV EAX,ESI
004E3E08|.E8 3701F2FF CALL _UnPacke.00403F44
004E3E0D|.6A 00 PUSH 0
004E3E0F|.B9 58424E00 MOV ECX,_UnPacke.004E4258 ;私人保险箱
004E3E14|.BA 64424E00 MOV EDX,_UnPacke.004E4264 ;本功能仅限注册用户使用!
004E3E19|.A1 C0CD4E00 MOV EAX,DWORD PTR DS:
004E3E1E|.8B00 MOV EAX,DWORD PTR DS:
004E3E20|.E8 5751F8FF CALL _UnPacke.00468F7C
004E3E25|.E9 BB030000 JMP _UnPacke.004E41E5
004E3E2A|>8D4D F8 LEA ECX,DWORD PTR SS:
004E3E2D|.BA 50424E00 MOV EDX,_UnPacke.004E4250 ;RegNo
004E3E32|.8BC6 MOV EAX,ESI
004E3E34|.E8 CB7CF8FF CALL _UnPacke.0046BB04
004E3E39|.8B45 F8 MOV EAX,DWORD PTR SS:
004E3E3C|.50 PUSH EAX
004E3E3D|.6A 03 PUSH 3
004E3E3F|.8D45 EC LEA EAX,DWORD PTR SS:
004E3E42|.50 PUSH EAX
004E3E43|.B9 02000000 MOV ECX,2
004E3E48|.BA 01000000 MOV EDX,1
004E3E4D|.8B45 FC MOV EAX,DWORD PTR SS:
004E3E50|.E8 7FBDFEFF CALL _UnPacke.004CFBD4
004E3E55|.8B45 EC MOV EAX,DWORD PTR SS:
004E3E58|.8D4D F0 LEA ECX,DWORD PTR SS:
004E3E5B|.BA 03000000 MOV EDX,3
004E3E60|.E8 AFDCF5FF CALL _UnPacke.00441B14
004E3E65|.FF75 F0 PUSH DWORD PTR SS:
004E3E68|.6A 03 PUSH 3
004E3E6A|.8D45 E4 LEA EAX,DWORD PTR SS:
004E3E6D|.50 PUSH EAX
004E3E6E|.B9 02000000 MOV ECX,2
004E3E73|.BA 01000000 MOV EDX,1
004E3E78|.8B45 FC MOV EAX,DWORD PTR SS:
004E3E7B|.E8 F8BDFEFF CALL _UnPacke.004CFC78
004E3E80|.8B45 E4 MOV EAX,DWORD PTR SS:
004E3E83|.8D4D E8 LEA ECX,DWORD PTR SS:
004E3E86|.BA 03000000 MOV EDX,3
004E3E8B|.E8 A0DCF5FF CALL _UnPacke.00441B30
004E3E90|.FF75 E8 PUSH DWORD PTR SS:
004E3E93|.8D45 E0 LEA EAX,DWORD PTR SS:
004E3E96|.50 PUSH EAX
004E3E97|.6A 03 PUSH 3
004E3E99|.8D45 DC LEA EAX,DWORD PTR SS:
004E3E9C|.50 PUSH EAX
004E3E9D|.B9 02000000 MOV ECX,2
004E3EA2|.BA 01000000 MOV EDX,1
004E3EA7|.8B45 FC MOV EAX,DWORD PTR SS:
004E3EAA|.E8 25BDFEFF CALL _UnPacke.004CFBD4
004E3EAF|.8B45 DC MOV EAX,DWORD PTR SS: ; |真码ASCII "079@@O]p",本人的机器码是:ASCII "078BFBFF"
004E3EB2|.B9 02000000 MOV ECX,2 ; |注意ECX=2
004E3EB7|.BA 03000000 MOV EDX,3 ; |注意EDX=3
004E3EBC|.E8 93DCF5FF CALL _UnPacke.00441B54 ; \_UnPacke.00441B54
004E3EC1|.FF75 E0 PUSH DWORD PTR SS: ;第三位起,取2位即"9@"
004E3EC4|.8D45 F4 LEA EAX,DWORD PTR SS:
004E3EC7|.BA 03000000 MOV EDX,3
004E3ECC|.E8 7711F2FF CALL _UnPacke.00405048
004E3ED1|.8B55 F4 MOV EDX,DWORD PTR SS: ;把这两位码移到最后成了另一组码:ASCII "07@O]p9@",,写在RegNo里,就成功。004E3ED4|.58 POP EAX
004E3ED5|.E8 F211F2FF CALL _UnPacke.004050CC
004E3EDA|.74 24 JE SHORT _UnPacke.004E3F00
004E3EDC|.8BC6 MOV EAX,ESI
004E3EDE|.E8 6100F2FF CALL _UnPacke.00403F44
004E3EE3|.6A 00 PUSH 0
004E3EE5|.B9 58424E00 MOV ECX,_UnPacke.004E4258 ;私人保险箱
004E3EEA|.BA 64424E00 MOV EDX,_UnPacke.004E4264 ;本功能仅限注册用户使用!
软件的限制相对比较多,没深入再分析。
根据程序一段算法代码段,我用KeyMake写了一个算法注册机,供大家交流,引用请保存内容完整性:
数据段:szHomePage db "https://www.chinapyg.com/",0
szEmail db "mailto:[email protected]",0
szErrMessdb "输入的序列号不正确!",0
hKey db 8 dup(0)
;Code By WildCatIII 20090929
;KeyGen For 私人保险箱 6.48代码段:MOV ,EAX;预存机器码到中
MOV EBX,EAX
invoke lstrlen,EBX;取得机器码的位数
MOV EDX,1;同004E4B2F,接着进入算法CALL
MOV ESI,EDX
CMP EAX,8 ;机器码位数检测,是否为8位
JNZ Err;位数不对,跳错。
XOR EBX,EBX
MOV BYTE PTR SS:,AL;位数放同004CFC0E
MOV BL,1
MOV DWORD PTR SS:,0;初始为0,加H表示16进制
MOV DWORD PTR SS:,2
MOV DWORD PTR SS:,3
MOV EDI,1 ;初始EDI,做为hKey存放注册码的指针用
;以下照抄004CFC16-004CFC26代码段
AT004CFC13:
LEA EAX,DWORD PTR SS:
XOR EDX,EDX ;EDX清零
MOV DL,BL ;计数放DL
MOV ECX,DWORD PTR SS: ;机器码
MOV DL,BYTE PTR DS: ;逐位取
MOV ECX,ESI ;ECX=ESI
SHR ECX,8 ;ECX右移8位
XOR DL,CL ;DL与CL异或,结果设为Str1
MOV BYTE PTR ,DL ;把它逐个放到hKey里,最终成为注册码
INC EDI ;EDI指针+1,指向下一位存放位置
XOR EAX,EAX ;XOR EAX
MOV AL,DL ;AL=DL
ADD ESI,EAX ;ESI+EAX,当前位数加上Str1,设为Str2
IMUL ESI,DWORD PTR SS: ;Str2乘以定值2
ADD ESI,DWORD PTR SS: ;再加上定值3,结果设为Str3,以备循环使用
INC EBX ;EBX+1
DEC BYTE PTR SS: ;位数-1,指向下一位机器码
JNZ AT004CFC13 ;重复
LEA EAX,hKey ; 由EAX指向注册码hKey
JMP Show
Err:
LEA EAX,szErrMess ;机器码位数不对,由EAX指向错误提示
Show:
NOP ;
[ 本帖最后由 野猫III 于 2009-9-29 15:02 编辑 ] 猫老师又出来了哈, 猫兄很强大膜拜已久啊 猫闭关这么久该出来晒晒太阳了,呵 就是强大/:010 猫兄出山了吧 感谢猫老大的指点,不过有点小问题,就是在功能限制的第2次验证那里,不是把3,4位简单的移到最后,是先取前3位,然后把3,4位移到最后,再把第5位删除,最后把前3位放在最前面,这样才能通过验证。我的机器码是178BFBFF,注册码是179@@O]q,通过那个验证的注册码是
179O]q9@。我不确定软件是否完全按照我上面的步骤来得到最后的注册码的,因为看到先取了前3位,后来又看到了明码,所以这样推测,删除第5位这一步没跟出来,功力有限。。。。
非常感谢猫老大用keymake写注册机的教程,以前在网上搜索过,只看到软件自带那个例子,不是很懂,现在猫老的连着发了几篇,好好消化一下。
页:
[1]
2