首页
社区
课程
招聘
高等教育自学考试英语词汇全息速记 3.1
发表于: 2004-11-30 19:48 8170

高等教育自学考试英语词汇全息速记 3.1

2004-11-30 19:48
8170

软件大小:627KB
软件语言:简体中文
软件类别:国产软件/试用版/外语工具
运行环境:Win9x/Me/NT/2000/XP
加入时间:2004-3-6 15:44:24
下载次数:13198
下载地址:http://chsst.6to23.com/
软件介绍:
《AAA Words--高等教育自学考试英语词汇全息速记》 根据自考大纲收词4500余个, 由571个全息记忆簇
构成,每个全息记忆簇由大约7个词构成,并配以一句助记短句加强记忆(例句:He quickly kicked the
chicken that picked him. 他快速地踢那只啄他的小鸡。),句子诙谐有趣,能使记忆印象深刻,记住
一句话就可以记住大约7个词,4500余词当600余个记。词汇、句子即点即读、即指即译,方便记忆;θ波
诱导技术,使学习效率成倍提高。《高等教育自学考试英语词汇全息速记》适合高等教育自学考试考生和
其他具有同等要求的人使用。

peid查显示PEtite 2.2,OD载入

004E5046 q>  B8 00504E00         mov eax,qxsj-zk3.004E5000
004E504B     68 0C624A00         push qxsj-zk3.004A620C
004E5050     64:FF35 00000000    push dword ptr fs:[0]
004E5057     64:8925 00000000    mov dword ptr fs:[0],esp
004E505E     66:9C               pushfw
004E5060     60                  pushad====>看到它就想起esp
004E5061     50                  push eax====>f8走到这里,esp=12FF9A
004E5062     8BD8                mov ebx,eax
004E5064     0300                add eax,dword ptr ds:[eax]
004E5066     68 6C990400         push 4996C
004E506B     6A 00               push 0

命令行输入hr 12FF9A,f9运行

004E513E     A4                  movs byte ptr es:[edi],byte ptr d>
004E513F     33C9                xor ecx,ecx
004E5141     83FB 00             cmp ebx,0
004E5144   ^ 7E A4               jle short qxsj-zk3.004E50EA
004E5146     E8 AAFFFFFF         call qxsj-zk3.004E50F5

shift+F9跳过异常,来到

004E5041     66:9D               popfw
004E5043     83C4 08             add esp,8
004E5046 q>- E9 75EAFBFF         jmp qxsj-zk3.004A3AC0====>跳到入口
004E504B   - E9 8F579777         jmp kernel32.GetCurrentThreadId

入口点
004A3AC0     55                  push ebp  ////DUMP
004A3AC1     8BEC                mov ebp,esp
004A3AC3     83C4 F4             add esp,-0C
004A3AC6     53                  push ebx
004A3AC7     56                  push esi
004A3AC8     57                  push edi
004A3AC9     B8 28384A00         mov eax,qxsj-zk3.004A3828
004A3ACE     E8 B534F6FF         call qxsj-zk3.00406F88
004A3AD3     A1 1C604A00         mov eax,dword ptr ds:[4A601C]
004A3AD8     8B00                mov eax,dword ptr ds:[eax]
004A3ADA     E8 AD91FAFF         call qxsj-zk3.0044CC8C
004A3ADF     A1 1C604A00         mov eax,dword ptr ds:[4A601C]
004A3AE4     8B00                mov eax,dword ptr ds:[eax]
004A3AE6     BA A03B4A00         mov edx,qxsj-zk3.004A3BA0         ; ASCII "eBook"
004A3AEB     E8 A08DFAFF         call qxsj-zk3.0044C890
004A3AF0     6A 00               push 0
004A3AF2     A1 1C604A00         mov eax,dword ptr ds:[4A601C]
004A3AF7     8B00                mov eax,dword ptr ds:[eax]
004A3AF9     8B40 24             mov eax,dword ptr ds:[eax+24]
004A3AFC     50                  push eax
004A3AFD     E8 6A3FF6FF         call qxsj-zk3.00407A6C            ; jmp to user32.ShowWindow

运行,OEP=A3AC0,RVA=000A818C,size=7B0,点“获得输入信息”,有几个无效的函数,右键点“追踪层次1”,全部修复,脱壳后的程序运行出错。

二、手动修正文件指针

用Ollydbg载入脱壳后的程序,寻找出错的地方:

004A3AC0 1> $  55                push ebp
004A3AC1    .  8BEC              mov ebp,esp
004A3AC3    .  83C4 F4           add esp,-0C
004A3AC6    .  53                push ebx
004A3AC7    .  56                push esi
004A3AC8    .  57                push edi
004A3AC9    .  B8 28384A00       mov eax,1_.004A3828
004A3ACE    .  E8 B534F6FF       call 1_.00406F88
004A3AD3    .  A1 1C604A00       mov eax,dword ptr ds:[4A601C]
004A3AD8    .  8B00              mov eax,dword ptr ds:[eax]
004A3ADA    .  E8 AD91FAFF       call 1_.0044CC8C
004A3ADF    .  A1 1C604A00       mov eax,dword ptr ds:[4A601C]
004A3AE4    .  8B00              mov eax,dword ptr ds:[eax]
004A3AE6    .  BA A03B4A00       mov edx,1_.004A3BA0               ;  ASCII "eBook"
004A3AEB    .  E8 A08DFAFF       call 1_.0044C890
004A3AF0    .  6A 00             push 0                            ; /ShowState = SW_HIDE
004A3AF2    .  A1 1C604A00       mov eax,dword ptr ds:[4A601C]     ; |
004A3AF7    .  8B00              mov eax,dword ptr ds:[eax]        ; |
004A3AF9    .  8B40 24           mov eax,dword ptr ds:[eax+24]     ; |
004A3AFC    .  50                push eax                          ; |hWnd
004A3AFD    .  E8 6A3FF6FF       call <jmp.&user32.ShowWindow>     ; \ShowWindow
004A3B02    .  6A EC             push -14                          ; /Index = GWL_EXSTYLE
004A3B04    .  A1 1C604A00       mov eax,dword ptr ds:[4A601C]     ; |
004A3B09    .  8B00              mov eax,dword ptr ds:[eax]        ; |
004A3B0B    .  8B58 24           mov ebx,dword ptr ds:[eax+24]     ; |
004A3B0E    .  53                push ebx                          ; |hWnd
004A3B0F    .  E8 083DF6FF       call <jmp.&user32.GetWindowLongA> ; \GetWindowLongA
004A3B14    .  0D 80000000       or eax,80
004A3B19    .  50                push eax                          ; /NewValue
004A3B1A    .  6A EC             push -14                          ; |Index = GWL_EXSTYLE
004A3B1C    .  A1 1C604A00       mov eax,dword ptr ds:[4A601C]     ; |
004A3B21    .  53                push ebx                          ; |hWnd
004A3B22    .  E8 053FF6FF       call <jmp.&user32.SetWindowLongA> ; \SetWindowLongA
004A3B27    .  E8 1857FFFF       call 1_.00499244   ///经过这里就出错,F7

00499244   /$  55                push ebp
00499245   |.  8BEC              mov ebp,esp
00499247   |.  6A 00             push 0
00499249   |.  6A 00             push 0
0049924B   |.  6A 00             push 0
0049924D   |.  53                push ebx
0049924E   |.  33C0              xor eax,eax
00499250   |.  55                push ebp
00499251   |.  68 19934900       push 1_.00499319
00499256   |.  64:FF30           push dword ptr fs:[eax]
00499259   |.  64:8920           mov dword ptr fs:[eax],esp
0049925C   |.  33DB              xor ebx,ebx
0049925E   |.  B8 FC7A4A00       mov eax,1_.004A7AFC
00499263   |.  BA 30934900       mov edx,1_.00499330               ;  ASCII "1.29c for Windows"
00499268   |.  E8 77AAF6FF       call 1_.00403CE4
0049926D   |.  B8 3C7B4A00       mov eax,1_.004A7B3C
00499272   |.  BA 4C934900       mov edx,1_.0049934C               ;  ASCII "WebPacker"
00499277   |.  E8 68AAF6FF       call 1_.00403CE4
0049927C   |.  C705 D07A4A00 240>mov dword ptr ds:[4A7AD0],60124   ;注意文件指针60124,这是针对原exe的指针

进行手动修复:

1、用 WinHex 打开原程序,复制60124至E2724的数据,索性复制到最后。然后打开修复输入表后的脱壳文件,粘贴到文件末尾,
看一下粘贴数据在新文件中的偏移:E9000  另存为:修复DUMPED_.EXE

2、用 WinHex 打开 修复DUMPED_.EXE ,去到99282处,把240106改为00900E  修正新的文件指针
即把:0049927C       C705D07A4A0024010600  mov dword ptr ds:[4A7AD0],60124
改成:0049927C       C705D07A4A0000900E00  mov dword ptr ds:[4A7AD0],E9000

OK!修改后的程序正常运行,只是文件大了许多。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (13)
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
多谢版主的鼓励:D
2004-12-1 13:48
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我找到个四级全息记忆,应该和这个差不多吧~回去看看
2004-12-1 16:40
0
雪    币: 98745
活跃值: (201039)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持!!!
2004-12-1 17:24
0
雪    币: 149
活跃值: (344)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
支持!
2004-12-2 04:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持!
2004-12-3 14:17
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
破界又多一位达人。
2004-12-3 14:42
0
雪    币: 159
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
手动修复的地方如何作,能详细一点吗,我没有成功
2004-12-5 08:57
0
雪    币: 133
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不错!:o
2004-12-5 12:16
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
10
好文先收藏起来。:)
2004-12-6 08:29
0
雪    币: 768
活跃值: (540)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
11
运行,OEP=A3AC0,RVA=000A818C,size=7B0,点“获得输入信息”,有几个无效的函数,右键点“追踪层次1”,全部修复,脱壳后的程序运行出错。

++++++++++++++++++++++++++++++

小声的问一声上面的 SIZE=7B0 从哪来的??

我怎么看不到啊!!!

谢谢!!!:);)
2004-12-7 11:17
0
雪    币: 2943
活跃值: (1788)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
12
FLY早有类似作品出来,好像是
另类PEtite V2.2 脱壳+修复+破解――英汉汉英双向学习词典 V1.0
  
  
  
下载页面:  http://soft.269.net/SoftWareView.asp?SoftWareID=48727  
软件大小:  900 KB
适用平台:   Wn9x, NT, ME, Win2k, WinXP  
收录时间:   2003-7-31  
推荐等级:   *****  

【软件简介】:英汉汉英双向学习词典,很多英语爱好者喜欢采取“英汉―汉英”双向的学习方式来掌握英语词汇,对于“英汉”方式,普通的英汉词典就足够了,而对于“汉英”方式,一般的汉英词典就显得无能为力了;这是因为英语词汇的精髓和汉语词汇的精髓因文化背景和地域差异而有很大的差异:翻一翻英汉汉英双向学习词典的“汉英索引”部分,可以发现很多象“不…”、“无…”、“把…”、“使…”、“…的”、“…地”一类的“词”,而这类的“词”在汉英语词典中根本找不到,因为它们在汉语中并非作为词来对待,因而在传统的汉英词典中根本找不到象“不能永生的(mortal)”、“不精确的(inaccurate)”之类的词,而“mortal”、“inaccurate”之类的词恰恰是地地道道的英语词语;同理,在普通汉英词典中,很多汉语词汇只能用英文短语或句子来解释,所以通过常规的汉英词典很难学到英语词汇的精髓。鉴于上述原因,英汉汉英双向学习词典的18828条汉语词条全部取自“英汉词典”部分,从而达到了英汉、汉英的完全对等,对于习喜欢采用双向的方式来学习英语词汇的广大英语爱好者来说,英汉汉英双向学习词典是一种理想选择。

【软件限制】:功能限制。偶只是想看看这个壳,偶不用这个东东。

【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

【调试环境】:WinXP、Ollydbg1.09、PEiD、LordPE、ImportREC、WinHex、W32Dasm 9.0白金版

―――――――――――――――――――――――――――――――――  
【过    程】:
           

一、脱壳

设置Ollydbg忽略所有的异常。老规矩:载入后弹出“是压缩代码――要继续进行分析吗?”,点“否”。

004E5046     B8 00504E00          mov eax,英汉汉英.004E5000
                                  ====>进入OD后断在这!

下断:BP LoadLibraryA             F9运行,断下!  周雄飞注:这里其实已经看到了OEP:004A3AC0,以后再次载入它,依然运行到这里,G 004A3AC0直达目的地,用LoadPE脱壳,修复同FLY一样。不过达到1.42MB,比FLY大了许多呀!!!

77E605D8     837C24 04 00         cmp dword ptr ss:[esp+4],0
                                  ====>断在这!CTRL+F9执行到返回
77E605DD     53                   push ebx
77E605DE     56                   push esi
77E605DF     74 19                je short kernel32.77E605FA
77E605E1     68 9C5BE777          push kernel32.77E75B9C   
77E605E6     FF7424 10            push dword ptr ss:[esp+10]
77E605EA     FF15 9013E477        call dword ptr ds:[<&ntdll._strcmpi>]  
77E605F0     85C0                 test eax,eax
77E605F2     59                   pop ecx
77E605F3     59                   pop ecx
77E605F4     0F84 76AF0100        je kernel32.77E7B570
77E605FA     6A 00                push 0
77E605FC     6A 00                push 0
77E605FE     FF7424 14            push dword ptr ss:[esp+14]
77E60602     E8 B1FFFFFF          call kernel32.LoadLibraryExA
77E60607     5E                   pop esi
77E60608     5B                   pop ebx
77E60609     C2 0400              retn 4
                                  ====>返回到 004A6355

――――――――――――――――――――――――

004A6344     833E 00              cmp dword ptr ds:[esi],0
004A6347     0F84 03020000        je 英汉汉英.004A6550
004A634D     51                   push ecx
004A634E     51                   push ecx
004A634F     FF95 90070000        call dword ptr ss:[ebp+790]
004A6355     85C0                 test eax,eax   
                                  ====>77E60609 返回到这
004A6357     0F84 DF000000        je 英汉汉英.004A643C
004A635D     8BF8                 mov edi,eax
004A635F     0340 3C              add eax,dword ptr ds:[eax+3C]
004A6362     8B40 78              mov eax,dword ptr ds:[eax+78]
004A6365     FF7438 18            push dword ptr ds:[eax+edi+18]
004A6369     8B4C38 24            mov ecx,dword ptr ds:[eax+edi+24]
004A636D     03CF                 add ecx,edi
004A636F     51                   push ecx
004A6370     8B4C38 20            mov ecx,dword ptr ds:[eax+edi+20]
004A6374     03CF                 add ecx,edi
004A6376     51                   push ecx
004A6377     FF7438 10            push dword ptr ds:[eax+edi+10]
004A637B     FF7438 14            push dword ptr ds:[eax+edi+14]
004A637F     8B4438 1C            mov eax,dword ptr ds:[eax+edi+1C]
004A6383     03C7                 add eax,edi
004A6385     50                   push eax
004A6386     56                   push esi
004A6387     8B36                 mov esi,dword ptr ds:[esi]
004A6389     03F5                 add esi,ebp
004A638B     8B06                 mov eax,dword ptr ds:[esi]
004A638D     85C0                 test eax,eax
004A638F     0F84 81000000        je 英汉汉英.004A6416
004A6395     0FBAE0 1F            bt eax,1F
004A6399     73 2B                jnb short 英汉汉英.004A63C6

004A63C6     03C5                 add eax,ebp
004A63C8     50                   push eax
004A63C9     50                   push eax
004A63CA     57                   push edi
004A63CB     FF95 94070000        call dword ptr ss:[ebp+794]  ; kernel32.GetProcAddress
004A63D1     85C0                 test eax,eax
004A63D3     74 7F                je short 英汉汉英.004A6454
004A63D5     FF4C24 28            dec dword ptr ss:[esp+28]
004A63D9     7D 1F                jge short 英汉汉英.004A63FA
004A63DB     8B5424 24            mov edx,dword ptr ss:[esp+24]
004A63DF     C602 E9              mov byte ptr ds:[edx],0E9
004A63E2     2BC2                 sub eax,edx
004A63E4     83E8 05              sub eax,5
004A63E7     8942 01              mov dword ptr ds:[edx+1],eax
004A63EA     8BC2                 mov eax,edx
004A63EC     83C2 05              add edx,5
004A63EF     895424 24            mov dword ptr ss:[esp+24],edx
004A63F3     83E2 07              and edx,7
004A63F6     895424 28            mov dword ptr ss:[esp+28],edx
004A63FA     8906                 mov dword ptr ds:[esi],eax
004A63FC     873C24               xchg dword ptr ss:[esp],edi
004A63FF     83C9 FF              or ecx,FFFFFFFF
004A6402     33C0                 xor eax,eax
004A6404     F2:AE                repne scas byte ptr es:[edi]
004A6406     FD                   std
004A6407     F7D1                 not ecx
004A6409     4F                   dec edi
004A640A     F3:AA                rep stos byte ptr es:[edi]
004A640C     5F                   pop edi
004A640D     FC                   cld
004A640E     83C6 04              add esi,4
004A6411   ^ E9 75FFFFFF          jmp 英汉汉英.004A638B
                                  ====>向上看发现004A638F可跳出循环。 F4下去
004A6416     5E                   pop esi
004A6417     83C4 18              add esp,18
004A641A     8B16                 mov edx,dword ptr ds:[esi]
004A641C     03D5                 add edx,ebp
004A641E     8D43 47              lea eax,dword ptr ds:[ebx+47]
004A6421     8B4C24 04            mov ecx,dword ptr ss:[esp+4]
004A6425     833A 00              cmp dword ptr ds:[edx],0
004A6428     74 12                je short 英汉汉英.004A643C
004A642A     3B1A                 cmp ebx,dword ptr ds:[edx]
004A642C     8318 00              sbb dword ptr ds:[eax],0
004A642F     390A                 cmp dword ptr ds:[edx],ecx
004A6431     8318 00              sbb dword ptr ds:[eax],0
004A6434     83C2 04              add edx,4
004A6437     C108 03              ror dword ptr ds:[eax],3
004A643A   ^ EB E9                jmp short 英汉汉英.004A6425
                                  ====>F4下去跳出循环!
004A643C     C706 00000000        mov dword ptr ds:[esi],0
004A6442     5F                   pop edi
004A6443     83C9 FF              or ecx,FFFFFFFF
004A6446     33C0                 xor eax,eax
004A6448     F2:AE                repne scas byte ptr es:[edi]
004A644A     8BCF                 mov ecx,edi
004A644C     83C6 04              add esi,4
004A644F   ^ E9 F0FEFFFF          jmp 英汉汉英.004A6344
                                  ====>向上看004A6347可以跳出循环。

004A6550     59                   pop ecx
                                  ====>此处下断。F9断在这
004A6551     5E                   pop esi
004A6552     FD                   std
004A6553     33C0                 xor eax,eax
004A6555     B9 54030000          mov ecx,354
004A655A     E8 DEEA0300          call 英汉汉英.004E503D
                                  ====>F7进入

004E503D     5F                   pop edi  
004E503E     F3:AA                rep stos byte ptr es:[edi]
004E5040     61                   popad
004E5041     66:9D                popfw
004E5043     83C4 08              add esp,8
004E5046     E9 75EAFBFF          jmp 英汉汉英.004A3AC0
                                  ====>飞向光明之巅!

PEtite V2.2 相当容易啦,如此找OEP就行了。
――――――――――――――――――――――――

004A3AC0     55                   push ebp
                                  ====>在这儿用LordPE完全DUMP这个进程

004A3AC1     8BEC                 mov ebp,esp
004A3AC3     83C4 F4              add esp,-0C
004A3AC6     53                   push ebx
004A3AC7     56                   push esi
004A3AC8     57                   push edi
004A3AC9     B8 28384A00          mov eax,英汉汉英.004A3828
004A3ACE     E8 B534F6FF          call 英汉汉英.00406F88

――――――――――――――――――――――――

运行ImportREC,选择这个进程。把OEP改为000A3AC0,点IT AutoSearch,点“Get Import”,
有几个无效的函数,右键点“追踪层次1”全部修复。FixDump,905K ->932K  但是运行出错!

―――――――――――――――――――――――――――――――――
二、手动修正文件指针

近日有兄弟发现某些Petite壳用脱壳机自动脱壳或者手脱均无法正常运行。这个程序也是这样的。
感谢[FCG]的 mikelong 兄弟指点!使偶又多学点知识,呵呵  

用Ollydbg载入脱壳后的程序,寻找出错的地方:

004A3AC0       55                 push ebp
004A3AC1       8BEC               mov ebp,esp
004A3AC3       83C4 F4            add esp,-0C
004A3AC6       53                 push ebx
004A3AC7       56                 push esi
004A3AC8       57                 push edi
004A3AC9       B8 28384A00        mov eax,DUMPED_ 004A3828
004A3ACE       E8 B534F6FF        call DUMPED_ 00406F88
004A3AD3       A1 1C604A00        mov eax,dword ptr ds:[4A601C]
004A3AD8       8B00               mov eax,dword ptr ds:[eax]
004A3ADA       E8 AD91FAFF        call DUMPED_ 0044CC8C
004A3ADF       A1 1C604A00        mov eax,dword ptr ds:[4A601C]
004A3AE4       8B00               mov eax,dword ptr ds:[eax]
004A3AE6       BA A03B4A00        mov edx,DUMPED_ 004A3BA0       ;  ASCII "eBook"
004A3AEB       E8 A08DFAFF        call DUMPED_ 0044C890
004A3AF0       6A 00              push 0  
004A3AF2       A1 1C604A00        mov eax,dword ptr ds:[4A601C]
004A3AF7       8B00               mov eax,dword ptr ds:[eax]   
004A3AF9       8B40 24            mov eax,dword ptr ds:[eax+24]  
004A3AFC       50                 push eax
004A3AFD       E8 6A3FF6FF        call <jmp &user32 ShowWindow>  
004A3B02       6A EC              push -14           
004A3B04       A1 1C604A00        mov eax,dword ptr ds:[4A601C]   
004A3B09       8B00               mov eax,dword ptr ds:[eax]   
004A3B0B       8B58 24            mov ebx,dword ptr ds:[eax+24]  
004A3B0E       53                 push ebx   
004A3B0F       E8 083DF6FF        call <jmp &user32 GetWindowLongA>   
004A3B14       0D 80000000        or eax,80
004A3B19       50                 push eax     
004A3B1A       6A EC              push -14  
004A3B1C       A1 1C604A00        mov eax,dword ptr ds:[4A601C]  
004A3B21       53                 push ebx   
004A3B22       E8 053FF6FF        call <jmp &user32 SetWindowLongA>
004A3B27       E8 1857FFFF        call DUMPED_ 00499244                              :周雄飞,为什么呢?经过跟踪,发现过了这一行,程序就跳出到别处,这里跳到了:77F3526B这显然不是原程序了呀,原来找错就是这样的呀。
                                  ====>经过这里就出错啦!  重新LOAD进去看看!

――――――――――――――――――――――――
进入出错CALL: 004A3B27  call DUMPED_ 00499244

  
00499244       55                 push ebp
00499245       8BEC               mov ebp,esp
00499247       6A 00              push 0
00499249       6A 00              push 0
0049924B       6A 00              push 0
0049924D       53                 push ebx
0049924E       33C0               xor eax,eax
00499250       55                 push ebp
00499251       68 19934900        push 1_.00499319
00499256       64:FF30            push dword ptr fs:[eax]
00499259       64:8920            mov dword ptr fs:[eax],esp
0049925C       33DB               xor ebx,ebx
0049925E       B8 FC7A4A00        mov eax,DUMPED_.004A7AFC
00499263       BA 30934900        mov edx,DUMPED_.00499330   ;  ASCII "1.29c for Windows"
00499268       E8 77AAF6FF        call DUMPED_.00403CE4
0049926D       B8 3C7B4A00        mov eax,DUMPED_.004A7B3C
00499272       BA 4C934900        mov edx,DUMPED_.0049934C   ;  ASCII "WebPacker"
00499277       E8 68AAF6FF        call DUMPED_.00403CE4
0049927C       C705D07A4A00240106 mov dword ptr ds:[4A7AD0],60124
                                  ====>注意文件指针60124,这是针对原exe的指针

――――――――――――――――――――――――

根据 mikelong 兄弟的指点,偶来进行手动修复:

1、用 WinHex 打开原程序,复制60124至E2724的数据,呵呵,索性复制到最后。然后打开修复输入表后的脱壳文件,就粘贴到文件末尾吧,看一下粘贴数据在新文件中的偏移:E9000  另存为:修复DUMPED_.EXE

2、用 WinHex 打开 修复DUMPED_.EXE ,去到99282处,把240106改为00900E  修正新的文件指针
即把:0049927C       C705D07A4A0024010600  mov dword ptr ds:[4A7AD0],60124
改成:0049927C       C705D07A4A0000900E00  mov dword ptr ds:[4A7AD0],E9000

OK!修改后的程序正常运行!只是文件大了许多。菜鸟如偶没办法啦。

对于此类让人修理过的Petite2.2壳的程序关键是找到出错的原文件指针,然后把相应代码复制进脱壳后的程序,修改成新的偏移地址。再次感谢 mikelong 兄弟  这些都是他的成果!

再提供一个类似的Petite2.2壳:3TV宽带卫星网络电视机  下载地址:http://webtv.zmdns.com/3tv.exe
可以参考:http://www.51itcool.com/fcg/Announce/Announce.asp?BoardID=3&ID=2842

―――――――――――――――――――――――――――――――――
三、破解

这个东东是用 Delphi 编写的EBOOK做的程序,不太清楚是用哪个制作EBOOK工具加工的。
注册有点烦人,感谢 DarkNess0ut 帮忙测试  明码比较,懒人如偶太困了,没看算法啦。

晕,点“英汉索引”L就会出现:“本部分仅供注册用户使用,非注册用户只能使用a-k部分的词汇”,下面才出现识别码,呵呵,有点隐蔽。

用户名:fly
识别码:89DD-5EA0123
试炼码:135724689012
―――――――――――――――――――――――――――――――――
关键地方不太好找,下面这点东西是用 内存搜索 加 内存断点 找到的。  周雄飞:这里依然不知道用呀!!!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049ABAA(C)
|
:0049ABED 8D55FC                  lea edx, dword ptr [ebp-04]
:0049ABF0 A10C604A00              mov eax, dword ptr [004A600C]
:0049ABF5 8B00                    mov eax, dword ptr [eax]
:0049ABF7 E8A4E2F6FF              call 00408EA0
:0049ABFC 8D85DCFEFFFF            lea eax, dword ptr [ebp+FFFFFEDC]
:0049AC02 8D55EB                  lea edx, dword ptr [ebp-15]
:0049AC05 E8AA92F6FF              call 00403EB4
:0049AC0A 8B85DCFEFFFF            mov eax, dword ptr [ebp+FFFFFEDC]
                                  ====>EAX=89DD-5EA0123             识别码
:0049AC10 8D95E0FEFFFF            lea edx, dword ptr [ebp+FFFFFEE0]
:0049AC16 E865F0FFFF              call 00499C80
:0049AC1B 8B85E0FEFFFF            mov eax, dword ptr [ebp+FFFFFEE0]
:0049AC21 50                      push eax
:0049AC22 8D95D8FEFFFF            lea edx, dword ptr [ebp+FFFFFED8]
:0049AC28 A1105F4A00              mov eax, dword ptr [004A5F10]
:0049AC2D 8B00                    mov eax, dword ptr [eax]
                                  ====>EAX=135724689012             试炼码
:0049AC2F E86CE2F6FF              call 00408EA0
:0049AC34 8B95D8FEFFFF            mov edx, dword ptr [ebp+FFFFFED8]
:0049AC3A 8D45F8                  lea eax, dword ptr [ebp-08]
:0049AC3D 59                      pop ecx
:0049AC3E E81993F6FF              call 00403F5C
:0049AC43 8B45FC                  mov eax, dword ptr [ebp-04]
                                  ====>EAX=fly                      用户名
:0049AC46 E8C592F6FF              call 00403F10
:0049AC4B 83F803                  cmp eax, 00000003
                                  ====>用户名至少3位
:0049AC4E 7D4C                    jge 0049AC9C

:0049AC9C 8B45F8                  mov eax, dword ptr [ebp-08]
                                  ====>EAX=135724689012             试炼码
:0049AC9F E86C92F6FF              call 00403F10
:0049ACA4 83F80C                  cmp eax, 0000000C
                                  ====>注册码需要12位
:0049ACA7 740E                    je 0049ACB7

:0049ACB7 A1AC5F4A00              mov eax, dword ptr [004A5FAC]
:0049ACBC 803800                  cmp byte ptr [eax], 00
:0049ACBF 7542                    jne 0049AD03
:0049ACC1 A150604A00              mov eax, dword ptr [004A6050]
:0049ACC6 8B00                    mov eax, dword ptr [eax]
:0049ACC8 50                      push eax
:0049ACC9 8B45F8                  mov eax, dword ptr [ebp-08]
:0049ACCC 50                      push eax
:0049ACCD A1E0604A00              mov eax, dword ptr [004A60E0]
:0049ACD2 8A00                    mov al, byte ptr [eax]
:0049ACD4 50                      push eax
:0049ACD5 8D85C8FEFFFF            lea eax, dword ptr [ebp+FFFFFEC8]
:0049ACDB 8D55EB                  lea edx, dword ptr [ebp-15]
:0049ACDE E8D191F6FF              call 00403EB4
:0049ACE3 8B8DC8FEFFFF            mov ecx, dword ptr [ebp+FFFFFEC8]
:0049ACE9 8B1584604A00            mov edx, dword ptr [004A6084]
:0049ACEF 8B12                    mov edx, dword ptr [edx]
:0049ACF1 8B45FC                  mov eax, dword ptr [ebp-04]
:0049ACF4 E893F5FFFF              call 0049A28C
                                  ====>关键CALL!进入!
:0049ACF9 84C0                    test al, al
:0049ACFB 0F84C3000000            je 0049ADC4
                                  ====>跳则OVER!
:0049AD01 EB15                    jmp 0049AD18

――――――――――――――――――――――――
进入关键CALL:0049ACF4   call 0049A28C

* Referenced by a CALL at Addresses:
|:00498C86   , :0049ACF4   
|
:0049A28C 55                      push ebp
:0049A28D 8BEC                    mov ebp, esp
:0049A28F 6A00                    push 00000000
:0049A291 6A00                    push 00000000
:0049A293 6A00                    push 00000000
:0049A295 6A00                    push 00000000
:0049A297 6A00                    push 00000000
:0049A299 6A00                    push 00000000
:0049A29B 6A00                    push 00000000
:0049A29D 53                      push ebx
:0049A29E 56                      push esi
:0049A29F 57                      push edi
:0049A2A0 894DF4                  mov dword ptr [ebp-0C], ecx
:0049A2A3 8955F8                  mov dword ptr [ebp-08], edx
:0049A2A6 8945FC                  mov dword ptr [ebp-04], eax
:0049A2A9 8B45FC                  mov eax, dword ptr [ebp-04]
:0049A2AC E8139EF6FF              call 004040C4
:0049A2B1 8B45F8                  mov eax, dword ptr [ebp-08]
:0049A2B4 E80B9EF6FF              call 004040C4
:0049A2B9 8B45F4                  mov eax, dword ptr [ebp-0C]
:0049A2BC E8039EF6FF              call 004040C4
:0049A2C1 8B4510                  mov eax, dword ptr [ebp+10]
:0049A2C4 E8FB9DF6FF              call 004040C4
:0049A2C9 8B450C                  mov eax, dword ptr [ebp+0C]
:0049A2CC E8F39DF6FF              call 004040C4
:0049A2D1 33C0                    xor eax, eax
:0049A2D3 55                      push ebp
:0049A2D4 68AEA34900              push 0049A3AE
:0049A2D9 64FF30                  push dword ptr fs:[eax]
:0049A2DC 648920                  mov dword ptr fs:[eax], esp
:0049A2DF BE01000000              mov esi, 00000001
:0049A2E4 33DB                    xor ebx, ebx
:0049A2E6 8B450C                  mov eax, dword ptr [ebp+0C]
:0049A2E9 E8229CF6FF              call 00403F10
:0049A2EE 83F80C                  cmp eax, 0000000C
:0049A2F1 0F858F000000            jne 0049A386
:0049A2F7 8D45E4                  lea eax, dword ptr [ebp-1C]
:0049A2FA 8B550C                  mov edx, dword ptr [ebp+0C]
:0049A2FD E8269AF6FF              call 00403D28

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049A381(U)
|
:0049A302 8B4510                  mov eax, dword ptr [ebp+10]
:0049A305 50                      push eax
:0049A306 8A4508                  mov al, byte ptr [ebp+08]
:0049A309 50                      push eax
:0049A30A 8D45F0                  lea eax, dword ptr [ebp-10]
:0049A30D 50                      push eax
:0049A30E 8B4DF4                  mov ecx, dword ptr [ebp-0C]
:0049A311 8B55F8                  mov edx, dword ptr [ebp-08]
:0049A314 8B45FC                  mov eax, dword ptr [ebp-04]
:0049A317 E894010000              call 0049A4B0
                                  ====>算法CALL!
:0049A31C 8D55EC                  lea edx, dword ptr [ebp-14]
:0049A31F 8B45F0                  mov eax, dword ptr [ebp-10]
:0049A322 E805FAFFFF              call 00499D2C
:0049A327 8B45EC                  mov eax, dword ptr [ebp-14]
                                  ====>EAX=CWIDFLXCMYLO             注册码
:0049A32A 8B550C                  mov edx, dword ptr [ebp+0C]
                                  ====>EDX=135724689012             试炼码
:0049A32D E8EE9CF6FF              call 00404020
                                  ====>比较CALL!
:0049A332 7504                    jne 0049A338
                                  ====>跳则OVER!
:0049A334 B301                    mov bl, 01
:0049A336 EB4E                    jmp 0049A386

―――――――――――――――――――――――――――――――――  
【注册信息保存】:

D:\WINDOWS\system32\bccbiosrm64bft dll   

―――――――――――――――――――――――――――――――――  
【整        理】:

用户名:fly             zhouxiongfei
识别码:89DD-5EA0123
注册码:CWIDFLXCMYLO    YORFCBRYZMDV
用OD载入,G 0049a32d回车,填入假注册信息,按确定,在寄存器窗口可见注册码。
2004-12-19 11:33
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
13
你比我强啊,学习先!!:D
2004-12-19 11:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 pendan2001 发布
2、用 WinHex 打开 修复DUMPED_.EXE ,去到99282处,把240106改为00900E 修正新的文件指针
即把:0049927C C705D07A4A0024010600 mov dword ptr ds:[4A7AD0],60124
改成:0049927C C705D07A4A0000900E00 mov dword ptr ds:[4A7AD0],E9000

........


请问,为什么是到99282处??
用winhex如何修改??
2005-1-14 16:03
0
游客
登录 | 注册 方可回帖
返回
//