首页
社区
课程
招聘
[求助]修复脱掉Armadillo3.05的记事本
发表于: 2005-6-15 21:44 5821

[求助]修复脱掉Armadillo3.05的记事本

2005-6-15 21:44
5821
小弟最近在学脱Armadillo,就找了一个Armadillo3.05版来加到98的记事做练习,好不容易找到了入口点,却在修复在出了问题,不得以求助各位大侠,能不能教教我怎么修复这个东东呀?谢谢
附带加了壳Armadillo3.05的记事本
附件:NOTEPAD3.rar

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

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
2
文章以及修复文件打包下载附件:Armadillo3.05.rar

3大断点法!
1、BP OpenMutexA  
2、BP GetModuleHandleA 或者是he GetModuleHandleA+5
3、BP GetCurrentThreadId
**********************************************
OD载入。。忽略所有异常。。隐藏插件。。
*********************
1、BP OpenMutexA F9&Shift+F9

77E62391 k>  55               push ebp  //断在这。看堆栈
77E62392     8BEC             mov ebp,esp
77E62394     51               push ecx
77E62395     51               push ecx

******************
0012F5B0   00411DA6  /CALL 到 OpenMutexA 来自 NOTEPAD3.00411DA0
0012F5B4   001F0001  |Access = 1F0001
0012F5B8   00000000  |Inheritable = FALSE
0012F5BC   0012FBF0  \MutexName = "62C::DA2591DD25"  //需要用到
******************
Ctrl+G 401000 键入以下代码

00401000     60                  pushad  
00401001     9C                  pushfd  
00401002     68 B4FB1200         push 0012FBF0 ★ 堆栈里看到的值  
00401007     33C0                xor eax,eax  
00401009     50                  push eax  
0040100A     50                  push eax  
0040100B     E8 B4B2A577         call kernel32.CreateMutexA  
00401010     9D                  popfd  
00401011     61                  popad  
00401012     E9 33F7A577         jmp kernel32.OpenMutexA

在401000处新建起源,F9运行,再次中断在OpenMutexA处,取消断点。

再次Ctrl+G 401000
撤消刚才做的选择
**********************************************
2、BP GetModuleHandleA F9

77E5AD86 k>  837C24 04 00     cmp dword ptr ss:[esp+4],0//断在这,取消断点!
77E5AD8B     0F84 37010000    je kernel32.77E5AEC8  //F2,下新断点
77E5AD91     FF7424 04        push dword ptr ss:[esp+4]
77E5AD95     E8 F8050000      call kernel32.77E5B392

按F9,注意堆栈
****************
0012ECE4   77C059FC  返回到 msvcrt.77C059FC 来自 kernel32.GetModuleHandleA
0012ECE8   77BE31AC  ASCII "kernel32.dll"
0012ECEC   77C2CA20  msvcrt.77C2CA20

0012EDA8   631C9C01  返回到 SHLWAPI.631C9C01 来自 kernel32.GetModuleHandleA
0012EDAC   6318D3D0  ASCII "KERNEL32.DLL"
0012EDB0   00000000
0012EDB4   63180000  SHLWAPI.63180000

0012ECCC   770FB124  返回到 OLEAUT32.770FB124 来自 kernel32.GetModuleHandleA
0012ECD0   771722E4  ASCII "KERNEL32.DLL"
0012ECD4   770FADAC  返回到 OLEAUT32.770FADAC 来自 OLEAUT32.770FB119
0012ECD8   77172064  OLEAUT32.77172064

0012F55C   00411073  返回到 NOTEPAD3.00411073 来自 kernel32.GetModuleHandleA
0012F560   00000000
0012F564   0012F558

0012C280   003C5331  返回到 003C5331 来自 kernel32.GetModuleHandleA
0012C284   0012C3BC  ASCII "kernel32.dll"   //看到这里就是返回时机了
0012C288   00000002

****************
此时,取消断点,按Ctrl+F9&F7返回!

003C5331     8B0D 60D83E00       mov ecx,dword ptr ds:[3ED860]  //返回到这里
003C5337     89040E              mov dword ptr ds:[esi+ecx],eax
003C533A     A1 60D83E00         mov eax,dword ptr ds:[3ED860]
003C533F     393C06              cmp dword ptr ds:[esi+eax],edi
003C5342     75 16               jnz short 003C535A
003C5344     8D85 B4FEFFFF       lea eax,dword ptr ss:[ebp-14C]
003C534A     50                  push eax
003C534B     FF15 B8503E00       call dword ptr ds:[3E50B8]        ; kernel32.LoadLibraryA
003C5351     8B0D 60D83E00       mov ecx,dword ptr ds:[3ED860]
003C5357     89040E              mov dword ptr ds:[esi+ecx],eax
003C535A     A1 60D83E00         mov eax,dword ptr ds:[3ED860]
003C535F     393C06              cmp dword ptr ds:[esi+eax],edi
003C5362     0F84 AD000000       je 003C5415  //Magic Jump,改成jmp
003C5368     33C9                xor ecx,ecx
003C536A     8B03                mov eax,dword ptr ds:[ebx]
003C536C     3938                cmp dword ptr ds:[eax],edi

Btw:你说你修复不了,可能是没修改Magic Jump或者是没找对!

*****************************************
3、bp GetCurrentThreadId F9

注意看堆栈
*************
0012BB80   73391E26  /CALL 到 GetCurrentThreadId 来自 73391E20
0012BB84   00000001
0012BB88   73391C0A  返回到 73391C0A 来自 73391DD2
0012BB8C   73391B50  返回到 73391B50 来自 73391B7C
*************
0012BB60   73393526   /CALL 到 GetCurrentThreadId 来自 73393520
0012BB64   00000000
0012BB68   7349F470
0012BB6C   7349F4D8
*************
0012F5A8   003DCF2D   /CALL 到 GetCurrentThreadId 来自 003DCF27
0012F5AC   0012FF2C   //是时候返回了
0012F5B0   00000000
0012F5B4   7FFDF000
*************
此时,取消断点,返回!

003DCF2D     A3 F0183F00         mov dword ptr ds:[3F18F0],eax  //回到这里,接下来一路F8
003DCF32     E8 2487FEFF         call 003C565B
003DCF37     6A 00               push 0
003DCF39     E8 4BD9FEFF         call 003CA889
003DCF3E     59                  pop ecx
003DCF3F     E8 7D39FFFF         call 003D08C1
003DCF44     8BF8                mov edi,eax
003DCF46     A1 E0183F00         mov eax,dword ptr ds:[3F18E0]
003DCF4B     8B48 74             mov ecx,dword ptr ds:[eax+74]
003DCF4E     3348 5C             xor ecx,dword ptr ds:[eax+5C]
003DCF51     3308                xor ecx,dword ptr ds:[eax]
003DCF53     03F9                add edi,ecx
003DCF55     8B0E                mov ecx,dword ptr ds:[esi]
003DCF57     85C9                test ecx,ecx
003DCF59     75 2E               jnz short 003DCF89
003DCF5B     8B78 5C             mov edi,dword ptr ds:[eax+5C]
003DCF5E     E8 5E39FFFF         call 003D08C1
003DCF63     8B0D E0183F00       mov ecx,dword ptr ds:[3F18E0]     ; NOTEPAD3.0043D258
003DCF69     FF76 14             push dword ptr ds:[esi+14]
003DCF6C     8B51 74             mov edx,dword ptr ds:[ecx+74]
003DCF6F     FF76 10             push dword ptr ds:[esi+10]
003DCF72     33D7                xor edx,edi
003DCF74     3311                xor edx,dword ptr ds:[ecx]
003DCF76     FF76 0C             push dword ptr ds:[esi+C]
003DCF79     03C2                add eax,edx
003DCF7B     8B51 78             mov edx,dword ptr ds:[ecx+78]
003DCF7E     3351 14             xor edx,dword ptr ds:[ecx+14]
003DCF81     33D7                xor edx,edi
003DCF83     2BC2                sub eax,edx
003DCF85     FFD0                call eax
003DCF87     EB 25               jmp short 003DCFAE
003DCF89     83F9 01             cmp ecx,1
003DCF8C     75 22               jnz short 003DCFB0
003DCF8E     FF76 04             push dword ptr ds:[esi+4]
003DCF91     FF76 08             push dword ptr ds:[esi+8]
003DCF94     6A 00               push 0
003DCF96     E8 2639FFFF         call 003D08C1
003DCF9B     50                  push eax
003DCF9C     A1 E0183F00         mov eax,dword ptr ds:[3F18E0]
003DCFA1     8B48 78             mov ecx,dword ptr ds:[eax+78]
003DCFA4     3348 5C             xor ecx,dword ptr ds:[eax+5C]
003DCFA7     3348 14             xor ecx,dword ptr ds:[eax+14]
003DCFAA     2BF9                sub edi,ecx
003DCFAC     FFD7                call edi  //F进入,到OEP

*********************
呵呵这里红色一片。。。代表我们的革命到了目的地了。。。^_^

004010CC     55                  push ebp   //LordPE Dump!
004010CD     8BEC                mov ebp,esp
004010CF     83EC 44             sub esp,44
004010D2     56                  push esi
004010D3     FF15 E4634000       call dword ptr ds:[4063E4]        ; kernel32.GetCommandLineA
004010D9     8BF0                mov esi,eax
004010DB     8A00                mov al,byte ptr ds:[eax]
004010DD     3C 22               cmp al,22
004010DF     75 1B               jnz short NOTEPAD3.004010FC

修复发现有一个指针无效,CUT,抓取。。修复可以运行的~

***************************
操作平台XP SP1,我修复的文件在你们那可能无法运行。。。嘿嘿,跨平台问题我不会。。。
2005-6-16 01:28
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
1、这是Armadillo单进程标准壳,不需要BP OpenMutexA
2、单进程标准壳的教程很多,为何不去学习?
2005-6-16 08:50
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢wynney还有fly老大,请问FLY老大你是怎么看出是单进程的
2005-6-16 23:07
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
5
LordPE
任务管理器
2005-6-16 23:19
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
wynney你在SP1下能用吗?我在SP2下修复不能用哦
2005-6-16 23:48
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我在SP2下用LORDED脱壳还多出200K来,是怎么回事呀?是不是方法不对呀,能不能说说详细方法呀?
2005-6-16 23:56
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
8
Btw:你说你修复不了,可能是没修改Magic Jump或者是没找对!

上面我写得已经很详细了。。。连堆栈的每一次内容显示都拿上来了
2005-6-17 11:43
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
9
包里面的那个我修复的文件,在你那可以打开么~?
2005-6-17 11:44
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 wynney 发布
包里面的那个我修复的文件,在你那可以打开么~?

不能,我用的是XPSP2
2005-6-17 13:04
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
11
最初由 笨虫虫 发布

不能,我用的是XPSP2


跨平台问题。。。还是让fly来吧
2005-6-17 13:10
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
12
修复输入表时去掉ImportRec“新建输入表”中的几个选项
2005-6-17 13:35
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
13
最初由 fly 发布
修复输入表时去掉ImportRec“新建输入表”中的几个选项


谢谢老大。。。我试下去~
2005-6-17 14:00
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 fly 发布
修复输入表时去掉ImportRec“新建输入表”中的几个选项

老大你说是什么工具呀,小白听得晕呼呼哦
2005-6-17 15:48
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
十分感谢FIY和wynney,我知道我的错误在哪了,主要是OD找到入口点后,不能关OD,然后用Import调用OD调试进程中的那程序.才能成功,在看雪的精华里没有提到此过程,所以我才会失败
2005-6-17 16:05
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
16
最初由 笨虫虫 发布
十分感谢FIY和wynney,我知道我的错误在哪了,主要是OD找到入口点后,不能关OD,然后用Import调用OD调试进程中的那程序.才能成功,在看雪的精华里没有提到此过程,所以我才会失败


在使用1.6修复时候。。。像SVKP。ACP。。需要用

到等级3修复的话,开着OD,修复。。一般情况下Import会死

这个壳就不用了。。无效的就直接CUT。。。应该没问题的(至少我这里是这样的)
2005-6-17 16:12
0
雪    币: 225
活跃值: (40)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
17
Ctrl+G 401000
我一下这个ollydbg就出问题,被关掉。怎么回事呀??
2005-7-14 21:25
0
游客
登录 | 注册 方可回帖
返回
//