|
在脱了壳的文件向下找一个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一个一个试就可以了哈 |
|