前2天偶然碰到一个软件:
SourceFormatX,觉得还不错,就是要注册,比较烦,为了研究它的一个功能,我决定分析一下看看,没想到。。。
机器也因此重装了一次(我的笔记本没光驱!!系统没备份!!),极其气愤!看雪上也有人讨论过
主要的危险代码:
1,用winexec无限开窗口,直到你死机
2,删除你注册表,删了你肯定要重装了!(强烈BS!
)
主页上居然写这种话,不觉得脸红!!
http://cn.textrush.com/download.htm
百分之百绿色安全无插件软件
SourceFormatX 通过了国内外许多专业软件评测组织的安全测试,并且获得了国外专业软件评测网站授予的 "Safe To Install" (安全安装) 和 "100% Clean & Safe Software" (100%干净安全软件) 认证。这些奖项意味着 SourceFormatX 的安装包内没有包含任何恶意的病毒、木马、间谍软件、流氓插件、后门软件、广告软件,而且在安装和使用过程中没有任何潜在的威胁,可以放心使用。
现将破解方法公布如下:
一,脱壳!!
修改版的压缩壳,没难度,就是要修复一下IAT,应该没问题的
二,去除ANTI
搜索命令:
005771BE . E8 B1F8E8FF call <jmp.&kernel32.WinExec> ; \WinExec
我这里是搜索:
call 00406A74
然后向上找:
0057719E . /EB 25 jmp short killit.005771C5 ; 这行改成JMP跳过WINEXEC调用
005771A0 > |6A 03 push 3
005771A2 . |B8 34765700 mov eax, killit.00577634 ;
048229125055114025094102049210040021027068051099091168132234034161018208011
005771A7 . |8D95 68FBFFFF lea edx, dword ptr ss:[ebp-498]
005771AD . |E8 0AA5EDFF call killit.004516BC
005771B2 . |8B85 68FBFFFF mov eax, dword ptr ss:[ebp-498]
005771B8 . |E8 83CEE8FF call killit.00404040
005771BD . |50 push eax ; |CmdLine
005771BE . |E8 B1F8E8FF call <jmp.&kernel32.WinExec> ; \WinExec
005771C3 .^|EB DB jmp short killit.005771A0
005771C5 > \33C0 xor eax, eax
对除了1个WinExec不这样处理,其他都要跳过去(如何判断?就看WinExec后面有没有JMP!有JMP,这段代码就要跳过去)
然后对所有的SetFilePointer,GetFileSize下断点,如果后面是cmp eax,xxxxx的就是判断是否脱壳,将后面的跳转改成JMP
比如:
00566062 . 6A 02 push 2 ; /Origin = FILE_END
00566064 . 6A 00 push 0 ; |pOffsetHi = NULL
00566066 . 6A 00 push 0 ; |OffsetLo = 0
00566068 . 8B45 D4 mov eax, dword ptr ss:[ebp-2C] ; |
0056606B . 50 push eax ; |hFile
0056606C . E8 C309EAFF call <jmp.&kernel32.SetFilePointer> ; \SetFilePointer
00566071 . 3D 27E51000 cmp eax, 10E527
00566076 . EB 13 jmp short killit.0056608B
0055F105 . 6A 00 push 0 ; /pFileSizeHigh = NULL
0055F107 . 8B45 FC mov eax, dword ptr ss:[ebp-4] ; |
0055F10A . 50 push eax ; |hFile
0055F10B . E8 D477EAFF call <jmp.&kernel32.GetFileSize> ; \GetFileSize
0055F110 . 3D A8421200 cmp eax, 1242A8
0055F115 . /EB 1F jmp short killit.0055F136
★下面这处千万别漏了,这个是点击格式化目录这个按钮时调用的,直接删你注册表的!!
00564159 . 6A 02 push 2 ; /Origin = FILE_END
0056415B . 6A 00 push 0 ; |pOffsetHi = NULL
0056415D . 6A 00 push 0 ; |OffsetLo = 0
0056415F . 8B45 F0 mov eax, dword ptr ss:[ebp-10] ; |
00564162 . 50 push eax ; |hFile
00564163 . E8 CC28EAFF call <jmp.&kernel32.SetFilePointer> ; \SetFilePointer
00564168 . 3D 508D0F00 cmp eax, 0F8D50
0056416D . 90 nop
0056416E . E9 F7000000 jmp killit.0056426A
三,破解
至此,anti已经基本结束,下面开始破解!首先在当前目录下面建一个文件License.dat,文件名千万别错,里面内容大于10个字符就可以了(
怎么知道的,自己看吧,实在气愤!)
破解点怎么找到的就不说了,很简单的,破解点一共4个
突破格式化所有功能:
004FB527 /75 00 jnz short killit.004FB529 ; 比较
004FB529 . \C645 DF 01 mov byte ptr ss:[ebp-21], 1 ; 标志
突破复制,保存大小限制的功能:
00561E60 . 8B45 DC mov eax, dword ptr ss:[ebp-24]
00561E63 . 8B55 F4 mov edx, dword ptr ss:[ebp-C]
00561E66 . E8 2121EAFF call killit.00403F8C
00561E6B . 75 04 jnz short killit.00561E71 ; 比较
00561E6D . C645 EF 01 mov byte ptr ss:[ebp-11], 1 ; 标志
NAG窗口去除:
00563612 > \F645 CE 01 test byte ptr ss:[ebp-32], 1 ; 是否显示LOG窗口
00563616 . 74 57 je short SourceFo.0056366F ; 跳走不显示
0056359A . F645 CE 01 test byte ptr ss:[ebp-32], 1
0056359E . 74 4D je short killit.005635ED ; nag窗口,跳走
做内存补丁,这4个点就可以用了如果你是脱壳的,那么程序有校验,格式化后会变成乱码!!汗~~真受不了。。。
去除脱壳校验:
0045A000 /$ 53 push ebx ; 计算校验值
0045A001 |. 89C3 mov ebx, eax
0045A003 |. B8 FFFFFFFF mov eax, -1
0045A008 |. 56 push esi
0045A009 |. 85D2 test edx, edx
0045A00B |. 74 16 je short SourceFo.0045A023
0045A00D |> 0FB633 /movzx esi, byte ptr ds:[ebx]
0045A010 |. 0FB6C8 |movzx ecx, al
0045A013 |. 31F1 |xor ecx, esi
0045A015 |. C1E8 08 |shr eax, 8
0045A018 |. 33048D C09B5700 |xor eax, dword ptr ds:[ecx*4+579BC0]
0045A01F |. 43 |inc ebx
0045A020 |. 4A |dec edx
0045A021 |.^ 75 EA \jnz short SourceFo.0045A00D
0045A023 |> 5E pop esi
0045A024 |. F7D0 not eax
0045A026 |. 5B pop ebx
0045A027 \. C3 retn
这里会程序输入表进行校验,返回一个校验值eax,如果校验值不对,那么格式化后会变成乱码。脱壳后要修复IAT,所以校验值肯定不对,运
行未脱壳版,跑完这个校验值计算过程,把值记下来
一共变了3个寄存器:
EAX = 1DFF122A
ECX = C9
EDX = 0
重写这个函数:
0045A000 /$ B8 2A12FF1D mov eax, 1DFF122A
0045A005 |. 33C9 xor ecx, ecx
0045A007 |. B1 C9 mov cl, 0C9
0045A009 |. 33D2 xor edx, edx
0045A00B \. C3 retn
ok,破解完成。
最后是ABOUT窗口:
0052A580 . BA 5CA75200 mov edx, killit.0052A75C ; 未注册用户
0052A585 . E8 6E50F0FF call killit.0042F5F8
字符串就自己改了,我改成这个:
不知道哪里可以发布破解软件!!!
刚才在网上找了一下,居然没找到有破解版破解发布见34楼
[课程]FART 脱壳王!加量不加价!FART作者讲授!