找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 71|回复: 0

导入表修复方法

[复制链接]

246

主题

98

回帖

675

牛毛

一级牛人

黑客帝国

积分
675
发表于 2009-7-31 14:47:43 | 显示全部楼层 |阅读模式 来自 河北省沧州市
在脱了壳的文件向下找一个API涵数看一下它的地址是多少
然后在命令行下输入
D API地址

就会看到如下的东西了

005A21FC  000****0000
005A2200  000****0000
005A2204  000****0000
005A2208  77F8F0B2  ntdll.RtlDeleteCriticalSection
005A220C  77F87FC0  ntdll.RtlLeaveCriticalSection
005A2210  77F87EE0  ntdll.RtlEnterCriticalSection
005A2214  77E898F2  KERNEL32.InitializeCriticalSection
005A2218  77E7E8C7  KERNEL32.VirtualFree
005A221C  77E7E8AD  KERNEL32.VirtualAlloc
005A2220  77E692C5  KERNEL32.LocalFree
005A2570  77E6D4E1  KERNEL32.Beep
005A2574  000****0000
005A2578  777E1B06  version.VerQueryValueA
005A257C  777E1A6C  version.GetFileVersionInfoSizeA
005A2580  777E1AB6  version.GetFileVersionInfoA
005A2584  000****0000
005A2588  77F46A9A  GDI32.UnrealizeObject
005A2714  000****0000
005A2718  77DFCF54  user32.CreateWindowExA
005A29EC  77DFD22F  user32.CharUpperBuffA
005A29F0  77E00BDA  user32.CharToOemA
005A29F4  77E1895E  user32.AdjustWindowRectEx
005A29F8  77E0E406  user32.ActivateKeyboardLayout
005A29FC  000****0000
005A2A00  7CF24E50  ole32.CreateStreamOnHGlobal
005A2A2C  7CF40E8F  ole32.CoInitialize
005A2A30  7CF3956D  ole32.IsEqualGUID
005A2A34  000****0000
005A2A38  779B13E0  oleaut32.GetErrorInfo
005A2A3C  779C3D30  oleaut32.GetActiveObject
005A2A40  779B93D0  oleaut32.SysFreeString
005A2A44  000****0000
005A2A48  71***18E5  comctl32.ImageList_SetIconSize
005A2AA4  717****8585  comctl32.ImageList_Destroy
005A2AA8  71***80D  comctl32.ImageList_Create
005A2AAC  71***06C  comctl32.InitCommonControls
005A2AB0  000****0000
005A2AB4  79***81E3  SHELL32.Shell_NotifyIconA
005A2AB8  78FB961B  SHELL32.ShellExecuteExA
005A2ABC  79***06B6C  SHELL32.ShellExecuteA
005A2AC0  790****4799  SHELL32.DragQueryFileA
005A2AC4  79***47B5  SHELL32.DragFinish
005A2AC8  78FD0CD5  SHELL32.DragAcceptFiles
005A2BF0  000****0000
表太常删了一些

可以很容易的看出来每个涵数之间都会有000****0000来格着
那么怎么取RVA的值那??聪明的一看就知道了:)好我们来看一下
最上面的第一个涵数之上的000****0000地址是多少:005A2204  000****0000
那么RVA的值就是000A2204那大小是多少那?
你会说用最后一个减一下就出来了呵呵,在这里我说一个简单的方法就是
在005A2204 处点一下鼠标呵呵你看到了什么?
$ ==>    >77F8F0B2  ntdll.RtlDeleteCriticalSection
$+4      >77F87FC0  ntdll.RtlLeaveCriticalSection
$+8      >77F87EE0  ntdll.RtlEnterCriticalSection
$+C      >77E898F2  KERNEL32.InitializeCriticalSection
$+10     >77E7E8C7  KERNEL32.VirtualFree
$+14     >77E7E8AD  KERNEL32.VirtualAlloc
$+18     >77E692C5  KERNEL32.LocalFree
看到了吧,它自己都给我们算好了,我们只要找到最后一个涵数,看一看值是多少就可以了
怎么样简单吧.
$+9D4    >773D73CE  msacm32.acmStreamUnprepareHeader
$+9D8    >773D7282  msacm32.acmStreamPrepareHeader
$+9DC    >773D71B8  msacm32.acmStreamSize
$+9E0    >773D6FB6  msacm32.acmStreamClose
$+9E4    >773D6B51  msacm32.acmStreamOpen
$+9E8    >000****0000
这个程序的RVA的大小就是9E8

那么到这里就可以了吗不可以的RVA的值000A2204的第三个0可能要改的也可能不用改跟据情况了
一般是0-9一个一个试就可以了哈
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-1-27 07:18 , Processed in 0.125349 second(s), 28 queries , Yac On.

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表