老文章档案 · 2003 年

试谈TEXme v1.0的破解

破解教程 · 破解杂谈 · 2003-09-15 · 作者:人气: · 出处:赢政天下整理收藏)

大家好,又见面了。不知大家看了上篇文章是否对KEY文件认证有些心得。今天我们看看

另一种风格的CRACKME软件。这次我们分析的是TEX99的TEXme v1.0版本。等级2级。虽然2

级,但加密去着实不弱。软件可以到下面地址下载。

此CRCAKME属于循环运算,在程序被展开后就开始循环计算NAME和SERIAL,等你添入正

确的NAME和SERIAL显示"YES! You found your serial!!"循环停止,否则显示

"Your serial is not valid."。这可以从下面的分析中看到。

我们先来看看破解的思路,先用W32反编译程序。查找有关的字串,这里就不再累述过程。

然后向上找可疑跳转,确定断点后用ICE动态分析,最终找到正确的SERIAL。

首先用W32载入texme.exe,老步骤,打开“REFS”查找字符串"YES! You found your serial!!",找到了双击。看到以下程序:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004012B6(C) ;这里有情况,说明这里是由004012B6处跳转来的。

|

* Possible StringData Ref from Data Obj ->"YES! You found your serial!!"

|

:004012CE 687F304000 push 0040307F

:004012D3 FF357C314000 push dword ptr [0040317C]

* Reference To: USER32.SetWindowTextA, Ord:0221h

|

:004012D9 E850020000 Call 0040152E

:004012DE 33C0 xor eax, eax

:004012E0 C9 leave

:004012E1 C21000 ret 0010

查找004012B6,看到以下程序:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004012A6(C) ;这里同上,说明这里是由004012A6处跳转来的。

|

:004012AE A267314000 mov byte ptr [00403167], al

:004012B3 83F810 cmp eax, 00000010 ;在这里。

:004012B6 7416 je 004012CE ;不跳就失败了。

* Possible StringData Ref from Data Obj ->"Your serial is not valid."

|

:004012B8 6865304000 push 00403065

:004012BD FF357C314000 push dword ptr [0040317C]

* Reference To: USER32.SetWindowTextA, Ord:0221h

|

:004012C3 E866020000 Call 0040152E

:004012C8 33C0 xor eax, eax

:004012CA C9 leave

:004012CB C21000 ret 0010

我们修改004012B6处"je"成"jnz"。程序被暴力破解。可是CRACKME是不准打补丁的。

我们只好继续分析了。查找"004012A6",找到,看到以下程序:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00401274(C) ;我们先不向上看了。

|

:0040128D 3D13010000 cmp eax, 00000113 ;这里断一下试一试

:00401292 7550 jne 004012E4

:00401294 E8BA010000 call 00401453 ;Call里是什么呢?

:00401299 0FBE0566314000 movsx eax, byte ptr [00403166]

:004012A0 3A0567314000 cmp al, byte ptr [00403167]

:004012A6 7506 jne 004012AE

:004012A8 33C0 xor eax, eax

:004012AA C9 leave

:004012AB C21000 ret 0010

用ICE中的Symbol Loader载入程序,运行,中断在程序入口处。BPX 40128D,然后

F5,程序被中断,F5又中断,程序已经进入循环。证明我们还是没有找错。BD *,F5。添

入NAME和SERIAL,Ctrl+D,BE *,F5,程序被中断。待程序运行到00401294处F8进入,

看到以下程序:

:00401453 55 push ebp

:00401454 8BEC mov ebp, esp

:00401456 83C4FC add esp, -4

:00401459 8925A0314000 mov dword ptr [004031A0], esp

:0040145F 8D2552314000 lea esp, dword ptr [00403152]

:00401465 0FBE0566314000 movsx eax, byte ptr [00403166]

:0040146C 03E0 add esp, eax

:0040146E C3 ret ;关键是RET后到哪里。

RET后程序到这里:

:00401361 8D3D8C314000 lea edi, dword ptr [0040318C]

:00401367 0FBE0568314000 movsx eax, byte ptr [00403168]

:0040136E 03F8 add edi, eax

:00401370 FE0568314000 inc byte ptr [00403168]

:00401376 A188314000 mov eax, dword ptr [00403188]

:0040137B 8B25A0314000 mov esp, dword ptr [004031A0]

:00401381 40 inc eax ;加1

:00401382 FF0588314000 inc dword ptr [00403188] ;迷惑项

:00401388 3307 xor eax, dword ptr [edi]

:0040138A A388314000 mov dword ptr [00403188], eax

:0040138F 803D6831400010 cmp byte ptr [00403168], 10

:00401396 7507 jne 0040139F

:00401398 80056631400004 add byte ptr [00403166], 04

:0040139F C9 leave

:004013A0 C3 ret ;出去还会回来的。呵呵。

这段是程序的关键所在,如果你看得懂,程序就破解一半了。基本是这样的,D 40318C

你可以看到你输入的NAME,过401376程序段后 ? EAX后可以看到你输入的SERIAL,而

403168则是一个计数器,它的值到16后就跳转出循环。程序在循环中这样取NAME的字符

ASCII码,不足16位以ASCII码"00"补齐。比如我的NAME:jojo[CCG],先取"j"的ASCII

值与你的SERIAL值加1后相异或,也就是00401382程序段。然后把结果送到403188中再把

"o"的ASCII值与上次相异或的结果加1后再相异或。结果再送到403188中,一直循环16次,

然后出循环。

出循环会到哪里呢?中断程序段0040128D,按F5,观察EAX的值,会有2次"111",2次

"138"后,出现"113",这时单步走没有多久可以看到以下程序:

:0040149C A188314000 mov eax, dword ptr [00403188]

:004014A1 0578241109 add eax, 09112478

:004014A6 85C0 test eax, eax

:004014A8 7509 jne 004014B3 ;如果不跳就万事大吉了

我们来算个算术题:0-09112478=F6EEDB88,就是说我们刚才异或半天的值等于

F6EEDB88就不会跳转,这样就使以下程序:

:004012AE A267314000 mov byte ptr [00403167], al

:004012B3 83F810 cmp eax, 00000010 ;在这里。

:004012B6 7416 je 004012CE ;不跳就失败了。

成功跳转,注册成功!

这样我们依此反推就可以得到正确的SERIAL。如果大家嫌太麻烦就自己做一个注册机吧。

好了,今天就到这里吧!休息、休息一下!!!对,差一点忘了,我的

NAME:jojo[CCG] SERIAL:3635081415

谨以此文献给我们可爱的CCG,希望它蒸蒸日上! (出处:赢政天下整理收藏)

相关文章:

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史