首页
社区
课程
招聘
[求助]vc写个最简单的c2.exe(控制台),使用OD打开c2.exe,竟然很多CALL c2.00411195,INT3这样的命令
发表于: 2009-1-22 04:04 4127

[求助]vc写个最简单的c2.exe(控制台),使用OD打开c2.exe,竟然很多CALL c2.00411195,INT3这样的命令

2009-1-22 04:04
4127
vc写个最简单的c2.exe(控制台),使用OD打开c2.exe,竟然很多CALL c2.00411195,INT3这样的命令

00411002    CC              INT3
00411003    CC              INT3
00411004    CC              INT3
00411005    E9 36230000     JMP c2.00413340
0041100A    E9 D1230000     JMP c2.004133E0
0041100F    E9 7A0F0000     JMP <JMP.&MSVCP80D.?good@ios_base@std@@Q>
00411014    E9 EB2F0000     JMP <JMP.&KERNEL32.DebugBreak>
......

0041163E    FF15 0CA34100   CALL DWORD PTR DS:[<&MSVCP80D.?length@?$>; MSVCP80D.?length@?$char_traits@D@std@@SAIPBD@Z
00411644    83C4 04         ADD ESP,4
00411647    3BF4            CMP ESI,ESP
00411649    E8 47FBFFFF     CALL c2.00411195

请问那么多的int3啥意思?可以修改int3命令为其他命令吗?JMP c2.004133E0中的c2应该就是c2.exe这个文件名吧,不懂为什么这么写c2.004133E0?

谢谢先

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
debug模式?
2009-1-22 08:32
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
int 3是正常执行不可到达的地方。是填充,以确保万一程序跑飞能中断下来。----个人理解。
2009-1-22 08:47
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
4
int3的问题shellwolf说得很清楚了。

c2.004133E0,这种格式很自然,不知道你哪里不懂?

如果不想显示c2,可以在 选项->调试选项->反汇编,将“显示本地模块名称”一项关闭。
2009-1-22 10:57
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢几位大侠的指点!!!
我的是ddebug模式,不知为什么,vc编译出来只有debug模式,没有release模式

另外,有2个地方不明白:
0041100A    E9 D1230000     JMP c2.004133E0
0041100F    E9 7A0F0000     JMP <JMP.&MSVCP80D.?good@ios_base@std@@Q>

jmp命令的机器码是E9吧,那个c2.004133E0怎么对应D1230000?
<JMP.&MSVCP80D.?good@ios_base@std@@Q>怎么对应7A0F0000?

谢谢先!!!
2009-1-22 18:04
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
VC的编译模式要手动去切换才行,不是编译一次2个版本同时产生。

E9 后面的是相对的偏移,D1230000是DWORD的0x000023D1,所以跳转的地址就是这条指令之后的地址加上偏移,等于0041100F + 000023D1 = 004133E0。后面那个同理。
2009-1-22 18:27
0
游客
登录 | 注册 方可回帖
返回
//