本帖最后由 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.rar
(675.02 KB, 下载次数: 186)
需要一个正确的Key.dat,当然不是我机子上的。
OD载入,F9运行,Alt+M,在内存窗口中搜索硬件码。找到我的硬件码3EA14D-08C22A-006AD8-67CF73
00548D28 33 45 41 31 34 44 2D 30 38 43 32 32 41 2D 30 30 3EA14D-08C22A-00
00548D38 36 41 44 38 2D 36 37 43 46 37 33 00 00 00 00 00 6AD8-67CF73.....
记下硬件码的地址00548D28。
重载程序,在数据窗口中转到---表达式,转到硬件码出现的地址00548D28,现在是00,下内存写入断点,F9运行,中断后看堆栈:
0012F2F4 00547228 ASCII "CXJU2SY96NRH7CLF2DWD28FKDTVYGPUCTKKZ4687N6MSQRR3LCVVKUNE76PS5P9MCQW6A3KQZKN2TXQ3N259AJ7APBK8N335C4"
0012F2F8 00000003
0012F2FC 00547A28 ASCII "123"
0012F300 024EC304 ASCII "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 [ebp-70], eax 返回到这里,下硬件执行断点
004B2BFA A1 9CF05100 mov eax, dword ptr [51F09C]
返回后,在数据辅助窗口里可以看到我们的硬件码,此时如果有和KEY同步的硬件码的话我们可以改成同步的硬件码跳过注册框。
这里我们没有,下硬件执行断点F9,F8继续向下走,
004B2BF7 8945 90 mov dword ptr [ebp-70], eax ; 返回到这里
004B2BFA A1 9CF05100 mov eax, dword ptr [51F09C]
004B2BFF 05 B0040000 add eax, 4B0
004B2C04 8945 F0 mov dword ptr [ebp-10], eax
004B2C07 8D85 58FFFFFF lea eax, dword ptr [ebp-A8]
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 [51F09C]
004B2D63 80B8 6C040000 0>cmp byte ptr [eax+46C], 0
004B2D6A 74 1E je short 004B2D8A ; 这个JE要跳过去。
004B2D6C 807D 8C 00 cmp byte ptr [ebp-74], 0
004B2D70 75 18 jnz short 004B2D8A
004B2D72 8B45 FC mov eax, dword ptr [ebp-4]
004B2D75 8B15 84EB5100 mov edx, dword ptr [51EB84] ; UandC.0052750C
004B2D7B 8802 mov byte ptr [edx], 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:[eax], edx
有好多下面这个样的代码,下面的JE都跳了,上面的也的让他跳,我也不知为什么,跳就是,改004B2D6A 的JE为JMP或JNZ
jmp 004B372B
mov eax, dword ptr [51F09C]
cmp byte ptr [eax+46D], 0
je short 004B2DB9 已经跳过了
cmp byte ptr [ebp-84], 0
jnz short 004B2DB9
mov eax, dword ptr [ebp-4]
F9运行OK,跳过注册框了,保存程序是不可能的啦,写补丁吧
004B2C14 /0F85 D6060000 jnz 004B32F0 改JE或NOP掉
004B2D6A /74 1E je short 004B2D8A 改JMP或JNZ
---------
《续》突破TEP保护之双重检测
符件:UnCrackME0423.rar
UnCrackMe0423.rar
(675.55 KB, 下载次数: 61)
知道程序是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只要格式和位数对也行,下面是格式
[Registration information]
Name=CHHSun
Key=cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
这是用正确的KEY根出来的几个关键地方,但是要改值。
跟我们的系统时间有关系。
好下面我们跟据上面的来到
004B2C0D E8 1EA6F9FF call 0044D230 ; 关键CALL,F7
F7进去,拉到段最后到
0044DB99 8B45 FC mov eax, dword ptr [ebp-4] ;系统日,下个硬断吧
看数据辅助窗口
堆栈 ss:[0012F304]=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 [ebp-88] ; 日
004B2CB2 66:8B95 74FFFFF>mov dx, word ptr [ebp-8C] ; 月
004B2CB9 66:8B85 70FFFFF>mov ax, word ptr [ebp-90] ; 年
来到这里,JNZ是循环,在下面下个断吧,来到
日:004B2CAB 66:8B8D 78FFFFF>mov cx, word ptr [ebp-88] ; 系统日
堆栈 ss:[0012FE24]=0000这地方是0,我们改成上面的那个日期14,也就是0E
cx=0000
F8,一步
月:004B2CB2 66:8B95 74FFFFF>mov dx, word ptr [ebp-8C] ; 月
堆栈 ss:[0012FE20]=0000 这地方是0,我们改成当前的月份4,也就是04
dx=FE9C
F8,一步
年:004B2CB9 66:8B85 70FFFFF>mov ax, word ptr [ebp-90] ; 年
堆栈 ss:[0012FE1C]=0000这地方是0,我们改成当前年份2010,也就是07DA
ax=7524
改完后F8向下走到004B2D6A /74 1E je short 004B2D8A ; 这个JE要跳过去。
这个跳是上面改过的这里也要跳过去。
F9,OK。
-------
第三板斧:突破TEP保护之高版本(1.96)记事本保护
感谢Z哥提供样本
符件:TEP196_LCG.RAR
TEP196_LCG.rar
(607.45 KB, 下载次数: 50)
依旧需要一个正确的Key.dat,不一定是配套的。
OD载入,F9运行,Alt+M,在内存窗口中搜索硬件码,我的765103-CAC8CB-AC38B6-CC0165(OD载入后硬件码发生变化和原程序运行的不一样)01112744 37 36 35 31 30 33 2D 43 41 43 38 43 42 2D 41 43 765103-CAC8CB-AC
01112754 33 38 42 36 2D 43 43 30 31 36 35 00 00 00 00 00 38B6-CC0165.....
和第一板一个找法。
找到这0006F2EC 01111444 ASCII "CHHSun"
0006F2F0 02224C44 ASCII "765103-CAC8CB-AC38B6-CC0165"
0006F2F4 00000000
0006F2F8 0006FE9C
0006F2FC 010E7414 返回到 notepad_.010E7414 来自 notepad_.010E6CBC 返回
返回后下断,重载F9,断下后F8(其实这地方代码和1 .91版的差不多)
010E7414 8945 90 mov dword ptr [ebp-70], eax ; 返回到这,下断
010E7417 A1 4C411001 mov eax, dword ptr [110414C]
010E741C 05 AC040000 add eax, 4AC
010E7421 8945 F0 mov dword ptr [ebp-10], eax
010E7424 8D85 58FFFFFF lea eax, dword ptr [ebp-A8]
010E742A E8 B1BCF7FF call 010630E0
010E742F 85C0 test eax, eax
010E7431 0F85 3D060000 jnz 010E7A74 ; 不能跳,改JE或NOP掉
010E7437 8D85 58F7FFFF lea eax, dword ptr [ebp-8A8]
F8,
010E7501 C605 802A1101 0>mov byte ptr [1112A80], 0
010E7508 C605 8C2A1101 0>mov byte ptr [1112A8C], 0
010E750F C605 982A1101 0>mov byte ptr [1112A98], 0
010E7516 C605 A42A1101 0>mov byte ptr [1112AA4], 0
010E751D 80BD 7CFFFFFF 0>cmp byte ptr [ebp-84], 0
010E7524 74 5B je short 010E7581 ; 这里要跳过,改JMP或JNZ
010E7526 C605 5C2A1101 0>mov byte ptr [1112A5C], 1
010E752D 66:8B4D 88 mov cx, word ptr [ebp-78]
010E7531 66:8B55 84 mov dx, word ptr [ebp-7C]
010E7535 66:8B45 80 mov ax, word ptr [ebp-80]
F8,
010E757C /E9 31090000 jmp 010E7EB2
010E7581 |A1 4C411001 mov eax, dword ptr [110414C]
010E7586 |80B8 78040000 0>cmp byte ptr [eax+478], 0
010E758D |74 21 je short 010E75B0 ; 要跳,改JMP或JNZ
010E758F |807D 8C 00 cmp byte ptr [ebp-74], 0
010E7593 |75 1B jnz short 010E75B0
F8,
010E75AB /E9 02090000 jmp 010E7EB2
010E75B0 |A1 4C411001 mov eax, dword ptr [110414C]
010E75B5 |80B8 79040000 0>cmp byte ptr [eax+479], 0
010E75BC |74 24 je short 010E75E2 ; 要跳,改JMP或JNZ
010E75BE |80BD 7CFFFFFF 0>cmp byte ptr [ebp-84], 0
010E75C5 |75 1B jnz short 010E75E2
010E75C7 |8B45 FC mov eax, dword ptr [ebp-4]
就改这四处,和1.91版差不多,补丁的话要去效验,目前还不会。
脱壳不会,杯具了。
www.52pojie.cn
CHHSun
2010.04.26 |