CHHSun 发表于 2010-4-26 10:07

突破Enigma Protector注册保护之三板斧

本帖最后由 CHHSun 于 2010-4-26 13:26 编辑

用一组正确的KEY,过TEP注册框框
让大P股加的一个Enigma Protector 1.91(查的是1.35,不准)的小程序。
反正脱壳不会,爆破跳过他这个注册框框。
(起先走的是下文件断点的路,但是找不到地方,后来走的换硬件码的路子,运行后直接在OD里换硬件码,但是程序里不变。走换硬件码这条路也可行)。
分析只作学习用,没其它用途。

感谢大P和Z哥提供样本!!

第一板斧:突破TEP保护之试用限制
          突破3天、10次限制
          突破5分钟限制
附件:key.rar      
需要一个正确的Key.dat,当然不是我机子上的。
OD载入,F9运行,Alt+M,在内存窗口中搜索硬件码。找到我的硬件码3EA14D-08C22A-006AD8-67CF73

00548D2833 45 41 31 34 44 2D 30 38 43 32 32 41 2D 30 303EA14D-08C22A-00
00548D3836 41 44 38 2D 36 37 43 46 37 33 00 00 00 00 006AD8-67CF73.....
记下硬件码的地址00548D28。
重载程序,在数据窗口中转到---表达式,转到硬件码出现的地址00548D28,现在是00,下内存写入断点,F9运行,中断后看堆栈:

0012F2F4   00547228ASCII "CXJU2SY96NRH7CLF2DWD28FKDTVYGPUCTKKZ4687N6MSQRR3LCVVKUNE76PS5P9MCQW6A3KQZKN2TXQ3N259AJ7APBK8N335C4"
0012F2F8   00000003
0012F2FC   00547A28ASCII "123"
0012F300   024EC304ASCII "3EA14D-08C22A-006AD8-67CF73"
0012F304   00000000
0012F308   0012FEAC
0012F30C   004B2BF7返回到 UandC.004B2BF7 来自 UandC.004B2654
0012F310   0012F31C指向下一个 SEH 记录的指针
硬件码出现,我们在返回到 UandC.004B2BF7 来自 UandC.004B2654,
取消内存断点,反回到:

004B2BF7    8945 90         mov   dword ptr , eax返回到这里,下硬件执行断点
004B2BFA    A1 9CF05100   mov   eax, dword ptr
返回后,在数据辅助窗口里可以看到我们的硬件码,此时如果有和KEY同步的硬件码的话我们可以改成同步的硬件码跳过注册框。
这里我们没有,下硬件执行断点F9,F8继续向下走,

004B2BF7    8945 90         mov   dword ptr , eax          ; 返回到这里
004B2BFA    A1 9CF05100   mov   eax, dword ptr
004B2BFF    05 B0040000   add   eax, 4B0
004B2C04    8945 F0         mov   dword ptr , eax
004B2C07    8D85 58FFFFFF   lea   eax, dword ptr
004B2C0D    E8 1EA6F9FF   call    0044D230                         ; 关键CALL
004B2C12    85C0            test    eax, eax
004B2C14    0F85 D6060000   jnz   004B32F0                         ; 关键跳,不能让他跳
这个跳不能让他跳走,我们NOP掉或改成JE。
继续F8向下走到

004B2D5E    A1 9CF05100   mov   eax, dword ptr
004B2D63    80B8 6C040000 0>cmp   byte ptr , 0
004B2D6A    74 1E         je      short 004B2D8A                   ; 这个JE要跳过去。
004B2D6C    807D 8C 00      cmp   byte ptr , 0
004B2D70    75 18         jnz   short 004B2D8A
004B2D72    8B45 FC         mov   eax, dword ptr
004B2D75    8B15 84EB5100   mov   edx, dword ptr           ; UandC.0052750C
004B2D7B    8802            mov   byte ptr , al
004B2D7D    33C0            xor   eax, eax
004B2D7F    5A            pop   edx
004B2D80    59            pop   ecx
004B2D81    59            pop   ecx
004B2D82    64:8910         mov   dword ptr fs:, edx
有好多下面这个样的代码,下面的JE都跳了,上面的也的让他跳,我也不知为什么,跳就是,改004B2D6A 的JE为JMP或JNZ

jmp   004B372B
mov   eax, dword ptr
cmp   byte ptr , 0
je      short 004B2DB9                  已经跳过了
cmp   byte ptr , 0
jnz   short 004B2DB9
mov   eax, dword ptr
F9运行OK,跳过注册框了,保存程序是不可能的啦,写补丁吧
004B2C14   /0F85 D6060000   jnz   004B32F0改JE或NOP掉
004B2D6A   /74 1E         je      short 004B2D8A改JMP或JNZ
---------

《续》突破TEP保护之双重检测

符件:UnCrackME0423.rar

   知道程序是VB写的,这个突破TEP保护之试用限制以后,就是过注册框以后,程序还会在检测一次KEY,这时会出现一个错误对话框,对话框出现后KEY文件删除。
那么在出现框框的基础上我们下VB断点

方法一:
bp rtcMsgBox,断下后看堆栈:
0012F968   00402D30返回到 UnCrackM.00402D30 来自 msvbvm60.rtcMsgBox
返回程序,向上找有一个JE,改成JMP或JNZ跳过这错误框就行了。
方法二:下VB断点 bp ThunRTMain断下后,返回程序,在Ctrl+G 81 6c 24下VB万能断点慢慢跟最终还会来到00402D30出错的地方。

---------------

第二板斧:突破TEP保护无KEY

符件和第一板一样

   上面是在同一机子上算出来的KEY.dat爆框,后来又看了看,其它机子上的同版加壳的KEY.dat也能爆
自已做个KEY.dat只要格式和位数对也行,下面是格式

Name=CHHSun
Key=cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
这是用正确的KEY根出来的几个关键地方,但是要改值。
跟我们的系统时间有关系。

好下面我们跟据上面的来到

004B2C0D    E8 1EA6F9FF   call    0044D230                         ; 关键CALL,F7
F7进去,拉到段最后到
0044DB99    8B45 FC         mov   eax, dword ptr          ;系统日,下个硬断吧
看数据辅助窗口
堆栈 ss:=0000000E
eax=00000000
点修改数据看看,这里的0000000E有符号和无符号是14,后来看了下是我们的系统日期的天数14
(2010.04.14)
(这地方应该可以改成01-31吧,不过是不是要看月份呢,没试,2月是28天。嘿嘿)
这地方先不管他了。记住这地方的值不行的时候也改他一下,目前我们先不改。

F8走出来
004B2C14   /0F85 D6060000   jnz   004B32F0                         ; 关键跳,不能让他跳
还是不能让跳,
继续到
004B2CA9^\75 F7         jnz   short 004B2CA2                   ; 循环
004B2CAB    66:8B8D 78FFFFF>mov   cx, word ptr             ; 日
004B2CB2    66:8B95 74FFFFF>mov   dx, word ptr             ; 月
004B2CB9    66:8B85 70FFFFF>mov   ax, word ptr             ; 年
来到这里,JNZ是循环,在下面下个断吧,来到
日:
004B2CAB    66:8B8D 78FFFFF>mov   cx, word ptr             ; 系统日
堆栈 ss:=0000这地方是0,我们改成上面的那个日期14,也就是0E
cx=0000

F8,一步
月:
004B2CB2    66:8B95 74FFFFF>mov   dx, word ptr             ; 月堆栈 ss:=0000这地方是0,我们改成当前的月份4,也就是04
dx=FE9C
F8,一步
年:
004B2CB9    66:8B85 70FFFFF>mov   ax, word ptr             ; 年堆栈 ss:=0000这地方是0,我们改成当前年份2010,也就是07DA
ax=7524
改完后F8向下走到
004B2D6A   /74 1E         je      short 004B2D8A                   ; 这个JE要跳过去。这个跳是上面改过的这里也要跳过去。
F9,OK。

-------
第三板斧:突破TEP保护之高版本(1.96)记事本保护
感谢Z哥提供样本
符件:TEP196_LCG.RAR
依旧需要一个正确的Key.dat,不一定是配套的。
OD载入,F9运行,Alt+M,在内存窗口中搜索硬件码,我的765103-CAC8CB-AC38B6-CC0165(OD载入后硬件码发生变化和原程序运行的不一样)
0111274437 36 35 31 30 33 2D 43 41 43 38 43 42 2D 41 43765103-CAC8CB-AC
0111275433 38 42 36 2D 43 43 30 31 36 35 00 00 00 00 0038B6-CC0165.....和第一板一个找法。
找到这
0006F2EC   01111444ASCII "CHHSun"
0006F2F0   02224C44ASCII "765103-CAC8CB-AC38B6-CC0165"
0006F2F4   00000000
0006F2F8   0006FE9C
0006F2FC   010E7414返回到 notepad_.010E7414 来自 notepad_.010E6CBC   返回返回后下断,重载F9,断下后F8(其实这地方代码和1 .91版的差不多)

010E7414    8945 90         mov   dword ptr , eax          ; 返回到这,下断
010E7417    A1 4C411001   mov   eax, dword ptr
010E741C    05 AC040000   add   eax, 4AC
010E7421    8945 F0         mov   dword ptr , eax
010E7424    8D85 58FFFFFF   lea   eax, dword ptr
010E742A    E8 B1BCF7FF   call    010630E0
010E742F    85C0            test    eax, eax
010E7431    0F85 3D060000   jnz   010E7A74                         ; 不能跳,改JE或NOP掉
010E7437    8D85 58F7FFFF   lea   eax, dword ptr

F8,

010E7501    C605 802A1101 0>mov   byte ptr , 0
010E7508    C605 8C2A1101 0>mov   byte ptr , 0
010E750F    C605 982A1101 0>mov   byte ptr , 0
010E7516    C605 A42A1101 0>mov   byte ptr , 0
010E751D    80BD 7CFFFFFF 0>cmp   byte ptr , 0
010E7524    74 5B         je      short 010E7581                   ; 这里要跳过,改JMP或JNZ
010E7526    C605 5C2A1101 0>mov   byte ptr , 1
010E752D    66:8B4D 88      mov   cx, word ptr
010E7531    66:8B55 84      mov   dx, word ptr
010E7535    66:8B45 80      mov   ax, word ptr

F8,

010E757C   /E9 31090000   jmp   010E7EB2
010E7581   |A1 4C411001   mov   eax, dword ptr
010E7586   |80B8 78040000 0>cmp   byte ptr , 0
010E758D   |74 21         je      short 010E75B0                   ; 要跳,改JMP或JNZ
010E758F   |807D 8C 00      cmp   byte ptr , 0
010E7593   |75 1B         jnz   short 010E75B0
F8,

010E75AB   /E9 02090000   jmp   010E7EB2
010E75B0   |A1 4C411001   mov   eax, dword ptr
010E75B5   |80B8 79040000 0>cmp   byte ptr , 0
010E75BC   |74 24         je      short 010E75E2                   ; 要跳,改JMP或JNZ
010E75BE   |80BD 7CFFFFFF 0>cmp   byte ptr , 0
010E75C5   |75 1B         jnz   short 010E75E2
010E75C7   |8B45 FC         mov   eax, dword ptr
就改这四处,和1.91版差不多,补丁的话要去效验,目前还不会。
脱壳不会,杯具了。

www.52pojie.cn
CHHSun
2010.04.26

缸神 发表于 2014-7-14 16:44

学习中。 最近喷到一个Enigma的壳, 用PEID查是1.1-1.3的壳, 用Enigmainfo查是3.9的。拿他没办法。

热火朝天 发表于 2010-4-26 10:14

嗯,坐下来慢慢学习

Hmily 发表于 2010-4-26 10:17

Enigma的版本和具体的保护选项可以使用这个工具查看:
http://www.52pojie.cn/thread-42172-1-1.html

ZeNiX 发表于 2010-4-26 10:23

我那個記事本的破解,
有沒有辦法脫離 OD 運行?

huzhao23 发表于 2010-4-26 13:10

好贴啊,跟着楼主学习下

zsl01 发表于 2010-4-27 17:32

跟着楼主学习下:victory:

peterdocter 发表于 2010-10-9 16:46

多谢分享!!!

zckey09 发表于 2010-10-24 11:04

谢谢分享 支持一下

733 发表于 2010-12-12 09:53

http://unpack.cn/thread-59541-1-2.html

286598982 发表于 2010-12-12 10:11

好东西值得学习
页: [1] 2 3
查看完整版本: 突破Enigma Protector注册保护之三板斧