[旧帖]
[原创]一个Skype录音软件的手动脱壳及修复过程
0.00雪花
发表于:
2009-8-21 16:16
2913
[旧帖] [原创]一个Skype录音软件的手动脱壳及修复过程
0.00雪花
刚迈入破解的殿堂,菜鸟级,第一篇技术文章,难免有不足之处,请各位前辈们指点。
原程序:请见附件(是一个安装程序,安装完只有一个主程序RSkype.exe,一个放录音文件的空文件夹,还有一个空插件文件夹---在主程序第一次运行时才出现)
操作步骤:查壳、脱壳、修复
所用工具:PEiD,OllyDBG 汉化第三版,ImportREC 1.7汉化版 1.查壳用PEiD:
把主程序拖入用PEiD窗口中,得到壳的信息
PECompact 2.x -> Jeremy Collake 2.脱壳用OllyDBG :
在OllyDBG中载入主程序RSkype.exe
00401000 > B8 54E37000 mov eax, 0070E354 //OD载入,停到这里,F8单步
00401005 50 push eax
00401006 64:FF35 00000000 push dword ptr fs:[0]
0040100D 64:8925 00000000 mov dword ptr fs:[0], esp //F8单步到这里,使用ESP定律,按F9
00401014 33C0 xor eax, eax
00401016 8908 mov dword ptr [eax], ecx //异常暂停在这里,按Shift+F9继续
00401018 50 push eax
00401019 45 inc ebp
0040101A 43 inc ebx
0040101B 6F outs dx, dword ptr es:[edi] ; I/O 命令
0040101C 6D ins dword ptr es:[edi], dx ; I/O 命令
按Shift+F9之后跳到这里
0070E377 B8 D9D070F0 mov eax, F070D0D9
0070E37C 64:8F05 00000000 pop dword ptr fs:[0]
0070E383 83C4 04 add esp, 4 //ESP定律后,暂停到这里,向下找关键跳转,F8单步走
0070E386 55 push ebp
0070E387 53 push ebx
0070E388 51 push ecx
0070E389 57 push edi
0070E38A 56 push esi
0070E38B 52 push edx
0070E38C 8D98 57120010 lea ebx, dword ptr [eax+10001>
…………中间代码省略
0070E40B 57 push edi
0070E40C FF11 call dword ptr [ecx]
0070E40E 8BC6 mov eax, esi
0070E410 5A pop edx
0070E411 5E pop esi
0070E412 5F pop edi
0070E413 59 pop ecx
0070E414 5B pop ebx
0070E415 5D pop ebp
0070E416 - FFE0 jmp eax ; RSkype.005CC464 //关键跳,应该是跳向OEP,按F8
F8后,跳到
005CC464 55 push ebp //跨段跳转,到达EOP,记下OEP值,修复时需要用到
005CC465 8BEC mov ebp, esp
005CC467 83C4 F0 add esp, -10
005CC46A B8 0CBD5C00 mov eax, 005CBD0C
005CC46F E8 C4ABE3FF call 00407038
005CC474 A1 08225E00 mov eax, dword ptr [5E2208]
005CC479 C600 01 mov byte ptr [eax], 1
005CC47C A1 AC265E00 mov eax, dword ptr [5E26AC]
005CC481 8B00 mov eax, dword ptr [eax]
005CC483 E8 C81AECFF call 0048DF50
找到EOP后,开始脱壳,用OB的Dump插件,Dump程序
插件---OllyDump---脱壳在当前调试的进程,启动窗口:
脱壳---方式1命名为:dump111.exe
方式2命名为:dump222.exe
进入文件夹,测试脱壳的文件,方式1的dump111.exe能直接运行,而方式2的dump222.exe无法运行,看来需要修复其输入表。 3.修复用ImportREC:
打开ImportREC 1.7汉化版,在“附加一个活动进程”里选择“rskype.exe”进程,在OEP里输入=005CC464-0400000(基址)=001CC464,分别点“自动搜索”,“获取输入表”,输入表大小=000009BC,ImportREC能找到所需的所有输入表函数,说明其大小正确,如果大小不正确,还需要手动来确定程序的IAT输入表函数的大小。在确定输入表函数正确之后,点“修复转存文件”,找到刚才dump方式2的命名为dump222.exe的文件,点击选种,并点击窗口上的“打开”按扭,dump222.exe文件的输入表修复完成。
我们来看看修复的是否成功?进入程序文件夹,打开修复后的dump222_.exe测试,发现其能正确运行,看来起修复输入表的过程是成功的。 写在后面的话:接触了这方面的知识有段时间,但写技术行的帖子还是第一次。对软件的破解有很高的热情,我会在以后的日子里更加的努力,望自己也能成为一名高手。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
上传的附件: