• 标 题:高等教育自学考试英语词汇全息速记 3.1
  • 作 者:pendan2001
  • 时 间:2004-11-30,19:48
  • 链 接:http://bbs.pediy.com

软件大小: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!修改后的程序正常运行,只是文件大了许多。