• 标 题:谈谈关于如何破解OicqPassOver.exe Ver1.14的问题 (4千字)
  • 作 者:电神魔鬼
  • 时 间:2000-7-31 21:32:25
  • 链 接:http://bbs.pediy.com

谈谈关于如何破解OicqPassOver.exe Ver1.14的问题



一.如何注册OicqPassOver.exe Ver1.14

1.如果你对这个软件没什么兴趣的话,按如下方法注册即可
在HKEY_CURRENT_USER\Software\Intel新建字符串值speed内容为102717715,再新建字符串值cpu内容为BB901AC1,其中cpu的内容会随speed的内容不同而变化.

2.如果你对他很感兴趣的话,分析一下他的注册流程

简要方法:
017f:00451d41 lea eax,[ebp-04]
017f:00451d44 call 00407b9c
017f:00451d49 mov edx,[ebp-04]
017f:00451d4c pop eax      ------>d eax
017f:00451d4d call 00403c3c
017f:00451d52 jnz 004551ee0

首先选注册,输入78787878,后按ctrl+d进入softice,执行s 30:0 l ffffffff '78787878',后bpm搜到的地址,按f5返回,点确定后被softice拦到,下bd *,按数次f12进入OicqPassOver的领空,按f10跟踪到上面所写的地方,当程序执行到00451d4c处时,用d eax,上下翻页看一下内存的话,speed值,cpu值,密码值写在一起,很容易找到,当程序执行到00451d52时,如果密码正确不跳,否则跳,跟踪完毕.

注册的话,填正确的密码,强制不跳,都能注册,但程序会在windows\system下放一个叫kbd.386的文件,据说这个玩艺会使使用者当机,我没碰到过当机,不知是怎么回事:(,可是不管你怎么注册,他都会放的,我只有继续跟踪了.

二.如何跳过程序的“暗柱”

我们继续跟踪到

017F:00451DB5 MOV EDX,00451E78
017f:00451dba mov edx,esi
017f:00451dbc mov ecx,[eax]
017f:00451dbe call [eax+34]
017f:00451dc1 dec ebx
017f:00451dc2 jnz 00451d85  ->jmp 00451e0f

这个jnz会在刚才d eax所显示内存处的下面连续写hahaha.....!,就是kbd.386的内容,我没有仔细分析,直接跳到00451e0f的话会提示注册成功,且不会在windows\system下放kbd.386(jmp 00451e0f是试出来的,在此省略测试若干,由于我没细分析,有毛病的话,就应该是jmp到哪的问题了)

三.如何跳过"路漫漫"的问题

这个问题我的能力解决不了,不过我参考了一下
iCEbIRD [CCG]  * [CCG] stands for cHINA cRACKING gROUP
              http://nemc.yeah.net/
              icebird_crack@21cn.com
的破 OICQ 密码终结者 1.13的关于消除nag screen的部分,得到完满的解决.

好我们开始(参考部分原文)

    因为soft-ice无法查找中文,用winhex查找"路漫漫"(他用的是ultra-edit,我习惯用winhex),把他改为cracking,然后执行OicqPassOver.exe,进入后在softice中下bpx destroywindow,点确定,被拦到,按f12到OicqPassOver的领空后,下s 30:0 l ffffffff 'cracking',bpm搜到的地址,退出OicqPassOver,再次执行OicqPassOver.exe,被拦到,下bd *,按f12直到进入OicqPassOver的领空,按住f10直到回到OicqPassOver中,点确定后又被拦到,看一下是哪一个call调的

017f:0044b14d call [edx+cc]

    由于这是一个公共的call,我们不能直接把它给NOP掉,所以在程序中加入一段子程序,在44b14d处首先CALL我的子程序进行判断,看是出现那个有诗句的nag screen还是其它。那么我的code要放在哪里呢?因为程序的入口在.CODE section,所以用winhex打开文件,在.CODE section中找可以存放我的code的地方,我找到了这里:(这一段几乎抄的原文,下面是关键 )

000562e3 e8 bb f5 fe ff 5b e8 a1 c8 fa ff 90 00 00 00  <- end of .CODE section
000562f2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  <- here save my code

    解释一下我理解的上面的查找方法:抄下softice跟踪到的机器码,比如017f:00451d52 jnz 004551ee0的机器码是0f85c8000000,在winhex中查找之,找到后,按pagedown向下翻页直到又连续的000000000000000000000......处(在hex values中),最明显的标志是text栏中runtime error的上面(我的表达能力太差了:(,sorry)

    我决定在562f2处放我的code,所以先在这里做一个mark,键入mycode.
    再次运行程序,这次在44b14d处拦下后就下s 30:0 l ffffffff 'mycode',找到了内存地址456ee3, 此时还要记下两样数据:[EDX+CC]==>443608,EDI==>0
    现在可以开始改了,下A 44b14d,然后下CALL 456ee3,下nop,回车,程序变成了这样

017f:00448125 0f8450bcee78  call 456ee3
017f:00448126 90            nop

接下来就下G 456ee3,到了456ee3后就下A,然后下这些指令:

xxxx:xxxxxxxx 83ff00        CMP      EDI,00
xxxx:xxxxxxxx 0f846742ffff    JZ        0044b153
xxxx:xxxxxxxx e917c7feff    JMP      00443608

完成.

四.做成release版的OicqPassOver.exe密码终结者

1.注册号随便填

查找:0f85c8000000b201
改为:909090909090b201

2.跳过程序的“暗柱”

查找:ff51344b75f1
改为:ff51344beb4b

3.跳过"路漫漫....."

查找:8b10ff92cc0000008945f8
改为:8b10e891bd0000908945f8

查找:6D79636F6465????????????????
改为:83ff000f846742ffffe917c7feff
(只有填mycode时,这样找,或直接用winhex在000562f2处写入83ff000f846742ffffe917c7feff)

完成.

注:1.没有经过安全测试,有什么副作用未知:)
  2.我用的是winhex9.52,如果你没有注册号的话,按如下方法改可以免注册:)
附winhex ver9.52免注册

*[45759d] 在这强制置1的话,程序会认为你已经注册

017f:00450041 jnz 00450064 ->nop
017f:00450062 jz 00450068  ->jmp 00450068
017f:0043e31b jl 0043e372  ->nop
017f:0043e36b jz 0043e37d  ->jmp 0043e37d

7521B85C524500
9090B85C524500

3B027404
3B02eb04

7C55A13C764500
9090A13C764500

741083F954
eb1083F954

cracked by 电神魔鬼
thanks for your supports