- UID
- 45135
注册时间2008-2-10
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 怒 2017-7-19 15:45 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
【破解作者】 yayazhi
【作者邮箱】 [email protected]
【使用工具】 TheOD,ImportREC v1.7c,PEiD0.94
【破解平台】 WinXP SP3
【破解软件】 Falco Icon Studio v3.2
【软件介绍】 Falco.Icon.Studio是一款非常方便的图标制作和编辑工具,v3.2版拥有全新的用户界面,使工作流程简单化和工作区域安排更加合理;还具有非常容易上手的图形界面
【保护方式】 EXECryptor壳,注册码
【破解声明】 我是一只小菜鸟,偶得一点经验愿与大家分享,失误之处敬请各位大侠多多指教
================================================================================
一、脱壳
================================================================================
1.侦壳:用PEiD查壳 EXECryptor V2.2X-V2.4X -> StrongBit Technology * Sign.By.fly *
2.设置好OD及其插件,载入
7C92120F C3 retn<---------停在这里
7C921210 8BFF mov edi, edi
7C921212 > CC int3
7C921213 C3 retn
7C921214 8BFF mov edi, edi
7C921216 8B4424 04 mov eax, dword ptr ss:[esp+4]
7C92121A CC int3
7C92121B C2 0400 retn 4
7C92121E > 64:A1 18000000 mov eax, dword ptr fs:[18]
7C921224 C3 retn
7C921225 > 57 push edi
7C921226 8B7C24 0C mov edi, dword ptr ss:[esp+C]
Alt+M打开内存镜像
地址 大小 ? 物主 区段 包含
0051E000 00001000 Falco_Ic dmoa1e5l
0051F000 0000D000 Falco_Ic .jasq.d2
005B0000 00084000 Falco_Ic hhio8mvc code,imports<---------下内存写入断点
Shift+F9
005ACFA1 E8 CDFFFFFF call Falco_Ic.005ACF73
005ACFA6 ^ 72 F2 jb short Falco_Ic.005ACF9A
005ACFA8 C3 retn
005ACFA9 8BE5 mov esp, ebp
005ACFAB 5D pop ebp
005ACFAC C3 retn<---------清除内存断点,F2,Shift+F9两次,取消断点
打开内存code段下段,Shift+F9,
0052C13E AC lods byte ptr ds:[esi]<---------走到这里
0052C13F D0E8 shr al, 1
0052C141 80F8 74 cmp al, 74
0052C144 75 0E jnz short Falco_Ic.0052C154
0052C146 8B06 mov eax, dword ptr ds:[esi]
0052C148 0FC8 bswap eax
0052C14A 01C8 add eax, ecx
0052C14C 8906 mov dword ptr ds:[esi], eax
0052C14E 83C6 04 add esi, 4
0052C151 83E9 04 sub ecx, 4
0052C154 49 dec ecx
0052C155 ^ 7F E7 jg short Falco_Ic.0052C13E
0052C157 59 pop ecx
0052C158 5E pop esi
0052C159 C3 retn<---------F2,Shift+F9,取消断点,
再次打开内存code段下段,Shift+F9加到OEP了。
004841EC E8 AD6A0000 call Falco_Ic.0048AC9E<---------OEP
004841F1 ^ E9 17FEFFFF jmp Falco_Ic.0048400D
004841F6 55 push ebp
004841F7 8BEC mov ebp, esp
004841F9 56 push esi
004841FA 8B75 14 mov esi, dword ptr ss:[ebp+14]
004841FD 57 push edi
004841FE 33FF xor edi, edi
00484200 3BF7 cmp esi, edi
00484202 75 04 jnz short Falco_Ic.00484208
00484204 33C0 xor eax, eax
00484206 EB 65 jmp short Falco_Ic.0048426D
3.OD插件脱壳,把重建输入表取消选择,运行importREC修复指针。Fixdump。
================================================================================
二、破解
================================================================================
第一种方法:
1.单步跟踪软件,遇到软件运行的call就进。
0049BE45 /74 2A je short 0_.0049BE71
0049BE47 |8B06 mov eax, dword ptr ds:[esi]
0049BE49 |8BCE mov ecx, esi
0049BE4B |FF50 50 call dword ptr ds:[eax+50] ; 第一次F7进
0049BE4E |85C0 test eax, eax
0049BE50 |75 16 jnz short 0_.0049BE68
0049BE52 |3946 20 cmp dword ptr ds:[esi+20], eax
================================================================================
00409C69 68 0080CF00 push 0CF8000
00409C6E 68 80000000 push 80
00409C73 8BCF mov ecx, edi
00409C75 FFD2 call edx ; 第二次F7进
00409C77 85C0 test eax, eax
00409C79 0F84 CB000000 je 0_.00409D4A
00409C7F 8D4C24 20 lea ecx, dword ptr ss:[esp+20]
00409C83 897E 20 mov dword ptr ds:[esi+20], edi
00409C86 E8 C9940500 call 0_.00463154
================================================================================
0045AC0D C645 FC 01 mov byte ptr ss:[ebp-4], 1
0045AC11 FF75 F0 push dword ptr ss:[ebp-10]
0045AC14 FF75 EC push dword ptr ss:[ebp-14]
0045AC17 FF90 34010000 call dword ptr ds:[eax+134] ; 第三次F7进
0045AC1D 85C0 test eax, eax
0045AC1F 75 20 jnz short 0_.0045AC41
0045AC21 8B4D F0 mov ecx, dword ptr ss:[ebp-10]
0045AC24 83C1 F0 add ecx, -10
0045AC27 E8 846FFAFF call 0_.00401BB0
0045AC2C 8B4D 08 mov ecx, dword ptr ss:[ebp+8]
================================================================================
0045AD2F FF75 08 push dword ptr ss:[ebp+8]
0045AD32 FF75 20 push dword ptr ss:[ebp+20]
0045AD35 FF57 5C call dword ptr ds:[edi+5C] ; 第四次F7进
0045AD38 85C0 test eax, eax
0045AD3A 5B pop ebx
0045AD3B 75 10 jnz short 0_.0045AD4D
0045AD3D 3945 FC cmp dword ptr ss:[ebp-4], eax
0045AD40 ^ 74 9F je short 0_.0045ACE1
0045AD42 FF75 FC push dword ptr ss:[ebp-4]
================================================================================
0042F06E 8B48 04 mov ecx, dword ptr ds:[eax+4]
0042F071 8DBE 0C080000 lea edi, dword ptr ds:[esi+80C]
0042F077 894C24 10 mov dword ptr ss:[esp+10], ecx
0042F07B E8 D0530000 call 0_.00434450 ; 第五次F7进
0042F080 8B5424 10 mov edx, dword ptr ss:[esp+10]
0042F084 8B86 D0030000 mov eax, dword ptr ds:[esi+3D0]
0042F08A 389A 18010000 cmp byte ptr ds:[edx+118], bl
0042F090 8B90 68010000 mov edx, dword ptr ds:[eax+168]
====================================================================================
00434644 837F 04 00 cmp dword ptr ds:[edi+4], 0
00434648 0F85 4E010000 jnz 0_.0043479C ;
0043464E 8D5424 24 lea edx, dword ptr ss:[esp+24]
00434652 52 push edx
00434653 FF15 A8444A00 call dword ptr ds:[<&kernel32.GetSystemT>; 关键!!!!时间函数
00434659 8B35 A4444A00 mov esi, dword ptr ds:[<&kernel32.System>; kernel32.SystemTimeToFileTime
0043465F 8D4424 14 lea eax, dword ptr ss:[esp+14]
00434663 50 push eax
=====================================================================================
0043468F 68 00C0692A push 2A69C000
00434694 52 push edx
00434695 51 push ecx
00434696 E8 05230500 call 0_.004869A0
0043469B 8BF0 mov esi, eax
0043469D 83FE 1E cmp esi, 1E ; 关键时间1E=30
004346A0 7D 16 jge short 0_.004346B8 ; 大于30就跳走了
004346A2 E8 92760200 call 0_.0045BD39
004346A7 8B48 04 mov ecx, dword ptr ds:[eax+4]
004346AA 81C1 A4000000 add ecx, 0A4
破解方法:十六进制1E等于十进制的30,我们可以把1E改成更大的数,也可以把jge给nop掉。
================================================================================
第二种方法:
================================================================================
F12暂停法
找到这里
004340FF 8B9424 2C010000 mov edx, dword ptr ss:[esp+12C]
00434106 52 push edx
00434107 E8 3E100500 call unpacked.0048514A
0043410C 8B8C24 50010000 mov ecx, dword ptr ss:[esp+150]
00434113 83C4 04 add esp, 4
00434116 50 push eax
00434117 E8 84010000 call unpacked.004342A0 ; 关键callF7进
0043411C 85C0 test eax, eax
0043411E 0F84 40010000 je unpacked.00434264
00434124 8B8424 2C010000 mov eax, dword ptr ss:[esp+12C]
到这里---算法部分
004342A0 81EC 18020000 sub esp, 218
004342A6 A1 38BC4C00 mov eax, dword ptr ds:[4CBC38]
004342AB 33C4 xor eax, esp
004342AD 898424 14020000 mov dword ptr ss:[esp+214], eax
004342B4 DD05 70714B00 fld qword ptr ds:[4B7170]
004342BA 53 push ebx
004342BB 56 push esi
004342BC 8BF1 mov esi, ecx
004342BE E8 2D7D0600 call unpacked.0049BFF0
004342C3 D95C24 0C fstp dword ptr ss:[esp+C]
004342C7 8B0D F0094D00 mov ecx, dword ptr ds:[4D09F0]
004342CD D94424 0C fld dword ptr ss:[esp+C]
004342D1 B8 83DE1B43 mov eax, 431BDE83
004342D6 F7E1 mul ecx
004342D8 C1EA 13 shr edx, 13
004342DB 69D2 80841E00 imul edx, edx, 1E8480
004342E1 2BCA sub ecx, edx
004342E3 85C9 test ecx, ecx
004342E5 894C24 0C mov dword ptr ss:[esp+C], ecx
004342E9 DB4424 0C fild dword ptr ss:[esp+C]
004342ED 7D 06 jge short unpacked.004342F5
004342EF D805 68714B00 fadd dword ptr ds:[4B7168]
004342F5 DC35 60714B00 fdiv qword ptr ds:[4B7160]
004342FB DCC0 fadd st, st
004342FD DEC9 fmulp st(1), st
004342FF DC0D 58714B00 fmul qword ptr ds:[4B7158]
00434305 E8 F62B0500 call unpacked.00486F00 ; 可以进去看看
0043430A 99 cdq
0043430B 33C2 xor eax, edx
0043430D 2BC2 sub eax, edx
0043430F 398424 24020000 cmp dword ptr ss:[esp+224], eax
00434316 0F85 0E010000 jnz unpacked.0043442A ; 关键跳
注册文件在C:\WINDOWS\system32\win5.pkg |
|