我想在 vb6 中克隆 ollydbg 的功能,这样我就可以更轻松地编写自己的工具,然后使用它的脚本引擎。
我首先尝试以与 ollydbg 完全相同的方式映射内存映射的地址。
PE 标头位于 0x00400000 处,大小为 0x1000
我假设 0x00400000 是这样检索的。
Dim AddressOfPE As Long = NTHEADER.OptionalHeader.ImageBase
现在我想映射所有其他最重要的东西的地址,.text .rdata但我不介意拥有它们。
我试过的是这个
For u = 0 To UBound(SECTIONSHEADER)
AddressStart = AddressOfPE + SECTIONSHEADER(u).VirtualAddress
Debug.Print "(" & u & ") " & SECTIONSHEADER(u).nameSec & _
" AddressStart = " & Hex(AddressStart) & _
" VirtualAddress = " & Hex(SECTIONSHEADER(u).VirtualAddress) & _
" VirtualSize = " & Hex(SECTIONSHEADER(u).VirtualSize) & _
" SizeOfRawData = " & Hex(SECTIONSHEADER(u).SizeOfRawData)
'Hunt for strings
If SECTIONSHEADER(u).nameSec = ".rdata" Or SECTIONSHEADER(u).nameSec = ".data" Then
MsgBox "a"
End If
AddressEnd = AddressStart + SECTIONSHEADER(u).SizeOfRawData
Debug.Print "(" & u & ") " & SECTIONSHEADER(u).nameSec & _
" AddressEnd(?) = " & Hex(AddressEnd) & _
" OllyAddressEnd(?) = " & Hex(SECTIONSHEADER(u).SizeOfRawData)
Next u
调试日志看起来像这样
(0) .text AddressStart = 401000 VirtualAddress = 1000 VirtualSize = 1FAB3AD SizeOfRawData = 1FAB400
(0) .text AddressEnd(?) = 23AC400 OllyAddressEnd(?) = 1FAB400
(1) .rdata AddressStart = 23AD000 VirtualAddress = 1FAD000 VirtualSize = 855586 SizeOfRawData = 855600
(1) .rdata AddressEnd(?) = 2C02600 OllyAddressEnd(?) = 855600
(2) .data AddressStart = 2C03000 VirtualAddress = 2803000 VirtualSize = 2D045C4 SizeOfRawData = 1DF000
(2) .data AddressEnd(?) = 2DE2000 OllyAddressEnd(?) = 1DF000
(3) .rsrc AddressStart = 5908000 VirtualAddress = 5508000 VirtualSize = 105CC SizeOfRawData = 10600
(3) .rsrc AddressEnd(?) = 5918600 OllyAddressEnd(?) = 10600
看着这张图片,我好像没问题?但大小地址已关闭。

