目标: Take-1 version 2.2
地址: http://www.filestream.com/take-1
保护: 没有注册码输入地方 , 30 天试用期 , 期满後有 nag告知试用期已满 , 联络作者购买完全版 , 按确定後软件退出 , 不能运行
工具: Softice4.05 ,W32dasm , Hiew 6.75
前言: 破这软件前 , 曾尝试找出它是否 key file 保护 , 不得要领 , (Filemon , Regmon , OllyDBg全都用了, 可能水平关系
,没有本事看出来 :-P ) 後将时间往後一个月 , 见到就算过期也没有输入 sn 的地方 , 拨回原来时间 , 软件又可以用了 , 心想 , 惟有暴破了
, 但问题是 , 从哪入手呢 ?
.
从 Nag screen (messagebox) 入手吧 !
.
开始: 软件是 Ms Visual C++ 6.0 , 没加壳 , 用 W32dasm 反汇编後 , 找不到错误讯息字串 ....(This trial
version of Take-1 has expired....)
倒 !! 很多教材都是找到字串 , 双击字串 , 往上找跳转 , 改跳转就破解成功了 , 现在找不到字串 , 怎麽办啊 !! :(
好 , 用 Softice 拦下它调用的函数吧 , 用那个好呢 ? 试了几次 ,
.
.
1)最後成功用 bpx createwindowex 拦下. (Ctrl+D 设断点)
bc * ;清除断点
F12 七次後 显示讨厌的期满窗口
按 "确定" , Sice 再出现 , 看一看 ,
:004F774E E83B130500 call 00548A8E
.
成 , 有头绪了 :-)
.
2)打开 W32Dasm , 载入 take1.exe , 点 "Goto" >"Goto Code Location"
输入 004F774E , 按 OK
.
.
:004F770A 50
push eax
* Reference To: USER32.wsprintfA, Ord:02ACh
|
:004F770B FF1580C85900 Call dword ptr
[0059C880]
:004F7711 83C410
add esp, 00000010
:004F7714 8D4DEC
lea ecx, dword ptr [ebp-14]
:004F7717 E87E570500 call 0054CE9A
:004F771C 8D8514FCFFFF lea eax, dword
ptr [ebp+FFFFFC14]
:004F7722 50
push eax
:004F7723 E8BF410300 call 0052B8E7
:004F7728 59
pop ecx
:004F7729 898690000000 mov dword ptr
[esi+00000090], eax
:004F772F E8EFCAFFFF call 004F4223
;典型的 Call->test->jump
:004F7734 85C0
test eax, eax
:004F7736 7563
jne 004F779B
;这里可以跳过"过期"的Call
:004F7738 53
push ebx
:004F7739 8D8D1CFEFFFF lea ecx, dword
ptr [ebp+FFFFFE1C]
:004F773F E897BBF5FF call 004532DB
:004F7744 8D8D1CFEFFFF lea ecx, dword
ptr [ebp+FFFFFE1C]
:004F774A C645FC01 mov
[ebp-04], 01
:004F774E E83B130500 call 00548A8E
;关键 Call
, 往上找
:004F7753 51
push ecx
:004F7754 8BCC
mov ecx, esp
:004F7756 8965EC
mov dword ptr [ebp-14], esp
* Possible StringData Ref from Data Obj ->"Take-1"
|
:004F7759 68FC336100 push 006133FC
:004F775E E8A5570500 call 0054CF08
:004F7763 51
push ecx
:004F7764 C645FC02 mov
[ebp-04], 02
:004F7768 8BCC
mov ecx, esp
:004F776A 8965E8
mov dword ptr [ebp-18], esp
* Possible StringData Ref from Data Obj ->"Software\Microsoft\Windows\CurrentVersion\Run"
|
:004F776D 68004F6000 push 00604F00
.
.
为了证实一下这个跳转 ,将光条停在:004F7736 7563
jne 004F779B
按右箭咀(Execute Jump 的快捷键) 执行这个 jump , 上下看一下 , 似乎没有问题 , OK
在底部 Code Data @004F7736 @Offset 000F7736h in File:take1.exe ,记下 offset address
.
.
3)打开 Hiew , 载入 take1.exe , 按 F4 , 选 Decode , 之後按 F5 (goto),输入 000F7736 (h是16进制的意思,不用输入)
, F3(edit) , F2(Asm) ,
你会见到 jne 0000F779B伪伪伪伪伪伪伪伪伪伪伪伪伪伪伪伪伪伪伪伪?
改前面的 Opcodes 为 jmp , 按回车 ,紧随会出现下一条指令 , 因不用修改 , 故按 Esc 键,
你会见到已变成 000F7736: E960000000
jmp 0000F779B
最後按 F9 (Update) , F10 关闭
.
.
运行 cracked 後的 take1.exe , 呵呵 , 搞定 , 好开心呀 !!
.
.
因这个是 Trial Version 版 , 虽然被破了 , 仍有 "Trial Version" 的显示
曾用 eXeScope 和 UltraEdit 都找不到 , 还请前辈指教如何去除 , 谢谢
.
.
後话: 写这个教程时间远比破解为短 , 功力还不够 , 想破脑袋 , 失败好多次才有以上的结果,
写这个的目的 , 在於一个初学者的角度 , 去思考非常规的破解 , 应怎样呢 ? (因为我也是初学者)
所以尽量写得详细点 , 与及为什麽要那样做 , 高手就不用看了 (显然你也在看 :-D )
.
.
到此为止 , 再见 :)
.
.
後记: 文章贴出後 , 幸得 Fpc 提点查找字串的方法 , 立即开工 :
.
4)打开 Hiew , 载入 take1.exe , 按 F4 , 选 Hex ,
然後 F7(Search) , 游标往 ASCII 处键入 ( <--开括号
游标往 Hex 处键入 00 <--数字 , 重覆步骤如下 :
.
.
[Forward /Full ]
?ASCII: ( t r i a伪伪伪伪伪?
?
?
?
? Hex: 28 00 74 00 72 00 69 00 61 伪伪伪伪伪伪伪伪伪伪伪伪伪伪伪伪??
?
.
.
按回车键 , 你会见到 :
006CA7D0: 00 00 00 00-00 00 00 00-00 00 16 00-54 00 61 00
T a
006CA7E0: 6B 00 65 00-2D 00 31 00-20 00 28 00-54 00 72 00 k e -
1 ( T r
006CA7F0: 69 00 61 00-6C 00 20 00-56 00 65 00-72 00 73 00 i a l
V e r s
006CA800: 69 00 6F 00-6E 00 29 00-3C 00 54 00-6F 00 67 00 i o n
) < T o g
006CA810: 67 00 6C 00-65 00 73 00-20 00 74 00-6F 00 20 00 g l e
s t o
006CA820: 63 00 72 00-65 00 61 00-74 00 65 00-20 00 6F 00 c r e
a t e o
006CA830: 72 00 20 00-64 00 65 00-73 00 74 00-72 00 6F 00 r
d e s t r o
006CA840: 79 00 20 00-74 00 68 00-65 00 20 00-54 00 72 00 y
t h e T r
006CA850: 61 00 79 00-20 00 49 00-63 00 6F 00-6E 00 2E 00 a y
I c o n .
006CA860: 0A 00 54 00-6F 00 67 00-67 00 6C 00-65 00 20 00
T o g g l e
006CA870: 54 00 72 00-61 00 79 00-20 00 49 00-63 00 6F 00 T r a
y I c o
006CA880: 6E 00 09 00-46 00 69 00-6E 00 64 00-20 00 54 00 n
F i n d T
.
.
游标停在 006CA7E0: 28 的 Hex 数值上:
006CA7E0: 6B 00 65 00-2D 00 31 00-20 00 28 00-54 00 72 00 k e -
1 ( T r
.
F3 修改为 00 , 一边修改 , 右边的 ASCII 字串会相应改变 , 在这情况是改为 00 ,
字符就会消失 , 直至你见 (Trail Version) 都改掉了 , 手术完成 !
.
.
F9 update , F10 离开
.
重新运得 take1.exe , 再没有过期提示 , 也没有 (Trial Version) 字串
感觉就如注册版一样 , 好爽 ! :-)
.
.
转贴请不要修改内容 , 保持完整性 , 谢谢 !!
作者: Freeplayer
写於: 2001年11月27日 10:35 AM
- 标 题:Take-1 version 2.2 (6千字)
- 作 者:Freeplayer
- 时 间:2001-11-27 11:13:46
- 链 接:http://bbs.pediy.com