首页
社区
课程
招聘
算霸5主程序脱壳
发表于: 2005-7-14 18:46 3985

算霸5主程序脱壳

2005-7-14 18:46
3985
【破文作者】   №微笑一刀[LOCKLOSE]

【文章题目】   算霸5主程序脱壳

【下载地址】   忘记了...

----------------------------------------------------------------------------------------------
【加密方式】   Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks [Overlay]

【破解工具】   OD修改版,IMPR.

【软件限制】   启动时有个壳的NAG...

【破解平台】   Win9x/NT/2000/XP/XP SP2

----------------------------------------------------------------------------------------------
【软件简介】

主要功能:
1. 表达式计算,可以进行多行计算。
2. 支持变量,可以设无限变量。
3. 基本支持C和BASIC的各种运算符。
4. 支持二进制、十进制、十六进制常量。
5. 支持数十个常用函数,基本包含了所有普通数学中所有函数。
6. 支持简单的文件处理,可以在文件指定位置写入字节,是黑客们用来破解可执行文件的必备工具。
7. 可以将计算式保存成文件,以便反复使用。
8. 可以设置透明度、置顶及监视粘贴板等。

----------------------------------------------------------------------------------------------
【破解过程】

老规矩,载入OD,设置忽略所有异常,隐藏OD,开工了.
载入以后停在这里~
004F0880 >  55              push ebp  <<-------停在这
004F0881    8BEC            mov ebp,esp
004F0883    6A FF           push -1
004F0885    68 90BA5000     push calc5.0050BA90
004F088A    68 58054F00     push calc5.004F0558
004F088F    64:A1 00000000  mov eax,dword ptr fs:[0]
004F0895    50              push eax
004F0896    64:8925 0000000>mov dword ptr fs:[0],esp
004F089D    83EC 58         sub esp,58
004F08A0    53              push ebx
004F08A1    56              push esi
004F08A2    57              push edi
下GetModuleHandleA断点,F9运行.

会断在下面的地方,
7C80B529 >  8BFF            mov edi,edi
7C80B52B    55              push ebp
7C80B52C    8BEC            mov ebp,esp
7C80B52E    837D 08 00      cmp dword ptr ss:[ebp+8],0

注意堆栈内容,先面是每次中断出现的信息
0012CA20   77F45BB0  /CALL 到 GetModuleHandleA 来自 77F45BAA
0012CA24   77F44FF4  \pModule = "KERNEL32.DLL"

0012CF30   77F45BB0  /CALL 到 GetModuleHandleA 来自 SHLWAPI.77F45BAA
0012CF34   77F44FF4  \pModule = "KERNEL32.DLL"

0012D744   004DB7C3  /CALL 到 GetModuleHandleA 来自 calc5.004DB7BD
0012D748   00000000  \pModule = NULL

00128CD8   00BC03AA  /CALL 到 GetModuleHandleA 来自 00BC03A4
00128CDC   00BD3D68  \pModule = "kernel32.dll"

00128CD8   00BC03C7  /CALL 到 GetModuleHandleA 来自 00BC03C1
00128CDC   00BD3D68  \pModule = "kernel32.dll"

001081BC   00BCB03A  /CALL 到 GetModuleHandleA 来自 00BCB034
001081C0   00000000  \pModule = NULL

001081F0   00BCACA0  /CALL 到 GetModuleHandleA 来自 00BCAC9E
001081F4   00000000  \pModule = NULL

001081F0   00BCAD9F  /CALL 到 GetModuleHandleA 来自 00BCAD9D
001081F4   00000000  \pModule = NULL

001081F0   00BCADFB  /CALL 到 GetModuleHandleA 来自 00BCADF9
001081F4   00000000  \pModule = NULL

001081F0   00BCAF21  /CALL 到 GetModuleHandleA 来自 00BCAF1F
001081F4   00000000  \pModule = NULL

000E78EC   7365D4A4  /CALL 到 GetModuleHandleA 来自 7365D49E
000E78F0   000E78F4  \pModule = "C:\WINDOWS\system32\ntdll.dll"
在按一次就会出现那个未注册壳的NAG了,点OK后会提示一个异常,SHIFT+F9过去后
堆栈显示
00128A50   00BA99AC  /CALL 到 GetModuleHandleA 来自 00BA99A6
00128A54   00128B8C  \pModule = "kernel32.dll"
返回的时机到了,返回到
00BA99AC    8B0D 2091BD00   mov ecx,dword ptr ds:[BD9120]
00BA99B2    89040E          mov dword ptr ds:[esi+ecx],eax
00BA99B5    A1 2091BD00     mov eax,dword ptr ds:[BD9120]
00BA99BA    393C06          cmp dword ptr ds:[esi+eax],edi
00BA99BD    75 16           jnz short 00BA99D5
00BA99BF    8D85 B4FEFFFF   lea eax,dword ptr ss:[ebp-14C]
00BA99C5    50              push eax
00BA99C6    FF15 D4E0BC00   call dword ptr ds:[BCE0D4]             ; kernel32.LoadLibraryA
00BA99CC    8B0D 2091BD00   mov ecx,dword ptr ds:[BD9120]
00BA99D2    89040E          mov dword ptr ds:[esi+ecx],eax
00BA99D5    A1 2091BD00     mov eax,dword ptr ds:[BD9120]
00BA99DA    393C06          cmp dword ptr ds:[esi+eax],edi
00BA99DD    0F84 AD000000   je 00BA9A90 <<--------------修改为JMP 00BA9A90(Magic Jump)
00BA99E3    33C9            xor ecx,ecx
00BA99E5    8B03            mov eax,dword ptr ds:[ebx]
00BA99E7    3938            cmp dword ptr ds:[eax],edi
00BA99E9    74 06           je short 00BA99F1
取消GetModuleHandleA断点下GetCurrentThreadId断点~F9运行
断在
7C809737 >  64:A1 18000000  mov eax,dword ptr fs:[18] <<----------------这里
7C80973D    8B40 24         mov eax,dword ptr ds:[eax+24]
7C809740    C3              retn
看堆栈内容,直到出现
0012D798   00BC8A3D  /CALL 到 GetCurrentThreadId 来自 00BC8A37
不然一直F9走,出现以后取消断点并返回~
返回到
00BC8A3D    A3 A8D6BD00     mov dword ptr ds:[BDD6A8],eax <<------------这里
00BC8A42    E8 5512FEFF     call 00BA9C9C
00BC8A47    6A 00           push 0
00BC8A49    E8 B56DFEFF     call 00BAF803
00BC8A4E    6A 00           push 0
00BC8A50    C705 8842BD00 A>mov dword ptr ds:[BD4288],0BD4FAC      ; ASCII "RC"
00BC8A5A    E8 B20CFEFF     call 00BA9711
00BC8A5F    59              pop ecx
00BC8A60    59              pop ecx
向下看,找到
00BC8ACB    3348 08         xor ecx,dword ptr ds:[eax+8]
00BC8ACE    2BF9            sub edi,ecx
00BC8AD0    FFD7            call edi   <<---------------这里下断~
00BC8AD2    8BD8            mov ebx,eax
00BC8AD4    5F              pop edi
00BC8AD5    8BC3            mov eax,ebx
在00BC8AD0处下断,然后F9运行,在F7跟进去~到这里~
00499B94    55              push ebp  <<---------------这里
00499B95    8BEC            mov ebp,esp
00499B97    83C4 F0         add esp,-10
00499B9A    53              push ebx
00499B9B    B8 E4984900     mov eax,calc5.004998E4
00499BA0    E8 8BC6F6FF     call calc5.00406230
00499BA5    8B1D 1C074B00   mov ebx,dword ptr ds:[4B071C]          ; calc5.004B1BF0
00499BAB    68 4C9C4900     push calc5.00499C4C                    ; ASCII "calc5"
哇噻...都是红色的...看着就是舒服啊.可以DUMP了.
注意这里我使用PeDumper插件来Dump,
Dump时把右边的选项都选择上,点获取当前EIP为OEP,然后可以Dump了.保存到一个地方就可以了.
现在到修复IAT的时候了,运行IMPR.OEP处填写99B94,为什么写这个?这个问题别问我~
把无效的剪切掉修复就OK了.
----------------------------------------------------------------------------------------------
【破解心得】

这里Dump时使用PeDumper因为觉得方便一点~省去了修复Dump文件的步骤,当初刚脱
下来修复以后不能运行,经Fly指点才知道是壳修改了PE文件结构,还需要修复以下,这里
使用PeDumper插件Dump的文件已经不需要修复了.直接用IMPR修复就能Run了~

----------------------------------------------------------------------------------------------
【破解声明】   我是一只小菜鸟,偶得一点心得,愿与大家分享:)

【版权声明】   本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
                                       

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 312
活跃值: (860)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

2005-7-14 20:27
0
雪    币: 14870
活跃值: (4663)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
最初由 mylee 发布


这个只是标准加壳的东西,非标准的还没碰到....
BTW:我一壳盲,对标准不标准不感冒的说~.
2005-7-14 20:40
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
4
呵呵~还是单进程的~~
2005-7-14 21:01
0
雪    币: 14870
活跃值: (4663)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
呵呵,没办法壳盲只能找单进程的玩~
2005-7-14 21:51
0
游客
登录 | 注册 方可回帖
返回
//