SourceFormatX 2.56破解分析

【软件名称】: SourceFormatX 2.56 【使用工具】: Fi,Ollydbg,ImportREC 【破解平台】: Win2K Server 【软件简介】: SourceFormatX 是一个强大的源代码自动格式化,缩进,排版,美化工具。 它可以格式化 C, C++、Java、C#、Object Pascal、PHP、ASP、JSP、VB、 VB.NET、VBScript、JavaScript 和 HTML Components源代码。 它还可以将源代码输出为语法高亮显示的 HTML 或 RTF 文件。 【软件大小】: 731 KB 【编写语言】: Borland Delphi 5 【加壳方式】: PECompact 1.68 - 1.84 【保护方式】: 文件验证(License.dat)。 破解行为会激活恶意代码, 主要是删注册表的HKEY_CLASSES_ROOT整个分支。 删注册表是用RegDeleteValueA 。 作者把关键代码做成一个DLL, 将DLL文件的16进制码加密后生成一个注册文件, 密匙产生函数的参数是主程序加壳后的HASH码和机器信息。 已注册用户验证注册码时,先验证有没有文件, 没有文件则自然受限制的功能无法使用。 如果有注册文件,解密后即生成一个小临时文件。 如果主程序被脱壳或者被修改(爆破),自然Hash值密码不符, 解密出来的肯定都是垃圾码,没有一点用处。 只有没有被修改的主程序才能正确地解码, 而且当然只有解密正确的文件才是一个真正的DLL文件, 才能被GetProcAddress函数找到欲调用的关键函数地址。 这样只有注册用户能正常使用了。 【破解建议】: 安装 VMware ,否则, 作者很生气, 后果很严重 :) 【软件下载】: http://wh.onlinedown.net:88/down/sourceformatx256cn.exe /***********************************脱壳**************************************/ ; 跟踪到00625556处 00625556      C2 0400   retn 4 ; 此处就是OEP,记得脱壳后重建输入表,我用的是ImportREC 00573258      55        push ebp /********************************去掉OD检查***********************************/ ; 调用检查OD的函数 0057330F     E8 002EFEFF   call SourceFo.00556114 ... ... ; 将这里的 机器码 74(jz) 修改为 EB(jmp) 0055614C     74 23         jz short upSource.00556171 ; 调用检查OD的函数 005774EA     E8 CDB4FFFF   call SourceFo.005729BC ; 将这里的 机器码 74(jz) 修改为 EB(jmp) 005729F2     74 42         je short SourceFo.00572A36 ; 将这里的 机器码 74(jz) 修改为 EB(jmp) 0055F076     74 42         je short SourceFo.0055F0BA /*****************************去掉文件修改检查********************************/ ; 检查执行程序是否被修改 005774F4     E8 97B1FFFF   call SourceFo.00572690 ; 将这里的 机器码 74(jz) 修改为 EB(jmp) 005723AC     74 55         je short SourceFo.00572403 ; 0044EA65     E8 A69BFFFF   call SourceFo.00448610 0044861D     74 17         je short SourceFo.00448636 /*******************************去掉DeDe检查**********************************/ ; 将这里的 机器码 74(jz) 修改为 EB(jmp) 005727F4     74 28         je short SourceFo.0057281E 0055641C     74 28         je short SourceFo.00556446 /*****************************去掉Filemon检查*********************************/ ; 将这里的 机器码 74(jz) 修改为 EB(jmp) 005560C4     74 20         je short SourceFo.005560E6 /*****************************去掉Snacker检查*********************************/ ; 将这里的 机器码 74(jz) 修改为 EB(jmp) 005560ED    74 20          je short SourceFo.0055610F /*************************其他各类调试软件的驱动句柄检测**********************/ 00573314    E8 632CFEFF    call SourceFo.00555F7C ; 关键CALL, 以 eax 传递参数, 005774EF    B8 54885700    mov eax,SourceFo.00578854    ;  ASCII "License.dat" 005774F4    E8 97B1FFFF    call SourceFo.00572690 /****************************执行文件尺寸检查*********************************/ 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 ; 将这里的 机器码 3D A8421200 修改为 3D 00E02200(00902200) 0055F110    |.  3D A8421200     cmp eax,1242A8 0055F115    |.  7E 1F           jle short SourceFo.0055F136 // ??? 0055EF71    75 1C          jnz short SourceFo.0055EF8F /******************************修理非法用户***********************************/ 0055F117    |> /6A 03           /push 3 0055F119    |. |B8 B8F45500     |mov eax,SourceFo.0055F4B8           ;  ASCII "048229125055114025094102049210040021027068051099091168132234034161018208011" 0055F11E    |. |8D55 E8         |lea edx,dword ptr ss:[ebp-18] 0055F121    |. |E8 9625EFFF     |call SourceFo.004516BC 0055F126    |. |8B45 E8         |mov eax,dword ptr ss:[ebp-18] 0055F129    |. |E8 124FEAFF     |call SourceFo.00404040 0055F12E    |. |50              |push eax                            ; |CmdLine 0055F12F    |. |E8 4079EAFF     |call <jmp.&kernel32.WinExec>        ; \WinExec 0055F134    |.^\EB E1           \jmp short SourceFo.0055F117         ; 循环打开多个窗口 /****************************可疑*******************************/ 00412F4D    |.  807D FF 00         cmp byte ptr ss:[ebp-1],0 00412F51    |.  74 0F              je short SourceFo.00412F62 00412F53    |.  E8 5803FFFF        call SourceFo.004032B0 0041A524    |.  8D45 D4            lea eax,dword ptr ss:[ebp-2C] 0041A527    |.  50                 push eax                               ; /pSystemInfo 0041A528    |.  E8 0FC4FEFF        call <jmp.&kernel32.GetSystemInfo>     ; \GetSystemInfo 0041A52D    |.  8B55 FC            mov edx,dword ptr ss:[ebp-4] 0041A530    |.  8B4D F8            mov ecx,dword ptr ss:[ebp-8] 0041A533    |.  49                 dec ecx 0041A534    |.  78 33              js short SourceFo.0041A569 0041A536    |.  8D45 D4            lea eax,dword ptr ss:[ebp-2C] 0041A539    |.  66:8378 20 03      cmp word ptr ds:[eax+20],3 0041A53E    |.  74 10              je short SourceFo.0041A550 ; ??? 00412F21    |.  837B 04 00      cmp dword ptr ds:[ebx+4],0 00412F25    |.  7D 24           jge short SourceFo.00412F4B ; ??? 00412F4D    |.  807D FF 00       cmp byte ptr ss:[ebp-1],0 00412F51    |.  74 0F            je short SOURCEFO.00412F62 00412F53    |.  E8 5803FFFF      call SOURCEFO.004032B0 ; eax = "0123456789abcdeffedcba9876543210" 005096B0    |.  8D45 A4         lea eax,dword ptr ss:[ebp-5C] 005096B3    |.  E8 3CFFFFFF     call SourceFo.005095F4 ; 将这里的 机器码 3D 508D0F00 修改为 3D 00902200 00564168     .  3D 508D0F00     cmp eax,0F8D50 0056416D     .  0F8E F7000000   jle SourceFo.0056426A 00564173     .  33D2            xor edx,edx ; 将这里的 机器码 3D 5F890F00 修改为 3D 00902200 00567DFC     .  3D 5F890F00      cmp eax,0F895F 00567E01     .  7E 13            jle short SOURCEFO.00567E16 00567E03     .  E8 50DDFEFF      call SOURCEFO.00555B58 ; ??? 在打开文件License.dat之后多次调用 00412F53    |.  E8 5803FFFF      call SOURCEFO.004032B0
posted @ 2012-07-15 21:26  adodo1  Views(273)  Comments(0Edit  收藏  举报