天枫庄资源网 Design By www.wosibo.com
简单聊一聊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我们就修复好了。
天枫庄资源网 Design By www.wosibo.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
天枫庄资源网 Design By www.wosibo.com
暂无简单说说什么是IAT,简单聊聊怎么修复IAT的评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年12月24日
2024年12月24日
- 小骆驼-《草原狼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]