【软件名称】: 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

http://hi.baidu.com/dodo1/blog/item/6cc9ad510decbe8f8c543002.html
posted on 2007-02-25 17:54  mbskys  阅读(1160)  评论(0)    收藏  举报