首页
社区
课程
招聘
Armadillo V4.X CopyMem-II脱壳――魔法转换(Magic Converter) V4.0正式版
发表于: 2005-4-28 11:41 41096

Armadillo V4.X CopyMem-II脱壳――魔法转换(Magic Converter) V4.0正式版

fly 活跃值
85
2005-4-28 11:41
41096
收藏
免费 7
支持
分享
最新回复 (84)
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
51
最初由 fly 发布
TO aaa2520:
不是完美还原IAT,但是紧接着下面的就是修复输入表

........

还有一个疑问,
dump出来的 东西,需要马上 修正oep吗?
谢谢
2005-11-22 10:55
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
52
可以修复输入表时用ImportREC的“Fix EP To OEP”修正
2005-11-22 11:03
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
53
最初由 fly 发布
这个东东在处理输入表的时候还有时间校验,不处理的话会导致某些函数被加密
下断:BP GetTickCount 中断后取消断点返回
........


为什么alt+f9 不能返回到主程序?
2005-11-22 14:08
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
54
那就自己走过ret回去
2005-11-22 15:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
55
一个程序,用fi查 显示 Armadillo 2.5? {glue}  SRT
启动后 有两个进程,看了 飞舞T恤  按键精灵3 的帖子
我也是
遇到
mov eax,dword ds:[eax+esi+4]
出错 不成功!
然后按照他下面的方法,没遇到什么问题,可是dump出来的东西不象啊,找不到FF25
好不容易 找到一个 可是后面的 jmp dword ptr:ds:[f77**]这样肯定不对吧?

接下来用了fly 这个帖子里面的方法,前面都顺利 直到最后跟踪
bp GetTickCount,不能直接返回主程序,发现不是主程序直接调用的GetTickCount,而是Loadlib api 调用的,
看来这个壳 后来就没有用GetTickCount来破坏IAT,
要是这样的话怎么找函数输入表的开始地址啊?
还有
用以上两种方法 找到的oep 不一样,到底哪个是对的?
用fly的方法dump出来的程序找到的 FF25 后面 jmp dword ptr:ds:[56449*],也挺怪,也不象,

现在糊涂了,不知道这个程序到底用的什么方式加的壳,,
还有别的方法吗?

谢谢
2005-11-23 00:46
0
雪    币: 136
活跃值: (424)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
56
TO fly:bp或HE  WaitForDebugEvent 都断不下来,该如何处理?
2005-11-23 08:46
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
57
TO 楼上的2位:
尽信书则不如无书。每个壳的脱壳方法可能都有些变化,建议用教程中的例子程序来演练几番,领悟技巧即可
2005-11-23 08:52
0
雪    币: 221
活跃值: (20)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
58
FLY老大真行,我非常感谢你的智慧和毅力,佩服你!
2005-11-23 16:08
0
雪    币: 217
活跃值: (61)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
59
支持
谢谢 fly ,我再试一下,如果不懂的再向你请教呀
2005-11-24 13:21
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
60
???┻?    ??ヘへ__.( ★ ).__へヘノ?    ?┻???
?  ★             ?ㄔ ??─?? ㄔㄍ              ★ ?
??                ??          ??                ??
?┫                                                  ┣?
??                     奖    状                     ??
?┊                                                  ┊?
?┊         鉴于 FLY 同志对 脱壳教学 做出的辛勤      ┊?
?┊                                                  ┊?
?┊     工作决定授予此奖状加以表彰,并希望其能够     ┊?
?┊                                                  ┊?
?┊     再接再厉继续支持繁荣版面。                   ┊?
?┤                                 校长:胡景涛      ├?
??★                     ?       2005年11月11日  ★??
???┳?     ?ㄅ_.._((***))_.._ㄅ?      ?┳???
2005-11-24 18:03
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
61
在DFCG里看到有一篇“Armadillo v4.3(public)CopyMem-ll+Debug-Block加壳之VB--Crackme脱壳迷惑求解”
地址:http://www.chinadfcg.com/viewthread.php?tid=148684

上面附有两个例子

按他那样说:下bp WaitForDebugEvent(如果出现被调试程序无法处理异常,改下He WaitForDebugEvent)

但我经取消了全部断点后。再下bp WaitForDebugEvent 结果出现被调试程序无法处理异常

如查用He WaitForDebugEvent  程序就直接运行了

不能断下。

但你所说的:魔法转换(Magic Converter) V4.0正式版却很正常。为什么。

例子不能上传。望FLY能去下载回来看看
2005-11-27 17:23
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
62
相同壳不同版本或者相同版本加壳选项不同都会使得脱壳方法有差异

你可以G WaitForDebugEvent
在WaitForDebugEvent函数末尾下断,
或者+3的位置(不要在指令语句中间)下断

抱歉,我不可能有时间去下载每个例子来脱壳
2005-11-27 18:59
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
63
看来得赶快准备脱壳机了
2005-11-28 12:09
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
64
当开另一个OD附加子进程时,BP OpenMutexA,Shift+F9后,提示说线程被挂起,转到了Thead窗口,但却无法恢复线程,进不下去了,如何解决?
2005-11-28 21:17
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
65
准备附加的OllyDBG要是新启动的
2005-11-28 21:29
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
66
1.
00E89100    8908            mov dword ptr ds:[eax],ecx
//函数写入。在这里可以看见输入表函数开始地址005D7208,输入表处理结束后可以计算出大小=8B4

请问,输入表函数开始地址在上面哪个值看?

2.
00E891D8    8B85 DCC6FFFF   mov eax,dword ptr ss:[ebp-3924]
//这里下断,中断后输入表处理完毕

这里哪个值减上面哪个值???

3.
如果有code splicing,用ARMINLINE何时处理?
2005-11-28 22:20
0
雪    币: 136
活跃值: (424)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
67
我也想知道,请fly赐教 ,谢谢
2005-11-30 10:35
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
68
1、[EAX]
2、看数据窗口,函数的结束地方应该可以看到
3、ArmInline――Armadillo客户版Code Splicing+Import Table Elimination的简便修复方法
http://bbs.pediy.com/showthread.php?s=&threadid=17253
2005-11-30 22:41
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
69
不说了,顶就一个字
2005-12-1 13:32
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
70
最初由 fly 发布
1、[EAX]
2、看数据窗口,函数的结束地方应该可以看到
3、ArmInline――Armadillo客户版Code Splicing+Import Table Elimination的简便修复方法
http://bbs.pediy.com/showthread.php?s=&threadid=17253


1.OK
2.哪个值的数据?
3.Fraps V2.6.4没有用CopyMemII,按照魔法转换这种情况来说,如果多了Code Splicing,在什么时候处理呢?子进程?
2005-12-1 17:33
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
71
2、从开始位置向下拉到窗口,看
3、道理一样  子进程解压后找到Code Splicing的地方就可以用ArmInline处理了
2005-12-1 18:08
0
雪    币: 234
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
72
引用------------------------
下断:BP GetTickCount   中断后取消断点返回

00E88D57    FF15 AC22E900   call dword ptr ds:[E922AC] ; kernel32.GetTickCount
00E88D5D    8985 8CC3FFFF   mov dword ptr ss:[ebp-3C74],eax
//返回这里
00E88D63    6A 01           push 1
00E88D65    58              pop eax
00E88D66    85C0            test eax,eax
00E88D68    0F84 A8030000   je 00E89116

下面还有一处GetTickCount取时间

00E89100    8908            mov dword ptr ds:[eax],ecx
//函数写入。在这里可以看见输入表函数开始地址005D7208,输入表处理结束后可以计算出大小=8B4
00E89102    8B85 FCC7FFFF   mov eax,dword ptr ss:[ebp-3804]
00E89108    83C0 04         add eax,4
00E8910B    8985 FCC7FFFF   mov dword ptr ss:[ebp-3804],eax
00E89111    E9 4DFCFFFF     jmp 00E88D63
00E89116    FF15 AC22E900   call dword ptr ds:[E922AC] ; kernel32.GetTickCount
00E8911C    2B85 8CC3FFFF   sub eax,dword ptr ss:[ebp-3C74]
00E89122    8B8D 90C3FFFF   mov ecx,dword ptr ss:[ebp-3C70]
00E89128    6BC9 32         imul ecx,ecx,32
00E8912B    81C1 D0070000   add ecx,7D0
00E89131    3BC1            cmp eax,ecx
//时间校验
00E89133    76 07           jbe short 00E8913C
//修改为:JMP 00E8913C  ★
00E89135    C685 20C8FFFF 0>mov byte ptr ss:[ebp-37E0],1
00E8913C    83BD D0C6FFFF 0>cmp dword ptr ss:[ebp-3930],0
00E89143    0F85 8A000000   jnz 00E891D3

00E891B8    83C4 0C         add esp,0C
00E891BB    8B85 58C8FFFF   mov eax,dword ptr ss:[ebp-37A8]
00E891C1    8985 A49EFFFF   mov dword ptr ss:[ebp+FFFF9EA4],eax
00E891C7    FFB5 A49EFFFF   push dword ptr ss:[ebp+FFFF9EA4]
00E891CD    E8 64820000     call 00E91436 ; jmp to msvcrt.operator delete
00E891D2    59              pop ecx
00E891D3    E9 05F7FFFF     jmp 00E888DD
00E891D8    8B85 DCC6FFFF   mov eax,dword ptr ss:[ebp-3924]
//这里下断,中断后输入表处理完毕
---------------------------

我在按教程unpack一程序的时候,如下:
00AE6FFD    8908            mov dword ptr ds:[eax],ecx
////函数写入。在这里可以看见输入表函数开始地址[eax];
00AE6FFF    8B85 04C8FFFF   mov eax,dword ptr ss:[ebp-37FC]
00AE7005    83C0 04         add eax,4
00AE7008    8985 04C8FFFF   mov dword ptr ss:[ebp-37FC],eax
00AE700E  ^ E9 CEFCFFFF     jmp 00AE6CE1
00AE7013    FF15 9C02AF00   call dword ptr ds:[AF029C]                  ; kernel32.GetTickCount
00AE7019    2B85 94C4FFFF   sub eax,dword ptr ss:[ebp-3B6C]
00AE701F    8B8D 98C4FFFF   mov ecx,dword ptr ss:[ebp-3B68]
00AE7025    6BC9 32         imul ecx,ecx,32
00AE7028    81C1 D0070000   add ecx,7D0
00AE702E    3BC1            cmp eax,ecx
00AE7030    EB 07           jbe short 00AE7039---修改为JMP;
00AE7032    C685 28C8FFFF 0>mov byte ptr ss:[ebp-37D8],1
00AE7039    83BD D8C6FFFF 0>cmp dword ptr ss:[ebp-3928],0
00AE7040    0F85 8A000000   jnz 00AE70D0
00AE7046    0FB685 84C4FFFF movzx eax,byte ptr ss:[ebp-3B7C]
00AE704D    85C0            test eax,eax
00AE704F    74 7F           je short 00AE70D0
00AE7051    6A 00           push 0
...
...
...
0AE708E    50              push eax
00AE708F    E8 EC7D0000     call 00AEEE80                               ; jmp to msvcrt.memcpy
00AE7094    83C4 0C         add esp,0C
00AE7097    6A 01           push 1
00AE7099    8B85 88C4FFFF   mov eax,dword ptr ss:[ebp-3B78]
00AE709F    C1E0 02         shl eax,2
00AE70A2    50              push eax
00AE70A3    8B85 00C7FFFF   mov eax,dword ptr ss:[ebp-3900]
00AE70A9    0385 80C4FFFF   add eax,dword ptr ss:[ebp-3B80]
00AE70AF    50              push eax
00AE70B0    E8 341B0000     call 00AE8BE9
00AE70B5    83C4 0C         add esp,0C
00AE70B8    8B85 60C8FFFF   mov eax,dword ptr ss:[ebp-37A0]
00AE70BE    8985 C8AFFFFF   mov dword ptr ss:[ebp+FFFFAFC8],eax
00AE70C4    FFB5 C8AFFFFF   push dword ptr ss:[ebp+FFFFAFC8]
00AE70CA    E8 AB7D0000     call 00AEEE7A                               ; jmp to msvcrt.operator delete
00AE70CF    59              pop ecx
00AE70D0    83BD D8C6FFFF 0>cmp dword ptr ss:[ebp-3928],0
00AE70D7    75 2A           jnz short 00AE7103
00AE70D9    8D85 7CC4FFFF   lea eax,dword ptr ss:[ebp-3B84]
00AE70DF    50              push eax
00AE70E0    FFB5 7CC4FFFF   push dword ptr ss:[ebp-3B84]
00AE70E6    8B85 88C4FFFF   mov eax,dword ptr ss:[ebp-3B78]
00AE70EC    C1E0 02         shl eax,2
00AE70EF    50              push eax
00AE70F0    8B85 00C7FFFF   mov eax,dword ptr ss:[ebp-3900]
00AE70F6    0385 80C4FFFF   add eax,dword ptr ss:[ebp-3B80]
00AE70FC    50              push eax
00AE70FD    FF15 4801AF00   call dword ptr ds:[AF0148]                  ; kernel32.VirtualProtect
00AE7103  ^ E9 E3F7FFFF     jmp 00AE68EB
00AE7108    8B85 E4C6FFFF   mov eax,dword ptr ss:[ebp-391C]
00AE710E    8985 C4AFFFFF   mov dword ptr ss:[ebp+FFFFAFC4],eax
00AE7114    FFB5 C4AFFFFF   push dword ptr ss:[ebp+FFFFAFC4]
00AE711A    E8 5B7D0000     call 00AEEE7A                               ; jmp to msvcrt.operator delete
00AE711F    59              pop ecx
00AE7120    83BD D8C6FFFF 0>cmp dword ptr ss:[ebp-3928],0
00AE7127    0F84 59010000   je 00AE7286
00AE712D    A1 2800B000     mov eax,dword ptr ds:[B00028]
00AE7132    8B40 58         mov eax,dword ptr ds:[eax+58]
00AE7135    8985 D4ADFFFF   mov dword ptr ss:[ebp+FFFFADD4],eax
00AE713B    8B85 D4ADFFFF   mov eax,dword ptr ss:[ebp+FFFFADD4]
00AE7141    8985 44C1FFFF   mov dword ptr ss:[ebp-3EBC],eax
00AE7147    E8 8D360000     call 00AEA7D9
00AE714C    F7D8            neg eax
00AE714E    1BC0            sbb eax,eax
00AE7150    25 00010000     and eax,100
00AE7155    05 00010000     add eax,100
00AE715A    8985 C0ADFFFF   mov dword ptr ss:[ebp+FFFFADC0],eax
00AE7160    68 0D5EDF01     push 1DF5E0D
00AE7165    FFB5 44C1FFFF   push dword ptr ss:[ebp-3EBC]
00AE716B    8D8D 44C1FFFF   lea ecx,dword ptr ss:[ebp-3EBC]
00AE7171    E8 FB9EFDFF     call 00AC1071
00AE7176    40              inc eax

请教前辈最后一次下断在哪里合适,另:如何察看函数输入表结束位置,以便于计算Size。还请赐教,希望能解说详细。比如Fly说的最后看函数表是否结束,在数据窗口往下拉,可否直接将Data贴出来我看看,这样比较形象。
2005-12-13 17:04
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
73
最后一次下断 ?

以记事本为例来解释一下看输入表函数表的结束
随便在代码中找个函数调用
004010D3     FF15 E0634000      call dword ptr ds:[4063E0]; kernel32.GetCommandLineA
数据窗口中跟随4063E0
点 右键->长型->地址
这样在数据窗口中上下拉动滚动条,可以看的清晰点

004062DC  00000000
004062E0   77DAEBE7     ADVAPI32.RegSetValueExA
004062E4   77DA7883     ADVAPI32.RegQueryValueExA
004062E8   77DA6BF0     ADVAPI32.RegCloseKey
004062EC   77DCC41B     ADVAPI32.RegOpenKeyA
004062F0   77DCD5BB     ADVAPI32.RegCreateKeyA
004062F4   00000000
004062F8   77EF61E1     GDI32.GetStockObject
004062FC   77EF8C33     GDI32.GetObjectA
00406300   77EF5A8A     GDI32.GetDeviceCaps
00406304   77EF5B90     GDI32.SelectObject
00406308   77EF6C2D     GDI32.DeleteObject
0040630C   77F23822     GDI32.AbortDoc
00406310   77F0E051     GDI32.EndDoc
00406314   77EF6E98     GDI32.DeleteDC
00406318   77F0F126     GDI32.StartPage
0040631C   77F249C9     GDI32.StartDocA
00406320   77F0DDC9     GDI32.EndPage
00406324   77EFE670     GDI32.GetTextExtentPointA
00406328   77F1B260     GDI32.CreateFontA
0040632C   77F23942     GDI32.SetAbortProc
00406330   77EF5EFB     GDI32.SetBkMode
00406334   77EF9A1A     GDI32.SetMapMode
00406338   77EFE068     GDI32.GetTextMetricsA
0040633C   77F06C8F     GDI32.SetWindowExtEx
00406340   77F06D38     GDI32.SetViewportExtEx
00406344   77EFD526     GDI32.LPtoDP
00406348   77EFB251     GDI32.CreateDCA
0040634C   77EFA0B9     GDI32.GetTextCharset
00406350   77EFE8D6     GDI32.CreateFontIndirectA
00406354   00000000
00406358   7C81E85C     kernel32.DeleteFileA
0040635C   7C827778     kernel32._lcreat
00406360   7C85E610     kernel32._lopen
00406364   7C838D93     kernel32._lwrite
00406368   7C822E21     kernel32.LocalUnlock
0040636C   7C839450     kernel32._llseek
00406370   7C80995D     kernel32.LocalFree
00406374   7C8099BD     kernel32.LocalAlloc
00406378   7C839308     kernel32._lclose
0040637C   7C80FF2D     kernel32.GlobalAlloc
00406380   7C80C9C1     kernel32.GetLocalTime
00406384   7C826F4B     kernel32.GetTimeFormatA
00406388   7C826E0C     kernel32.GetDateFormatA
0040638C   7C80B929     kernel32.lstrcmpiA
00406390   7C801EEE     kernel32.GetStartupInfoA
00406394   7C80B529     kernel32.GetModuleHandleA
00406398   7C81CAA2     kernel32.ExitProcess
0040639C   7C810311     kernel32.lstrcpynA
004063A0   7C822D88     kernel32.LocalLock
004063A4   7C81E2B1     kernel32.LocalReAlloc
004063A8   7C822D47     kernel32.GetProfileStringA
004063AC   7C923151     ntdll.RtlMoveMemory
004063B0   7C80C6E0     kernel32.lstrlenA
004063B4   7C80EFD7     kernel32.FindClose
004063B8   7C81EE79     kernel32.lstrcmpA
004063BC   7C813559     kernel32.FindFirstFileA
004063C0   7C801A24     kernel32.CreateFileA
004063C4   7C838FB9     kernel32.lstrcatA
004063C8   7C930331     ntdll.RtlGetLastWin32Error
004063CC   7C80D47E     kernel32.GetLocaleInfoA
004063D0   7C8097F4     kernel32.MulDiv
004063D4   7C80C729     kernel32.lstrcpyA
004063D8   7C810082     kernel32.GlobalUnlock
004063DC   7C80FE2F     kernel32.GlobalFree
004063E0   7C812C8D     kernel32.GetCommandLineA
004063E4   7C839418     kernel32._lread
004063E8   7C810119     kernel32.GlobalLock
004063EC   00000000
004063F0   7D610E80     SHELL32.ShellExecuteA
004063F4   7D5FAF0C     SHELL32.DragAcceptFiles
004063F8   7D632362     SHELL32.ShellAboutA
004063FC   7D6882B2     SHELL32.SHGetSpecialFolderPathA
00406400   7D6469FE     SHELL32.DragQueryFileA
00406404   7D6469ED     SHELL32.DragFinish
00406408   00000000
0040640C   77D1A8AD     USER32.wsprintfA
00406410   77D3023D     USER32.CloseClipboard
00406414   77D2F13E     USER32.IsClipboardFormatAvailable
00406418   77D3024F     USER32.OpenClipboard
0040641C   77D3148B     USER32.GetMenu
00406420   77D20FE8     USER32.LoadStringA
00406424   77D31524     USER32.LoadAcceleratorsA
00406428   77D1DB70     USER32.GetSystemMenu
0040642C   77D18E28     USER32.RegisterWindowMessageA
00406430   77D1D60D     USER32.SetWindowLongA
00406434   77D2025E     USER32.CreateWindowExA
00406438   77D20B3E     USER32.LoadCursorA
0040643C   77D237E6     USER32.RegisterClassExA
00406440   77D18F9D     USER32.GetSystemMetrics
00406444   77D1D7F9     USER32.UpdateWindow
00406448   77D20FBA     USER32.CharPrevA
0040644C   77D1B6AE     USER32.GetClientRect
00406450   77D1C96C     USER32.PeekMessageA
00406454   77D3C94A     USER32.SetDlgItemTextA
00406458   77D5A19D     USER32.TabbedTextOutA
0040645C   77D3C7B3     USER32.CreateDialogParamA
00406460   77D1BE71     USER32.EnableWindow
00406464   77D3213C     USER32.GetWindowTextA
00406468   77D3C2BF     USER32.SendDlgItemMessageA
0040646C   77D1D869     USER32.GetDlgCtrlID
00406470   77D2BAAF     USER32.ChildWindowFromPoint
00406474   77D1BDC8     USER32.ScreenToClient
00406478   77D1BD76     USER32.GetCursorPos
0040647C   77D6AC1E     USER32.GetDlgItemTextA
00406480   77D216E2     USER32.GetSubMenu
00406484   77D31A8E     USER32.CheckMenuItem
00406488   77D20F90     USER32.CharNextA
0040648C   77D3C661     USER32.IsDialogMessageA
00406490   77D2FA9C     USER32.TranslateAcceleratorA
00406494   77D18BF6     USER32.TranslateMessage
00406498   77D21211     USER32.PostQuitMessage
0040649C   77D1BE27     USER32.IsIconic
004064A0   77D1DAEA     USER32.DestroyWindow
004064A4   77D31F4C     USER32.MessageBeep
004064A8   77D504EA     USER32.MessageBoxA
004064AC   77D1D4EE     USER32.DefWindowProcA
004064B0   77D1EA2F     USER32.EnableMenuItem
004064B4   77D3154B     USER32.GetLastActivePopup
004064B8   77D1D8A4     USER32.ShowWindow
004064BC   77D26250     USER32.EndDialog
004064C0   77D24795     USER32.SetForegroundWindow
004064C4   77D3EE35     USER32.WinHelpA
004064C8   77D21324     USER32.LoadIconA
004064CC   77D186C7     USER32.GetDC
004064D0   77D1869D     USER32.ReleaseDC
004064D4   77D1BF58     USER32.SetCursor
004064D8   77D2F39A     USER32.SendMessageA
004064DC   77D1BEF0     USER32.GetFocus
004064E0   77D1CB85     USER32.PostMessageA
004064E4   77D1DA60     USER32.SetFocus
004064E8   77D1B5F5     USER32.InvalidateRect
004064EC   77D1DBEC     USER32.MoveWindow
004064F0   77D196B8     USER32.DispatchMessageA
004064F4   77D21042     USER32.GetMessageA
004064F8   77D2F543     USER32.SetWindowTextA
004064FC   00000000
00406500   7632311E     comdlg32.GetOpenFileNameA
00406504   7633C289     comdlg32.ChooseFontA
00406508   7633867C     comdlg32.FindTextA
0040650C   763447B1     comdlg32.PageSetupDlgA
00406510   76337CD8     comdlg32.GetSaveFileNameA
00406514   763300CE     comdlg32.CommDlgExtendedError
00406518   76322533     comdlg32.GetFileTitleA
0040651C   00000000

如何看输入表函数开始和结束的地址知道了吧?
2005-12-13 17:30
0
雪    币: 234
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
74
感谢Fly的及时回复,我指的最后一次下断是指
“00E891D8    8B85 DCC6FFFF   mov eax,dword ptr ss:[ebp-3924]
//这里下断,中断后输入表处理完毕
”这句,我调试的程序跟你的有些偏差,由于是初次调试,所以不知道在哪里下断。
也许问的问题比较菜,让大家见笑了,呵呵。
2005-12-13 17:35
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
75
看看这段代码:

00E89131    3BC1            cmp eax,ecx
//时间校验
00E89133    76 07           jbe short 00E8913C
//修改为:JMP 00E8913C  ★
00E89135    C685 20C8FFFF 0>mov byte ptr ss:[ebp-37E0],1
00E8913C    83BD D0C6FFFF 0>cmp dword ptr ss:[ebp-3930],0
00E89143    0F85 8A000000   jnz 00E891D3
//00E891D3

00E891D3    E9 05F7FFFF     jmp 00E888DD
//循环
00E891D8    8B85 DCC6FFFF   mov eax,dword ptr ss:[ebp-3924]
//这里下断,中断后输入表处理完毕

00E891D8在循环外
2005-12-13 17:58
0
游客
登录 | 注册 方可回帖
返回
//