发新话题
打印

[原创] 今天來稍稍看看 The Enigma Protector V1.70 正式版的保護檢查.

今天來稍稍看看 The Enigma Protector V1.70 正式版的保護檢查.

這裡送個小禮物給大家玩玩.
順便介紹一下, Enigma 的另一種修改法.

用法:
引用:
把 Zenix_Enigma_170.DLL 放到 Enigma verion 1.70 的 Plugins 文件夾底下.
再啟動 Enigma.

這個例子只破解 Enigma 主程序的注冊檢查.
其它的地方, 留給你們自已練習.

ZeNiX  2009-06-20
源碼在這裡...
中間放了點防小人山寨的簡單加減法標記 ZeNiX.
相信這裡的朋友都看得懂.
复制内容到剪贴板
代码:
    .386
    .model flat, stdcall
    option casemap :none   ; case sensitive
    include \masm32\include\windows.inc

.code
LibMain proc hInstDLL:DWORD, reason:DWORD, unused:DWORD
        .if reason == DLL_PROCESS_ATTACH
            mov Eax, TRUE
        .elseif reason == DLL_PROCESS_DETACH
        .elseif reason == DLL_THREAD_ATTACH
        .elseif reason == DLL_THREAD_DETACH            
        .endif           
        _exit:
        ret
LibMain Endp

Enigma_Plugin_About proc      
            push ebx
            push eax
            mov  ebx, dword ptr Zenix
            mov  eax, dword ptr Zenix+1
            xor  ebx, 069e742D7h
            add  eax, 6d771ceh                    
            mov dword ptr [ebx], eax
            pop  eax
            pop ebx      
            ret
  Zenix     db 'ZeNiX'               
Enigma_Plugin_About endp

Enigma_Plugin_Description proc
            ret
Enigma_Plugin_Description endp

Enigma_Plugin_OnInit proc
            ret
Enigma_Plugin_OnInit endp

End LibMain
追加一些說明: (偷懶一下, 底下例子抄自我上個月發佈的 1.66 版)
給新手說說如何找到這個修改點的思路吧!
首先, 拿出 Enigma 的 API 來看看, 我注意到這個 API.
EP_RegLoadAndCheckKey 用来读取和验证注册信息,包含两个函数 EP_RegLoadKey 和 EP_RegCheckKey 。

复制内容到剪贴板
代码:
008EF614 >/$  53            push    ebx
008EF615  |.  83C4 F8       add     esp, -8
008EF618  |.  33DB          xor     ebx, ebx
008EF61A  |.  8D4424 04     lea     eax, dword ptr [esp+4]
008EF61E  |.  50            push    eax                              ; /Arg2
008EF61F  |.  8D4424 04     lea     eax, dword ptr [esp+4]           ; |
008EF623  |.  50            push    eax                              ; |Arg1
008EF624  |.  E8 23FCFFFF   call    EP_RegLoadKey                    ; \EP_RegLoadKey
008EF629  |.  83F8 01       cmp     eax, 1
008EF62C  |.  75 11         jnz     short 008EF63F
008EF62E  |.  8B4424 04     mov     eax, dword ptr [esp+4]
008EF632  |.  50            push    eax                              ; /Arg2
008EF633  |.  8B4424 04     mov     eax, dword ptr [esp+4]           ; |
008EF637  |.  50            push    eax                              ; |Arg1
008EF638  |.  E8 3FF2FFFF   call    EP_RegCheckKey                   ; \EP_RegCheckKey
008EF63D  |.  8BD8          mov     ebx, eax
008EF63F  |>  8BC3          mov     eax, ebx
008EF641  |.  59            pop     ecx
008EF642  |.  5A            pop     edx
008EF643  |.  5B            pop     ebx
008EF644  \.  C3            retn
代碼不長, 人肉 F5 一下, 大概是這個樣子.
复制内容到剪贴板
代码:
BOOL EP_RegLoadAndCheckKey()
{
  if (EP_RegLoadKey( char** Name, char** Key ))
      return EP_RegCheckKey( char* Name, char* Key );
  else
      return FALSE;
}
也就是說, 注冊判斷的傳回值在 EP_RegCheckKey, 所以我們就來看看 EP_RegCheckKey()

复制内容到剪贴板
代码:
008EE87C >/$  55            push    ebp
008EE87D  |.  8BEC          mov     ebp, esp
008EE87F  |.  53            push    ebx
008EE880  |.  56            push    esi
008EE881  |.  8B75 0C       mov     esi, dword ptr [ebp+C]
008EE884  |.  8B5D 08       mov     ebx, dword ptr [ebp+8]
008EE887  |.  8BC6          mov     eax, esi
008EE889  |.  E8 CAA9F8FF   call    00879258
008EE88E  |.  50            push    eax
008EE88F  |.  56            push    esi
008EE890  |.  8BC3          mov     eax, ebx
008EE892  |.  E8 C1A9F8FF   call    00879258
008EE897  |.  50            push    eax
008EE898  |.  53            push    ebx
008EE899  |.  E8 6AFDFFFF   call    EP_RegCheckKeyEx
008EE89E  |.  8B15 A01B9200 mov     edx, dword ptr [921BA0]          ;  DLL_Load.0092A164
008EE8A4  |.  8802          mov     byte ptr [edx], al
008EE8A6  |.  5E            pop     esi
008EE8A7  |.  5B            pop     ebx
008EE8A8  |.  5D            pop     ebp
008EE8A9  \.  C2 0800       retn    8
我們看到注冊標志由 EP_RegCheckKeyEx() 傳回來的 al 來決定的.
所以我們只要讓它返回時, al=1 就好了.
al=0 (未注冊)
al=1 (已注冊)

V

[ 本帖最后由 ZeNiX 于 2009-7-6 11:45 编辑 ]

附件

ZeNiX_Enigma_170.rar (198.58 KB)

2009-7-1 11:29, 下载次数: 135

這篇文章的 PDF 版本及 Enigma_ZeNiX_170.DLL 成品

TOP

强人啊!
chinacrackinggroup@qq.com
update ccg_members set groupid = 28 where groupid = 8

TOP

...牛.占位学习

TOP

这倒是个很新奇的方法,大牛啊,学习了

TOP

他的作品文章都是强的很!

TOP

学习了,不错的教程..还要仔细研究才行
LOVE THIS GAME

TOP

我是来膜拜Z大的

TOP

来顶Z牛啦

TOP

原来曾哥早年就中意TEP了
speedboy

TOP

发新话题
版块跳转 ...