吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10379|回复: 25
收起左侧

[原创] The Enigma Protector 1.66 偽注冊 (含源碼)

[复制链接]
ZeNiX 发表于 2009-6-10 21:13
網上已經放出 The Enigma Protector 1.66 正式版了.
希望大家參考網上的教程, 自已動手破解.

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

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

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

ZeNiX  2009-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
            mov  ebx, dword ptr Zenix
            mov  eax, dword ptr Zenix+1
            sub  ebx, 689F4CEDh 
            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
追加一些說明:
給新手說說如何找到這個修改點的思路吧!
首先, 拿出 Enigma 的 API 來看看, 我注意到這個 API.
EP_RegLoadAndCheckKey 用来读取和验证注册信息,包含两个函数 EP_RegLoadKey 和 EP_RegCheckKey 。
Snap1.gif
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()
Snap2.gif
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 (已注冊)

Zenix_Enigma_DLL_SRC.rar

2.72 KB, 下载次数: 52, 下载积分: 吾爱币 -1 CB

源碼 + 現成的 Zenix_Enigma.DLL

免费评分

参与人数 1威望 +1 收起 理由
wgz001 + 1 感谢发布原创作品,[吾爱破解]因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ximo 发表于 2009-6-10 21:27
先沙发,后学习
小生我怕怕 发表于 2009-6-10 21:31
Sloth 发表于 2009-6-10 21:32
wgz001 发表于 2009-6-11 02:41
学习大牛作品   
cyto 发表于 2009-6-13 08:26
认真的学习了下.
z312170878 发表于 2009-6-13 23:46
只可以说2个字 ,牛B
pywm 发表于 2009-6-15 16:56
谢谢 ,学习了!
nwei007 发表于 2009-6-16 03:35
谢谢LZ,学习下……期待楼主新作……
clwj 发表于 2009-6-16 10:14
很强大,学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-11 05:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表