【破文作者】lnn1123
【文章题目】flashtools算法分析
【软件名称】flashtools
【加密方式】注册码
【破解工具】OD,PEID
【破解平台】winxp
=======================================================================================================
【软件简介】
一个可以把.exe文件转化为flash文件,也可以把flash文件转化为.exe文件
=======================================================================================================
【文章简介】
算法很简单,但是我刚开始的时候被它弄的满昏的
=======================================================================================================
【解密过程】
软件是用UPX加的壳,很容易脱的,省略...
验证注册码的方式是重新启动验证.ini文件,输入注册码后并不立刻进行注册码的验证,而是把注册信息下进注册文件Reg.ini中(它不通知你注 册码是下次重新启动比较的),等下次重新启动软件的时候进行比较注册成功是否,所以输入注册码后,重新启动软件下断
bpx GetPrivateProfileStringA
停在这里:
0044C098 E8 C3A6FBFF CALL <JMP.&kernel32.GetPrivateProfileStr>
0044C09D 8BC8 MOV ECX,EAX ; EAX为读取regcode 的位数
0044C09F 8D95 00F8FFFF LEA EDX,DWORD PTR SS:[EBP-800] ; regcode
0044C0A5 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0044C0A8 E8 437CFBFF CALL 1_.00403CF0
跟一下到这里:
0044C7E8 53 PUSH EBX
0044C7E9 56 PUSH ESI
0044C7EA 57 PUSH EDI
0044C7EB 33C0 XOR EAX,EAX
0044C7ED 55 PUSH EBP
0044C7EE 68 C9C84400 PUSH 1_.0044C8C9
0044C7F3 64:FF30 PUSH DWORD PTR FS:[EAX]
0044C7F6 64:8920 MOV DWORD PTR FS:[EAX],ESP
0044C7F9 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
0044C7FC A1 B4BB4600 MOV EAX,DWORD PTR DS:[46BBB4]
0044C801 8B00 MOV EAX,DWORD PTR DS:[EAX]
0044C803 E8 BCC1FFFF CALL 1_.004489C4
0044C808 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
0044C80B 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
0044C80E E8 D1BFFBFF CALL 1_.004087E4
0044C813 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0044C813 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0044C816 BA E4C84400 MOV EDX,1_.0044C8E4 ; ASCII "Reg.ini"
0044C81B E8 7076FBFF CALL 1_.00403E90
0044C820 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C]
0044C823 B2 01 MOV DL,1
0044C825 A1 90B94400 MOV EAX,DWORD PTR DS:[44B990]
0044C82A E8 09F2FFFF CALL 1_.0044BA38
0044C82F 8BD8 MOV EBX,EAX
0044C831 6A 00 PUSH 0
0044C833 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0044C836 50 PUSH EAX
0044C837 B9 F4C84400 MOV ECX,1_.0044C8F4 ; ASCII "RegCode"
0044C83C BA 04C94400 MOV EDX,1_.0044C904 ; ASCII "Reg"
0044C841 8BC3 MOV EAX,EBX
0044C843 8B30 MOV ESI,DWORD PTR DS:[EAX]
0044C845 FF16 CALL DWORD PTR DS:[ESI]
0044C847 8BC3 MOV EAX,EBX ; 返回到这里
0044C849 E8 AE66FBFF CALL 1_.00402EFC
0044C84E 33C0 XOR EAX,EAX
0044C850 55 PUSH EBP
0044C851 68 76C84400 PUSH 1_.0044C876
0044C856 64:FF30 PUSH DWORD PTR FS:[EAX]
0044C859 64:8920 MOV DWORD PTR FS:[EAX],ESP
0044C85C 8D4D F8 LEA ECX,DWORD PTR SS:[EBP-8]
0044C85F BA 10C94400 MOV EDX,1_.0044C910 ; ASCII "lovejingtao"
0044C864 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; regcode
0044C867 E8 E4FDFFFF CALL 1_.0044C650 ; 这里是计算注册码过程
0044C86C 33C0 XOR EAX,EAX
0044C86E 5A POP EDX
0044C86F 59 POP ECX
0044C870 59 POP ECX
0044C871 64:8910 MOV DWORD PTR FS:[EAX],EDX
0044C874 EB 0A JMP SHORT 1_.0044C880
0044C876 ^E9 ED6AFBFF JMP 1_.00403368
0044C87B E8 446EFBFF CALL 1_.004036C4
0044C880 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
0044C883 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; CPUID
0044C886 E8 A5BAFBFF CALL 1_.00408330
0044C88B 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
0044C88E 50 PUSH EAX
0044C88F 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
0044C892 E8 C1FCFFFF CALL 1_.0044C558
0044C897 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C] ; CPUID
0044C89A 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
0044C89D E8 8EBAFBFF CALL 1_.00408330
0044C8A2 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
0044C8A5 58 POP EAX ; 弹出
0044C8A6 E8 ED76FBFF CALL 1_.00403F98 ; 比较注册码
0044C8AB 0F94C3 SETE BL ; 等与时BL置1
0044C8AE 33C0 XOR EAX,EAX ; 清0
0044C8B0 5A POP EDX
0044C8B1 59 POP ECX
0044C8B2 59 POP ECX
0044C8B3 64:8910 MOV DWORD PTR FS:[EAX],EDX
0044C8B6 68 D0C84400 PUSH 1_.0044C8D0
0044C8BB 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
0044C8BE BA 07000000 MOV EDX,7
0044C8C3 E8 6473FBFF CALL 1_.00403C2C
0044C8C8 C3 RETN
0044C8C8后返回到这里
00469407 C3 RETN
00469408 55 PUSH EBP
00469409 8BEC MOV EBP,ESP
0046940B 6A 00 PUSH 0
0046940D 6A 00 PUSH 0
0046940F 53 PUSH EBX
00469410 8BD8 MOV EBX,EAX
00469412 33C0 XOR EAX,EAX
00469414 55 PUSH EBP
00469415 68 B9944600 PUSH 1_.004694B9
0046941A 64:FF30 PUSH DWORD PTR FS:[EAX]
0046941D 64:8920 MOV DWORD PTR FS:[EAX],ESP
00469420 E8 B733FEFF CALL 1_.0044C7DC
00469425 84C0 TEST AL,AL ; 标志位测试,注册成功?
00469427 75 42 JNZ SHORT 1_.0046946B
=====================================CALL 1_.0044C650===============================================
0044C650 55 PUSH EBP
0044C651 8BEC MOV EBP,ESP
0044C653 83C4 D0 ADD ESP,-30
0044C656 53 PUSH EBX
0044C657 56 PUSH ESI
0044C658 57 PUSH EDI
0044C659 33DB XOR EBX,EBX
0044C65B 895D D0 MOV DWORD PTR SS:[EBP-30],EBX
0044C65E 895D D8 MOV DWORD PTR SS:[EBP-28],EBX
0044C661 895D D4 MOV DWORD PTR SS:[EBP-2C],EBX
0044C664 895D E0 MOV DWORD PTR SS:[EBP-20],EBX
0044C667 895D DC MOV DWORD PTR SS:[EBP-24],EBX
0044C66A 895D E8 MOV DWORD PTR SS:[EBP-18],EBX
0044C66D 894D F4 MOV DWORD PTR SS:[EBP-C],ECX
0044C670 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX ; 1_.0044C910
0044C673 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
0044C676 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0044C679 E8 BE79FBFF CALL 1_.0040403C
0044C67E 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0044C681 E8 B679FBFF CALL 1_.0040403C
0044C686 33C0 XOR EAX,EAX
0044C688 55 PUSH EBP
0044C689 68 ADC74400 PUSH 1_.0044C7AD
0044C68E 64:FF30 PUSH DWORD PTR FS:[EAX]
0044C691 64:8920 MOV DWORD PTR FS:[EAX],ESP
0044C694 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; lovejingtao
0044C697 E8 EC77FBFF CALL 1_.00403E88
0044C69C 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
0044C69F 837D F0 00 CMP DWORD PTR SS:[EBP-10],0
0044C6A3 75 0D JNZ SHORT 1_.0044C6B2
0044C6A5 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
0044C6A8 BA C4C74400 MOV EDX,1_.0044C7C4 ; ASCII "Think Space"
0044C6AD E8 EE75FBFF CALL 1_.00403CA0
0044C6B2 33FF XOR EDI,EDI
0044C6B4 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
0044C6B7 50 PUSH EAX
0044C6B8 B9 02000000 MOV ECX,2
0044C6BD BA 01000000 MOV EDX,1
0044C6C2 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0044C6C5 E8 C679FBFF CALL 1_.00404090 ; 取regcode的2位
0044C6CA 8B4D DC MOV ECX,DWORD PTR SS:[EBP-24] ; 得到的数
0044C6CD 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
0044C6D0 BA D8C74400 MOV EDX,1_.0044C7D8
0044C6D5 E8 FA77FBFF CALL 1_.00403ED4 ; 加上 "$"号
0044C6DA 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
0044C6DD E8 3ABEFBFF CALL 1_.0040851C ; 转化为16进制记为a
0044C6E2 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
0044C6E5 BE 03000000 MOV ESI,3
0044C6EA 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
0044C6ED 50 PUSH EAX
0044C6EE B9 02000000 MOV ECX,2
0044C6F3 8BD6 MOV EDX,ESI
0044C6F5 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; regcode
0044C6F8 E8 9379FBFF CALL 1_.00404090 ; 取regcode2位
0044C6FD 8B4D D4 MOV ECX,DWORD PTR SS:[EBP-2C]
0044C700 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
0044C703 BA D8C74400 MOV EDX,1_.0044C7D8
0044C708 E8 C777FBFF CALL 1_.00403ED4
0044C70D 8B45 D8 MOV EAX,DWORD PTR SS:[EBP-28]
0044C710 E8 07BEFBFF CALL 1_.0040851C ; 转化为16进制
0044C715 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX ; EAX为转化的值,记为b
0044C718 3B7D F0 CMP EDI,DWORD PTR SS:[EBP-10]
0044C71B 7D 03 JGE SHORT 1_.0044C720
0044C71D 47 INC EDI
0044C71E EB 05 JMP SHORT 1_.0044C725
0044C720 BF 01000000 MOV EDI,1
0044C725 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; lovejingtao
0044C728 33DB XOR EBX,EBX
0044C72A 8A5C38 FF MOV BL,BYTE PTR DS:[EAX+EDI-1] ; 取字符"lovejingtao"的一个字节
0044C72E 335D E4 XOR EBX,DWORD PTR SS:[EBP-1C] ; ebx=ebx xor b
0044C731 3B5D EC CMP EBX,DWORD PTR SS:[EBP-14] ; cmp ebx,a
0044C734 7F 0B JG SHORT 1_.0044C741 ; 大于跳
0044C736 81C3 FF000000 ADD EBX,0FF ; ebx=ebx+0xff
0044C73C 2B5D EC SUB EBX,DWORD PTR SS:[EBP-14] ; ebx=ebx-a
0044C73F EB 03 JMP SHORT 1_.0044C744
0044C741 2B5D EC SUB EBX,DWORD PTR SS:[EBP-14] ; ebx=ebx-a
0044C744 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-30] ; lovejingtao
0044C747 8BD3 MOV EDX,EBX ; 得到的值到EDX
0044C749 E8 6276FBFF CALL 1_.00403DB0
0044C74E 8B55 D0 MOV EDX,DWORD PTR SS:[EBP-30]
0044C751 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
0044C754 E8 3777FBFF CALL 1_.00403E90
0044C759 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]
0044C75C 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
0044C75F 83C6 02 ADD ESI,2
0044C762 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; regcode
0044C765 E8 1E77FBFF CALL 1_.00403E88
0044C76A 3BF0 CMP ESI,EAX ; 是否转化结束
0044C76C ^0F8C 78FFFFFF JL 1_.0044C6EA
0044C772 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0044C775 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
0044C778 E8 DF74FBFF CALL 1_.00403C5C
0044C77D 33C0 XOR EAX,EAX
0044C77F 5A POP EDX
0044C780 59 POP ECX
0044C781 59 POP ECX
0044C782 64:8910 MOV DWORD PTR FS:[EAX],EDX
0044C785 68 B4C74400 PUSH 1_.0044C7B4
0044C78A 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-30]
0044C78D BA 05000000 MOV EDX,5
0044C792 E8 9574FBFF CALL 1_.00403C2C
0044C797 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
0044C79A E8 6974FBFF CALL 1_.00403C08
0044C79F 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
0044C7A2 BA 02000000 MOV EDX,2
0044C7A7 E8 8074FBFF CALL 1_.00403C2C
0044C7AC C3 RETN
0044C7AD ^E9 6A6EFBFF JMP 1_.0040361C
0044C7B2 ^EB D6 JMP SHORT 1_.0044C78A
0044C7B4 5F POP EDI
0044C7B5 5E POP ESI
0044C7B6 5B POP EBX
0044C7B7 8BE5 MOV ESP,EBP
0044C7B9 5D POP EBP
最后的注册码:
CPUID:00010FF00000080000000000078BFBFF
[Reg]
RegCode=005CE362F64DFA2F381C2D320E51FF55EF49172024350A56E96CC694BF68CD60C7(算法很简单,注册码这么长,把我算死了)
UserName=lnn1123
软件采用CPUID与根据regcode算出的注册码比较,不是明码比较,注册码的计算过程很烦的,因为注册最后与CPUID比较,应该每台机器注册码都不
一样的
=======================================================================================================
【解密心得】
=======================================================================================================
【破解声明】我是一个小小菜虫子,文章如有错误,请高手指正!
【版权声明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
=======================================================================================================
文章完成于2005-12-1 欣雲网吧 18:01:34