Required extensions not supported. IBJ... 原因分析

前几天因为给部门培训一些逆向工程的东西,想起有个64k彗星撞地球动画挺有意思的,肯定是加了压缩壳的
于是就网上下了下来,先脱一次壳再说,别当现场出丑,运用ESP定律F2,[ESP]设置硬件访问断点,F9,F9,
很快找到OEP 61322E。  取消断点,OEP设置硬件执行段点,F9,导出。 ESP果然不俗啊,传说中的秒脱。
好!  运行脱壳后的文件竟然弹出个对话框提示Required extensions not supported. IBJ...  囧啊。 又试了一遍,还是不行。 不信这个邪了,直接运行脱壳前的东东,也不行。

下断点,找到弹出对话框的地方,下面这段代码是也,
00603986  |.  68 031F0000   push    1F03
0060398B  |.  FF15 A4416100 call    dword ptr [6141A4]        ;  OPENGL32.glGetString
00603991  |.  68 04FD9000   push    0090FD04                  ; /s2 = "GL_ARB_multitexture"
00603996  |.  50            push    eax                       ; |s1
00603997  |.  FF15 E0406100 call    dword ptr [6140E0]        ; /strstr
0060399D  |.  59            pop     ecx
0060399E  |.  85C0          test    eax, eax
006039A0  |.  59            pop     ecx
006039A1  |.  75 1B         jnz     short 006039BE
006039A3  |.  33F6          xor     esi, esi
006039A5  |.  56            push    esi                       ; /Style => MB_OK|MB_APPLMODAL
006039A6  |.  68 FCFC9000   push    0090FCFC                  ; |Title = "Error!"
006039AB  |.  68 D0FC9000   push    0090FCD0                  ; |Text = "Required extensions not supported. IBJ..."
006039B0  |.  56            push    esi                       ; |hOwner => NULL
006039B1  |.  FF15 50426100 call    dword ptr [614250]        ; /MessageBoxA
查了下opengl手册,1F03就是GL_EXTENSIONS过程大概是
char*  ability = glGetString(GL_EXTENSIONS);
if (strstr(ability,"GL_ARB_multitexture")==0)
{
     MessageBox(NULL,0,"Requred...","Error!",MB_OK|MB_APPLMODAL);
}
大概意思就是你的机器不支持GL_ARB_multitexture。我的显卡glGetString返回值是GL_WIN_swap_hint GL_EXT_bgra GL_EXT_paletted_texture 天哪,我这可是3月份1300大洋买的索泰260+啊,貌似

GL_ARB_multitexture还是opengl1.X的特性,太离谱了吧看来是驱动版本太旧了,到官网http://developer.nvidia.com/object/opengl_3_driver.html下载最新版的驱动(乖乖 66M大)后试了一下,
我要哭了,还是不行。查看opengl32.dll版本号,靠4.0, gl啥时候有4.0版本了,再看版权信息Copyright (C) Microsoft Corp. 1981-1996,奶奶的,被忽悠了,雨林木风竟然给我我了个1.1版本的opengl32.dll于是乎,继续网上找,最后终于找到个新版本的opengl32.dll.版本号检测是3.2! 不知道真假。方正可以用起来了改天有空我传到网上。

 

google了一把,有其他人玩游戏或者运行其他程序也遇到这个问题,网上也没说出有效解决办法。特写出来分享,当然你们的问题不一定是不支持GL_ARB_multitexture,也可能是不支持opengl的其他特性,最差查看

你的显卡或者显卡驱动是不是太老了。从nvdia网站来看,

directx和opengl是两套驱动,通常大家只注意升级dx驱动,不注重升级opengl驱动可能会导致这个情况,当然一些掉了牙的机器支持的opengl版本实在太低还是另想办法吧。

 

顺便鄙视软件作者,难道把"GL_XXXXXXXXX  EXTENSIONS support  required!"打印出来真那么难吗。用户拿着Required extensions not supported. IBJ...这句话网上求助就算是软件工程师有几个能看明白的?

 

不过这个demo效果还真是没的说,效果当然是一流的,64k的彗星撞地球竟然脱出3.7M的硕大exe,其压缩壳(kkrunchy)用的是PAQ7算法,效果特别好。不过WINRAR用了PAQ8,从名字上感觉似乎比PAQ7先进一点。

另外推荐软件OpenGL Extensions Viewer,可以看出你机器目前OpenGL的支持情况。

 

更新opengl32.dll后 我的显卡竟然支持这么多,太夸张了。

06E1B500  GL_ARB_color_buffer_float GL_ARB_compatibility GL_ARB_copy_buffe
06E1B540  r GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_text
06E1B580  ure GL_ARB_draw_buffers GL_ARB_draw_elements_base_vertex GL_ARB_
06E1B5C0  draw_instanced GL_ARB_fragment_coord_conventions GL_ARB_fragment
06E1B600  _program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader G
06E1B640  L_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_geometry
06E1B680  _shader4 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB
06E1B6C0  _imaging GL_ARB_map_buffer_range GL_ARB_multisample GL_ARB_multi
06E1B700  texture GL_ARB_occlusion_query GL_ARB_pixel_buffer_object GL_ARB
06E1B740  _point_parameters GL_ARB_point_sprite GL_ARB_provoking_vertex GL
06E1B780  _ARB_seamless_cube_map GL_ARB_shader_objects GL_ARB_shading_lang
06E1B7C0  uage_100 GL_ARB_shadow GL_ARB_sync GL_ARB_texture_border_clamp G
06E1B800  L_ARB_texture_buffer_object GL_ARB_texture_compression GL_ARB_te
06E1B840  xture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_en
06E1B880  v_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_
06E1B8C0  ARB_texture_env_dot3 GL_ARB_texture_float GL_ARB_texture_mirrore
06E1B900  d_repeat GL_ARB_texture_multisample GL_ARB_texture_non_power_of_
06E1B940  two GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_transpose_
06E1B980  matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_
06E1B9C0  ARB_vertex_array_object GL_ARB_vertex_buffer_object GL_ARB_verte
06E1BA00  x_program GL_ARB_vertex_shader GL_ARB_window_pos GL_ATI_draw_buf
06E1BA40  fers GL_ATI_texture_float GL_ATI_texture_mirror_once GL_S3_s3tc
06E1BA80  GL_EXT_texture_env_add GL_EXT_abgr GL_EXT_bgra GL_EXT_bindable_u
06E1BAC0  niform GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_
06E1BB00  blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL
06E1BB40  _EXT_compiled_vertex_array GL_EXT_Cg_shader GL_EXT_depth_bounds_
06E1BB80  test GL_EXT_direct_state_access GL_EXT_draw_buffers2 GL_EXT_draw
06E1BBC0  _instanced GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_fr
06E1BC00  amebuffer_blit GL_EXT_framebuffer_multisample GL_EXTX_framebuffe
06E1BC40  r_mixed_formats GL_EXT_framebuffer_object GL_EXT_framebuffer_sRG
06E1BC80  B GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_g
06E1BCC0  pu_shader4 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil
06E1BD00  GL_EXT_packed_float GL_EXT_packed_pixels GL_EXT_pixel_buffer_obj
06E1BD40  ect GL_EXT_point_parameters GL_EXT_provoking_vertex GL_EXT_resca
06E1BD80  le_normal GL_EXT_secondary_color GL_EXT_separate_shader_objects
06E1BDC0  GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stenci
06E1BE00  l_two_side GL_EXT_stencil_wrap GL_EXT_texture3D GL_EXT_texture_a
06E1BE40  rray GL_EXT_texture_buffer_object GL_EXT_texture_compression_lat
06E1BE80  c GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3t
06E1BEC0  c GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_textu
06E1BF00  re_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_ani
06E1BF40  sotropic GL_EXT_texture_integer GL_EXT_texture_lod GL_EXT_textur
06E1BF80  e_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_
06E1BFC0  EXT_texture_shared_exponent GL_EXT_texture_sRGB GL_EXT_texture_s
06E1C000  wizzle GL_EXT_timer_query GL_EXT_vertex_array GL_EXT_vertex_arra
06E1C040  y_bgra GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_K
06E1C080  TX_buffer_region GL_NV_blend_square GL_NV_conditional_render GL_
06E1C0C0  NV_copy_depth_to_color GL_NV_copy_image GL_NV_depth_buffer_float
06E1C100   GL_NV_depth_clamp GL_NV_explicit_multisample GL_NV_fence GL_NV_
06E1C140  float_buffer GL_NV_fog_distance GL_NV_fragment_program GL_NV_fra
06E1C180  gment_program_option GL_NV_fragment_program2 GL_NV_framebuffer_m
06E1C1C0  ultisample_coverage GL_NV_geometry_shader4 GL_NV_gpu_program4 GL
06E1C200  _NV_half_float GL_NV_light_max_exponent GL_NV_multisample_covera
06E1C240  ge GL_NV_multisample_filter_hint GL_NV_occlusion_query GL_NV_pac
06E1C280  ked_depth_stencil GL_NV_parameter_buffer_object GL_NV_parameter_
06E1C2C0  buffer_object2 GL_NV_pixel_data_range GL_NV_point_sprite GL_NV_p
06E1C300  rimitive_restart GL_NV_register_combiners GL_NV_register_combine
06E1C340  rs2 GL_NV_shader_buffer_load GL_NV_texgen_reflection GL_NV_textu
06E1C380  re_barrier GL_NV_texture_compression_vtc GL_NV_texture_env_combi
06E1C3C0  ne4 GL_NV_texture_expand_normal GL_NV_texture_rectangle GL_NV_te
06E1C400  xture_shader GL_NV_texture_shader2 GL_NV_texture_shader3 GL_NV_t
06E1C440  ransform_feedback GL_NV_transform_feedback2 GL_NV_vertex_array_r
06E1C480  ange GL_NV_vertex_array_range2 GL_NV_vertex_buffer_unified_memor
06E1C4C0  y GL_NV_vertex_program GL_NV_vertex_program1_1 GL_NV_vertex_prog
06E1C500  ram2 GL_NV_vertex_program2_option GL_NV_vertex_program3 GL_NVX_c
06E1C540  onditional_render GL_SGIS_generate_mipmap GL_SGIS_texture_lod GL
06E1C580  _SGIX_depth_texture GL_SGIX_shadow GL_SUN_slice_accum GL_WIN_swa
06E1C5C0  p_hint WGL_EXT_swap_control .

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值