首页
社区
课程
招聘
[讨论]__try __except 有的系统正常,有的系统直接退出
发表于: 2016-5-28 21:42 7569

[讨论]__try __except 有的系统正常,有的系统直接退出

2016-5-28 21:42
7569
都是通过如下代码编译出来的程序. 放在不同的系统上运行,部分系统出现无法__try 出来的情况是什么原因?

int *p =  (int *)0x123;   制造一个不存在的野指针

   __try
          {
                if( *p == 0xC)
                  {
                        printf("1\n");
                  }
           }
          __except(1)
            {
                 printf("2\n");
             }

像这代码编译运行.   大部分系统会显示 "2"     但是有一部分却直接退出 原因是 内存指针 ?? 无法__try 出来

换成 IsBadReadPtr 才可以.

求指点!

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
确定是正常执行?
用了什么内存加载之类的么
2016-5-29 05:22
0
雪    币: 457
活跃值: (218)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
问题很奇怪 我也想知道 帮顶
2016-6-24 16:24
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
4
编译时去掉GS去掉safeseh和C++异常,内存加载就和谐了
当然也是你加载办法不行的原因,网上哪个什么memory module只是一个poc,不是一个产品级加载。
2016-6-24 17:28
0
雪    币: 79
活跃值: (184)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
xp和win7 不是一个级别
2016-6-24 17:43
0
雪    币: 4343
活跃值: (4328)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
cvcvxk 编译时去掉GS去掉safeseh和C++异常,内存加载就和谐了 当然也是你加载办法不行的原因,网上哪个什么memory module只是一个poc,不是一个产品级加载。
谢谢V校,  其实是加壳导致的. 一直没来关注,后面分析出来了.

__try  和 __except 的执行在区段的访问上有一个条件
代码段  & 0x200000000 

0058483A    E8 3171FFFF     CALL _ValidateImageBase
0058483F    83C4 04         ADD ESP,0x4
00584842    85C0            TEST EAX,EAX
00584844    0F84 F6000000   JE 00584940
0058484A    8B45 E4         MOV EAX,DWORD PTR SS:[EBP-0x1C]
0058484D    50              PUSH EAX
0058484E    8B4D DC         MOV ECX,DWORD PTR SS:[EBP-0x24]
00584851    E8 3AFEFFFF     CALL ValidateScopeTableHandlers   //跟进


005846D3    E8 D872FFFF     CALL _FindPESection
005846D8    83C4 08         ADD ESP,0x8
005846DB    85C0            TEST EAX,EAX
005846DD    74 5D           JE SHORT 0058473C
005846DF    F740 24 0000002>TEST DWORD PTR DS:[EAX+0x24],0x20000000                ; 这个区段属性决定了是否能成功的执行 __try
005846E6    74 54           JE SHORT 0058473C
005846E8    8BD6            MOV EDX,ESI




2022-1-20 08:33
0
雪    币: 4343
活跃值: (4328)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7


PUSH _except_handler3                    ;  SE handler installation


这个条件判断是在_except_handler3 函数中的   CALL _ValidateEH3RN 检测.  编译在vs2010的__try  ,
所以有时候加壳为什么有__try 的加壳之后会出错就在这里.

2022-1-20 08:41
0
游客
登录 | 注册 方可回帖
返回
//