中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 看雪学院专区 > 加壳技术
关于加壳时处理 TLS 的讨论
作者:simonzh2000 时间:2005-11-24 11:00 出处:pediy.com 责编:月夜寒箫
              摘要:暂无
最近学习 yoda 1.2 ,  发现 Thread Local Storage(TLS)部分处理不太明白,  yoda 只是简单地把IMAGE_TLS_DIRECTORY32 复制到其他地方,  加壳后好象也没什么问题.

IMAGE_TLS_DIRECTORY32 STRUCT
    StartAddressOfRawData   dd    ?
    EndAddressOfRawData     dd    ?
    AddressOfIndex          dd     ?
    AddressOfCallBacks      dd     ?
    SizeOfZeroFill          dd    ?
    Characteristics         dd     ?
IMAGE_TLS_DIRECTORY32 ENDS

后来我在 yoda 的基础上 加了 aPlib,  问题就出来了,  程序不能运行了, 调试后发现问题就出在  TLS 上, 看来仅仅把IMAGE_TLS_DIRECTORY32 复制一份是不够的, 加壳时要完美处理TLS 好象比较困难, 不知各位写壳高手有什么好的办法?  还好, 用到 TLS 的程序好象不多. 


下面是我的实验过程
附件:tls.zip

五. 从上面可见,  Tls 数据初试化和 TLS回调函数都在 OEP 之前进行,  如果程序加壳, 壳的 Loader 这时还没有起作用,   代码和 IAT 都没有解密,  要执行 回调函数肯定出错.

还要注意,  IMAGE_TLS_DIRECTORY32 的数据都是 VA, 不是 RVA,   还涉及到重定位的问题.


不过, 有TLS 回调函数的程序不多,  壳只要简单地复制  IMAGE_TLS_DIRECTORY32 就可以了. 
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有