首页
社区
课程
招聘
[讨论]TLS回调函数居然在入口点之后才执行?
发表于: 2010-5-30 14:15 6819

[讨论]TLS回调函数居然在入口点之后才执行?

2010-5-30 14:15
6819
在写壳,想用tls,于是在壳里面搞了一部分空地儿放tls表以及回调函数,然后在optional header里面填写了tls目录。

结果载入OD之后就神奇了,StrongOD设置break on tls,F9之后直接进了入口点,我以为tls表填的不对,结果又按了一次F9,它给断下来了……断在tls回调上面……又按了几次Alt+F9,终于回到程序领空,结果发现是一次DefWindowProc的调用……话说为什么tls回调变成这种样子呢?

把附件传上来了,是个加完壳后的小程序。

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
2
下面这条没执行到, 应该是你没任何模块需要初始化导致的 :
LdrpCallTlsInitializers(NtCurrentPeb()->ImageBaseAddress,DLL_PROCESS_ATTACH);
2010-5-30 22:50
0
雪    币: 45
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
非常感谢!
原来输入表清空还有这个坏处啊……
2010-5-31 14:39
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
4
你可以加个 user32.MessageBoxA 即可
2010-5-31 18:07
0
雪    币: 45
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
嗯,试了试发现输入表为空或者只有kernel32的话就不会执行tls,其余的好像都可以进入tls回调。
2010-5-31 22:00
0
游客
登录 | 注册 方可回帖
返回