zenix 发表于 2009-6-11 15:00:38

The Enigma Protector 1.66 偽注冊 (含源碼)

網上已經放出 The Enigma Protector 1.66 正式版了.
希望大家參考網上的教程, 自已動手破解.

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

用法:

把 Zenix_Enigma.DLL 放到 Enigma verion 1.66 的 Plugins 文件夾底下.
再啟動 Enigma

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

ZeNiX2009-06-09

源碼在這裡...
中間放了點防小人山寨的簡單加減法標記 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
            movebx, dword ptr Zenix
            moveax, dword ptr Zenix+1
            subebx, 689F4CEDh
            addeax, 6d771ceh                  
            mov dword ptr , eax
            popeax
            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
追加一些說明:
給新手說說如何找到這個修改點的思路吧!
首先, 拿出 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
008EF61E|.50            push    eax                              ; /Arg2
008EF61F|.8D4424 04   lea   eax, dword ptr          ; |
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
008EF632|.50            push    eax                              ; /Arg2
008EF633|.8B4424 04   mov   eax, dword ptr          ; |
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
008EE884|.8B5D 08       mov   ebx, dword ptr
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           ;DLL_Load.0092A164
008EE8A4|.8802          mov   byte ptr , 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 (已注冊)

网游难民 发表于 2009-6-11 15:05:46

强大。。
学习了。。

zgmap 发表于 2009-6-11 15:33:54

PYG的贵宾.../:017

yingfeng 发表于 2009-6-12 10:47:17

强大!
/:09

支持一下,难得zenix在这里发贴

unpack 发表于 2009-6-13 22:44:15

/:018    没想到大Z突然混迹到这儿了 O(∩_∩)O哈哈~

ABCdiyPE 发表于 2009-6-13 23:45:34

牛牛牛~~~

VC8 发表于 2009-6-13 23:49:50

/:good 和三鹿同一级别的大牛 精品文章 慢慢领悟:loveliness:

lmg7005 发表于 2009-6-13 23:51:59

突然出现的牛人,惊起一阵小波澜!

playboyjin 发表于 2009-6-13 23:56:00

学习。。。。。

Nisy 发表于 2009-6-14 03:10:50

感谢zenix分享的文章 这样今后再处理显注册问题 就简单多了 O(∩_∩)O~
页: [1] 2
查看完整版本: The Enigma Protector 1.66 偽注冊 (含源碼)