您身边的网站建设专家
成功案例

【建站服务】汝州网站制作【汝州网站优化】汝州建网站、汝州微信公众号运营、汝州网页设计、汝州微信小程序商城-域名申请

日期: 2022-09-20 15:27:12 浏览数:4


上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


汝州网站制作【汝州网站优化】汝州建网站、汝州微信公众号运营、汝州网页设计、汝州微信小程序商城


汝州市位于河南省中西部,因北汝河贯穿全境而得名,总面积1573平方公里,总人口120万,辖21个乡镇街道,459个行政村,是平顶山市下辖的县级市,也是河南省十个省直管县试点之一。

汝州是历代郡州治所。从公元606年的隋朝设立汝州以来,距今已有1400多年的历史。

汝州距离省会郑州90公里、洛阳70公里、平顶山60公里,焦枝(柳)铁路、宁洛高速、二广高速、林桐高速穿境而过,在1小时交通圈内通达郑州国际机场、洛阳机场,已建成和规划建设的郑万高铁、郑洛城际铁路、洛平漯周高铁、三洋铁路紧临汝州或在汝州设站。

汝州境内旅游景点达到852个,省级以上重点文物保护单位20个,其中国家重点文物保护单位10处,拥有风穴寺、九峰山等2个4A级景区,怪坡、中国汝瓷小镇、丹阳湖景区、汝水湾景区、汝河沙滩公园等5个3A级景区。共有37个具有开发价值的古寨古堡,夏店镇山顶村、蟒川镇半扎村、大峪镇青山后村、焦村镇张村等4个是国家级传统村落。九峰山、紫云山、蒋姑山、大红寨等风景名胜,罗圈地质公园冰川遗址是世界四大冰川地质遗址之一。

汝州市为国家园林城市、国家卫生城市、全国绿化模范市、全国文明城市城市,被评为全国第二批节水型社会建设达标市、全省水生态文明城市、全省首批全域旅游示范市、首批省级森林城市,荣获中国十佳绿色城市、全国文旅融合特色创新示范市、中国汝瓷之都等称号,海绵城市项目荣获中国人居环境范例奖,PPP项目实施和土地节约集约利用两项工作受到国务院通报表彰。 [1] 


起因,由于部分网站升级https加密协议至tls1.2,而WinXP的schannel不支持tls1.2,使用windows SSPI提供https能力的软件,在XP下不能访问tls1.2的网站。


因此,thunder和IDM等下载软件,在后期版本里,都引入了openssl来支持https.


至笔者发文时,IDM的最新版本是v6.38b21,其在SSPI方式失败的时候,会尝试openssl来连接。


但是笔者发现,WinXP下IDM仍不能下载部分https链接,提示:



图例Url是:https://www.appinn.com/wp-content/uploads/Appinn-icon-32.jpg


wireshark抓包,与笔者调用openssl成功下载的demo对比发现:



下载失败的那种情况,SSL握手的时候,扩展字段里缺少了server_name.


对比IDM的SSL相关实现,发现它缺少了很重要的一句,SSL_set_tlsext_host_name(sslHandle, host);


// Connect the SSL struct to our connection

        if (!SSL_set_fd (sslHandle, (int)socket))

            ERR_print_errors_fp (stderr);


        SSL_set_tlsext_host_name(sslHandle, host);


        // Initiate SSL handshake

        if (SSL_connect (sslHandle) != 1)

            ERR_print_errors_fp (stderr);


于是需要给IDMan.exe里补丁上这一句:


1 查壳,无壳。

2 查导入表表,没发现libssl.dll.

3 windbg Ctrl+e IDMan.exe,sxe ld libssl.dll,返回至IDMan.exe领空,发现:

LoadLibraryW(libssl.dll);

GetProcAddress(h_libssl_dll, "SSL_connect");


SSL_set_tlsext_host_name宏实际是SSL_ctrl(),但是上面初始化ssl函数的函数里,没有初始化SSL_ctrl,给它补一个:

3.1 .rdata节末尾空白处,加一个字符串pch_SSL_ctrl"SSL_ctrl";

3.2 .data节末尾空白处加一个变量存SSL_ctrl地址;

3.3 在.text节末尾空白处加:

  test    bl, bl

  jnz     L_Fail

  push    offset pch_SSL_ctrl ; lpProcName

  mov     eax, h_libssl_dll

  push    eax             ; hModule

  call    esi ; GetProcAddress

  mov     SSL_ctrl, eax

  cmp     eax, edi

  jz      L_Fail

  jmp     L_Success


3.4 在初始化ssl函数的函数里,原来初始化玩最后一个SSL函数,即SSL_read后,跳到L_SSL_ctrl,

  push    offset aSsl_read ; "SSL_read"

  mov     ecx, h_libssl_dll

  push    ecx             ; hModule

  call    esi ; GetProcAddress

  mov     SSL_read, eax

  cmp     eax, edi

  jnz     L_SSL_ctrl

  

这样就找到了SSL_ctrl的地址。


4. bp libssl!SSL_connect,下载https://www.appinn.com/wp-content/uploads/Appinn-icon-32.jpg,断下,返回至IDMan.exe领空;

在SSL_connect之前,我们要想办法插入SSL_set_tlsext_host_name(sslHandle, host);

SSL_set_tlsext_host_name有两个参数,明显这里能直接拿到sslHandle,而host是Url中的www.appinn.com,猜测在此处函数里的this指针里,会有这个host的存在。

SSL_set_tlsext_host_name宏实际是SSL_ctrl。


bp ws2_32!gethostbyname, 笔者这里第五次命中时会进入openssl流程,返回至IDMan.exe领空,能看到:


  v5 = *(_DWORD *)(this_ + 0x184);

  if ( v5 )

    v6 = *(_BYTE *)(v5 + 0x15C);

  else

    v6 = 0;


  if ( v6 )

  {

    host = *(char **)(v5 + 0x140);

  }

  else

  {

    v9 = *(char ***)(this_ + 0xB4);

    if ( !v9 )

      v9 = *(char ***)(this_ + 0xB0);

    host = *v9;

  }

这里就拿到了host的位置,实际后面我们用到的是poi(poi(this_ + 0xB0))。


返回一开始断SSL_connect的地方,返回IDMan领空,把call SSL_connect改为:


  mov     ecx, [esi+3450h]

  push    ecx

  nop

  jmp     L_SSL_ctrl_setServerName  // 原来是call SSL_connect

  

在.text节末尾空白处加:

   L_SSL_ctrl_setServerName proc near

                 mov     eax, [esi+0B0h]

                 mov     eax, [eax]

                 push    eax             ; _DWORD

                 push    0               ; _DWORD

                 push    37h             ; _DWORD

                 push    ecx             ; _DWORD

                 call    SSL_ctrl

                 add     esp, 10h

                 call    SSL_connect

                 jmp     原始call SSL_connect后一句

 L_SSL_ctrl_setServerName endp

 

 

 测试OK ~

 

 PS:

 1.汇编代码可以用VS 里 __asm{ xxx xxx}, 反编译后拿到。

 2.jmp等的opcode自己构造,目标地址-原始地址-5,如果是负值用补码;

 3.用IDA patch的,菜单Edit -> Patch program -> Change byte,完成后Apply patches to input file...


微信图片_20210425092605.jpg


汝州网站制作汝州网站优化汝州建网站、汝州微信公众号运营、汝州设计、汝州微信小程序商城


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设上往建站