简单聊一聊IAT
新手在脱壳后发现脱壳后的程序报错或无法使用,有可能是IAT没有修复好,但什么是IAT呢?我简单聊一聊,我也是破解小白,这篇帖子是我好不容易搞明白了IAT,所以想分享一下,如果有错误,希望大佬指出来。
什么是IAT?
在了解IAT之前我们需要知道什么是pe文件、什么是dll文件:
这两个文件的介绍是我从网上寻找的解释:
1、PE文件
PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)
当然,也可以把PE文件简单理解为日常使用的后缀名为EXE的应用程序、可执行文件。
2、DLL文件
DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
当然,也可以把DLL文件理解为将函数进行封装的外置库,可以想象成当PE文件是一个人时,那DLL文件就是帮助你完成某件事的工具。大概吧!
当我们粗略的了解完了PE文件和DLL文件,接下来将开始上正餐,聊聊IAT了!
百度百科上的解释是:
IAT(Import Address Table) 由于导入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于一个或者多个DLL 中.当PE 文件被装入内存的时候,Windows 装载器才将DLL 装入,并将调用导入函数的指令和函数实际所处的地址联系起来(动态连接),这操作就需要导入表完成.其中导入地址表就指示函数实际地址。
其实百度百科讲的很好,但下面还是来梳理一下IAT,这样可以更易于理解:
我们知道了PE文件,和PE文件的外置封装库DLL文件,那PE文件该怎么调用DLL文件呢?
1、当你在编写程序的时候,你只需要在源代码中写函数名和参数,编译器就会将程序所需的函数名和函数所在的DLL文件这两个信息写入的输入表中,当你的程序启动运行时操作系统根据输入表中记录的信息,将程序所需的DLL加载到进程地址空间当中。
2、程序所需的DLL文件加载完毕后,会获取到导入名称表INT中的函数名称,从而通过INT中的函数名称获取到函数在进程地址空间中的地址,最后将地址加载到导入地址表IAT当中。然后程序就可以正常调用IAT中这些函数地址了,毕竟你的程序里调用的地址不太可能是直接调用DLL里函数的地址,因为你不知道地址是多少
所以简单来说,IAT就是一个用来记录程序所用到的函数在PE文件进程空间中位置的表。
既然IAT是用来记录程序所用到的函数在PE文件进程空间中位置的表,那如果这个表出问题了,这个程序就没法正常调用DLL文件中的函数了,那程序不得出问题啊!所以脱壳后IAT的修复是必要的。
第一步:找到OEP我们先查壳,看看这是什么类型的壳。可以看到这个壳是一个UPX的壳,那我们先试着使用ESP定律法进行脱壳。加载时显示代码段可能被加密或压缩,代码分析的信息不可靠,问我们还要不要分析,这里都说不可靠了,那就点否,其实点啥都无所谓。单步步过【F8】pushad,将所有寄存器都压入栈,可以看到右上角寄存器窗口除了EIP之外只有ESP红了,说明我们可以通过ESP定律来脱壳,ESP定律脱壳这里就不多说了,是一种利用堆栈平衡来进行脱壳的手段。感兴趣的话可以看看FCG大佬的帖子:脱壳破解之详解ESP定律原理及作用 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|[url]www.52pojie.cn[/url]通过ESP定律找到了OEP,OEP为005025A6,得到了OEP,下一步我们就需要修复IAT了,但在这之前我们需要确认一样东西是否存在,那就是ASLR,它会将我们基址随机化,其他地址也会随基址变化而变化,所以不得不注意。第一张图可以看到基址为00400000,第二张图可以看到勾选了重定位已分离,所以我们不用担心ASLR的问题了。下一步我们可以进入call中寻找特征码为FF 15的call,也可以通过查找来寻找特征码为FF 15的call,寻找到特征码为FF 15的call后,我们可以回车进去看一下,可以发现call里的地址为系统领空,我们可以大胆猜测特征码为FF 15的call跳转到了加载到进程地址空间的DLL文件中的函数,而在进程地址空间中的DLL文件中函数的地址就加载在IAT当中。那我们知道这个call所去的地方是加载到进程地址空间的DLL文件中函数的地址,那么00527854这个地址中存的应该就是加载到进程地址空间的DLL文件中函数的地址了,既然如此,那我们直接数据窗口跟随就可以看到加载到进程地址空间的DLL文件中函数的地址了。确实如此,既然00527854中的值是加载到IAT中的函数地址,那我们往上翻找到第一个加载到IAT的函数地址。往上翻找到了第一个加载到IAT的函数地址00527000,再往下翻找到最后一个加载到IAT的函数地址。
最后一个加载到IAT的函数地址为0052795C,用最后一个减去第一个得到大小95C,你大小可以填1000、1500,你填的大小只能比95C大,不能比95C小。
填什么呢?填IAT修复工具的RVA和大小
在必需的IAT信息下填好OEP和RVA,以及大小,OEP是出口点,这里填的时候需要用OEP地址005025A6减去基址00400000,得到001025A6后填入OEP中,RVA同理,用第一个加载到IAT的函数地址减去基址,得到00127000填入RVA。
填好必需的IAT信息后,点击‘获取导入表’,得到如下图所示:
找到的导入表函数有些是无效的,我们需要做的就是将无效的导入表函数去除,我们可以点击右上角的‘显示无效的’,得到如下图所示:
我们接下来右击‘找到的导入表函数’窗口中的蓝色部分,点击‘剪切指针’或‘删除指针’:
清理完无效的导入表函数后,我们这个软件的IAT就修复好了,接下来点击‘修正转储’,找到dump好的软件,将修复好的IAT修正转储到dump好的软件中。
可以从日志中看到修正转储成功了,到此IAT我们就修复好了。
新手在脱壳后发现脱壳后的程序报错或无法使用,有可能是IAT没有修复好,但什么是IAT呢?我简单聊一聊,我也是破解小白,这篇帖子是我好不容易搞明白了IAT,所以想分享一下,如果有错误,希望大佬指出来。
什么是IAT?
在了解IAT之前我们需要知道什么是pe文件、什么是dll文件:
这两个文件的介绍是我从网上寻找的解释:
1、PE文件
PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)
当然,也可以把PE文件简单理解为日常使用的后缀名为EXE的应用程序、可执行文件。
2、DLL文件
DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
当然,也可以把DLL文件理解为将函数进行封装的外置库,可以想象成当PE文件是一个人时,那DLL文件就是帮助你完成某件事的工具。大概吧!
当我们粗略的了解完了PE文件和DLL文件,接下来将开始上正餐,聊聊IAT了!
百度百科上的解释是:
IAT(Import Address Table) 由于导入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于一个或者多个DLL 中.当PE 文件被装入内存的时候,Windows 装载器才将DLL 装入,并将调用导入函数的指令和函数实际所处的地址联系起来(动态连接),这操作就需要导入表完成.其中导入地址表就指示函数实际地址。
其实百度百科讲的很好,但下面还是来梳理一下IAT,这样可以更易于理解:
我们知道了PE文件,和PE文件的外置封装库DLL文件,那PE文件该怎么调用DLL文件呢?
1、当你在编写程序的时候,你只需要在源代码中写函数名和参数,编译器就会将程序所需的函数名和函数所在的DLL文件这两个信息写入的输入表中,当你的程序启动运行时操作系统根据输入表中记录的信息,将程序所需的DLL加载到进程地址空间当中。
2、程序所需的DLL文件加载完毕后,会获取到导入名称表INT中的函数名称,从而通过INT中的函数名称获取到函数在进程地址空间中的地址,最后将地址加载到导入地址表IAT当中。然后程序就可以正常调用IAT中这些函数地址了,毕竟你的程序里调用的地址不太可能是直接调用DLL里函数的地址,因为你不知道地址是多少
所以简单来说,IAT就是一个用来记录程序所用到的函数在PE文件进程空间中位置的表。
既然IAT是用来记录程序所用到的函数在PE文件进程空间中位置的表,那如果这个表出问题了,这个程序就没法正常调用DLL文件中的函数了,那程序不得出问题啊!所以脱壳后IAT的修复是必要的。
第一步:找到OEP我们先查壳,看看这是什么类型的壳。可以看到这个壳是一个UPX的壳,那我们先试着使用ESP定律法进行脱壳。加载时显示代码段可能被加密或压缩,代码分析的信息不可靠,问我们还要不要分析,这里都说不可靠了,那就点否,其实点啥都无所谓。单步步过【F8】pushad,将所有寄存器都压入栈,可以看到右上角寄存器窗口除了EIP之外只有ESP红了,说明我们可以通过ESP定律来脱壳,ESP定律脱壳这里就不多说了,是一种利用堆栈平衡来进行脱壳的手段。感兴趣的话可以看看FCG大佬的帖子:脱壳破解之详解ESP定律原理及作用 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|[url]www.52pojie.cn[/url]通过ESP定律找到了OEP,OEP为005025A6,得到了OEP,下一步我们就需要修复IAT了,但在这之前我们需要确认一样东西是否存在,那就是ASLR,它会将我们基址随机化,其他地址也会随基址变化而变化,所以不得不注意。第一张图可以看到基址为00400000,第二张图可以看到勾选了重定位已分离,所以我们不用担心ASLR的问题了。下一步我们可以进入call中寻找特征码为FF 15的call,也可以通过查找来寻找特征码为FF 15的call,寻找到特征码为FF 15的call后,我们可以回车进去看一下,可以发现call里的地址为系统领空,我们可以大胆猜测特征码为FF 15的call跳转到了加载到进程地址空间的DLL文件中的函数,而在进程地址空间中的DLL文件中函数的地址就加载在IAT当中。那我们知道这个call所去的地方是加载到进程地址空间的DLL文件中函数的地址,那么00527854这个地址中存的应该就是加载到进程地址空间的DLL文件中函数的地址了,既然如此,那我们直接数据窗口跟随就可以看到加载到进程地址空间的DLL文件中函数的地址了。确实如此,既然00527854中的值是加载到IAT中的函数地址,那我们往上翻找到第一个加载到IAT的函数地址。往上翻找到了第一个加载到IAT的函数地址00527000,再往下翻找到最后一个加载到IAT的函数地址。
最后一个加载到IAT的函数地址为0052795C,用最后一个减去第一个得到大小95C,你大小可以填1000、1500,你填的大小只能比95C大,不能比95C小。
填什么呢?填IAT修复工具的RVA和大小
在必需的IAT信息下填好OEP和RVA,以及大小,OEP是出口点,这里填的时候需要用OEP地址005025A6减去基址00400000,得到001025A6后填入OEP中,RVA同理,用第一个加载到IAT的函数地址减去基址,得到00127000填入RVA。
填好必需的IAT信息后,点击‘获取导入表’,得到如下图所示:
找到的导入表函数有些是无效的,我们需要做的就是将无效的导入表函数去除,我们可以点击右上角的‘显示无效的’,得到如下图所示:
我们接下来右击‘找到的导入表函数’窗口中的蓝色部分,点击‘剪切指针’或‘删除指针’:
清理完无效的导入表函数后,我们这个软件的IAT就修复好了,接下来点击‘修正转储’,找到dump好的软件,将修复好的IAT修正转储到dump好的软件中。
可以从日志中看到修正转储成功了,到此IAT我们就修复好了。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“简单说说什么是IAT,简单聊聊怎么修复IAT”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年12月22日
2024年12月22日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]