016F:0057B701 8D45F4 LEA EAX,[EBP-0C]
016F:0057B704 8B55F0 MOV EDX,[EBP-10]
016F:0057B707 E8A488E8FF CALL 00403FB0
016F:0057B70C 8B45F4 MOV EAX,[EBP-0C]
016F:0057B70F E8848AE8FF CALL 00404198
016F:0057B714 8BF0 MOV ESI,EAX
016F:0057B716 85F6 TEST ESI,ESI
016F:0057B718 0F8E0D010000 JNG NEAR 0057B82B
016F:0057B71E BB01000000 MOV EBX,01
//赋值1
016F:0057B723 8B45F4 MOV EAX,[EBP-0C]
016F:0057B726 807C18FF41 CMP BYTE [EAX+EBX-01],41
// 比较这个地方的字符是否等于ASCII*41 (A)
// 如果是的话就到下面换成ASCII*37 (1)
016F:0057B72B 750D JNZ 0057B73A
016F:0057B72D 8D45F4 LEA EAX,[EBP-0C]
016F:0057B730 E8338CE8FF CALL 00404368
016F:0057B735 C64418FF31 MOV BYTE [EAX+EBX-01],31
// 是A的话就换成1
016F:0057B73A 8B45F4 MOV EAX,[EBP-0C]
016F:0057B73D 807C18FF43 CMP BYTE [EAX+EBX-01],43
// 比较这个地方的字符是否等于ASCII*43 (C)
// 如果是的话就到下面换成ASCII*32 (2)
016F:0057B742 750D JNZ 0057B751
016F:0057B744 8D45F4 LEA EAX,[EBP-0C]
016F:0057B747 E81C8CE8FF CALL 00404368
016F:0057B74C C64418FF32 MOV BYTE [EAX+EBX-01],32
// 是C的话就换成2
016F:0057B751 8B45F4 MOV EAX,[EBP-0C]
016F:0057B754 807C18FF44 CMP BYTE [EAX+EBX-01],44
// 比较这个地方的字符是否等于ASCII*44 (D)
// 如果是的话就到下面换成ASCII*33 (3)
016F:0057B759 750D JNZ 0057B768
016F:0057B75B 8D45F4 LEA EAX,[EBP-0C]
016F:0057B75E E8058CE8FF CALL 00404368
016F:0057B763 C64418FF33 MOV BYTE [EAX+EBX-01],33
// 是D的话就换成3
016F:0057B768 8B45F4 MOV EAX,[EBP-0C]
016F:0057B76B 807C18FF46 CMP BYTE [EAX+EBX-01],46
// 比较这个地方的字符是否等于ASCII*46 (F)
// 如果是的话就到下面换成ASCII*32 (2)
016F:0057B770 750D JNZ 0057B77F
016F:0057B772 8D45F4 LEA EAX,[EBP-0C]
016F:0057B775 E8EE8BE8FF CALL 00404368
016F:0057B77A C64418FF32 MOV BYTE [EAX+EBX-01],32
// 是F的话就换成2
016F:0057B77F 8B45F4 MOV EAX,[EBP-0C]
016F:0057B782 807C18FF42 CMP BYTE [EAX+EBX-01],42
// 比较这个地方的字符是否等于ASCII*42 (B)
// 如果是的话就到下面换成ASCII*36 (6)
016F:0057B787 750D JNZ 0057B796
016F:0057B789 8D45F4 LEA EAX,[EBP-0C]
016F:0057B78C E8D78BE8FF CALL 00404368
016F:0057B791 C64418FF36 MOV BYTE [EAX+EBX-01],36
// 是B的话就换成6
016F:0057B796 8B45F4 MOV EAX,[EBP-0C]
016F:0057B799 807C18FF45 CMP BYTE [EAX+EBX-01],45
// 比较这个地方的字符是否等于ASCII*45 (E)
// 如果是的话就到下面换成ASCII*36 (6)
016F:0057B79E 750D JNZ 0057B7AD
016F:0057B7A0 8D45F4 LEA EAX,[EBP-0C]
016F:0057B7A3 E8C08BE8FF CALL 00404368
016F:0057B7A8 C64418FF36 MOV BYTE [EAX+EBX-01],36
// 是E的话就换成6
016F:0057B7AD 8B45F4 MOV EAX,[EBP-0C]
016F:0057B7B0 807C18FF48 CMP BYTE [EAX+EBX-01],48
// 比较这个地方的字符是否等于ASCII*48 (H)
// 如果是的话就到下面换成ASCII*34 (4)
016F:0057B7B5 750D JNZ 0057B7C4
016F:0057B7B7 8D45F4 LEA EAX,[EBP-0C]
016F:0057B7BA E8A98BE8FF CALL 00404368
016F:0057B7BF C64418FF34 MOV BYTE [EAX+EBX-01],34
// 是H的话就换成4
016F:0057B7C4 8B45F4 MOV EAX,[EBP-0C]
016F:0057B7C7 807C18FF30 CMP BYTE [EAX+EBX-01],30
// 比较这个地方的字符是否等于ASCII*30 (0)
// 如果是的话就到下面换成ASCII*38 (8)
016F:0057B7CC 750D JNZ 0057B7DB
016F:0057B7CE 8D45F4 LEA EAX,[EBP-0C]
016F:0057B7D1 E8928BE8FF CALL 00404368
016F:0057B7D6 C64418FF38 MOV BYTE [EAX+EBX-01],38
// 是0的话就换成8
016F:0057B7DB 8B45F4 MOV EAX,[EBP-0C]
016F:0057B7DE 807C18FF47 CMP BYTE [EAX+EBX-01],47
// 比较这个地方的字符是否等于ASCII*47 (G)
// 如果是的话就到下面换成ASCII*33 (3)
016F:0057B7E3 750D JNZ 0057B7F2
016F:0057B7E5 8D45F4 LEA EAX,[EBP-0C]
016F:0057B7E8 E87B8BE8FF CALL 00404368
016F:0057B7ED C64418FF33 MOV BYTE [EAX+EBX-01],33
// 是G的话就换成3
016F:0057B7F2 8B45F4 MOV EAX,[EBP-0C]
016F:0057B7F5 807C18FF4B CMP BYTE [EAX+EBX-01],4B
// 比较这个地方的字符是否等于ASCII*4B (K)
// 如果是的话就到下面换成ASCII*37 (7)
016F:0057B7FA 750D JNZ 0057B809
016F:0057B7FC 8D45F4 LEA EAX,[EBP-0C]
016F:0057B7FF E8648BE8FF CALL 00404368
016F:0057B804 C64418FF37 MOV BYTE [EAX+EBX-01],37
// 是K的话就换成7
016F:0057B809 8D45D0 LEA EAX,[EBP-30]
016F:0057B80C 8B55F4 MOV EDX,[EBP-0C]
016F:0057B80F 8A541AFF MOV DL,[EDX+EBX-01]
016F:0057B813 E8A888E8FF CALL 004040C0
016F:0057B818 8B55D0 MOV EDX,[EBP-30]
016F:0057B81B 8D45EC LEA EAX,[EBP-14]
016F:0057B81E E87D89E8FF CALL 004041A0
016F:0057B823 43 INC EBX
016F:0057B824 4E DEC ESI
016F:0057B825 0F85F8FEFFFF JNZ NEAR 0057B723
// 跳回去继续
// 这里是把0057B6F9处EAX指向地址的值
// 把这些值的A/C/D/F/B/E/H/0/G/K/
// 转换成相对应的数字1/2/3/2/6/6/4/8/3/7/
016F:0057B82B 8B45F8 MOV EAX,[EBP-08]
016F:0057B82E 8B55EC MOV EDX,[EBP-14]
// 哈哈,这里就是真的注册码,真难炼!
016F:0057B831 E83687E8FF CALL 00403F6C
016F:0057B836 33C0 XOR EAX,EAX
016F:0057B838 5A POP EDX
016F:0057B839 59 POP ECX
016F:0057B83A 59 POP ECX
------------------------------------------------------------------
【总 结】:
内存注册机:
中断地址:00572859
中断次数:1
第一字节:E8
字节长度:5
注册码-->寄存器-->EAX
注册信息保存在注册表的:
[HKEY_USERS\.DEFAULT\Identities\More]
"Passwd"="112193626115776466717169132261"
"UsrName"="Yock"
删除就变成未注册!
------------------------------------------------------------------
算法:由于我的语文水平有限,表达得不好,请原谅!
(一下全是16进制数的运算)
用户名的字符依次覆盖到(sef1sn8y3420dnu2ofps)上面,如果用户名是Yock(4位),那么就变成了(Yocksn8y3420dnu2ofps)
再取(Yocksn8y3420dnu2ofps)前面的15[机器码的位数]位!
[ 机器码是PY-C9183234-2FA(15位), 那么取前面15位的话,就变成了Yocksn8y3420dnu ]
[ 假如机器码某一位是ASCII*41=A的话就变成ASCII*66=f来运算! ]
之后Yocksn8y3420dnu的每一位的ASCII码和机器码的每一位ASCII码对应加在一起,再加上机器码当前位的位数!
最后把上面的结果依次连在一起!
连再一起的值的每一位要是等于A/C/D/F/B/E/H/0/G/K/的话,就把它们转换成相对应的数字1/2/3/2/6/6/4/8/3/7/
[ 也就是下面这样 ]
A/C/D/F/B/E/H/0/G/K/
转换成:
1/2/3/2/6/6/4/8/3/7/
最后的结果就是真的注册码了!
-------------------------------------------------------------------
最后在这里真心感谢你花了那么多时间看这篇文章!谢谢了...
|