当前位置:编程学习 > VB >>

请老马(myjian)大哥作答




两个问题:

1、上图中标注5的那个 【提示】 是什么意思 他的数值是做什么用的。

2、7处的入口点,是真实的加载到内存中的地址吗?

还有以下问题:

以下是用OllyICE查看的一个VB6开发的EXE程序中的部分代码:
请教以下问题

00401014 > . 46014873 dd MSVBVM60._adj_fdiv_m16i ; ASCII "P哙%"
问题:(1). 46014873 前面的点号什么作用。(2)此句什么作用,是定义了一个字符串,还是有其他用途 

00401122 $- FF25 5C104000 jmp dword ptr [<&MSVBVM60.#100>] ; MSVBVM60.ThunRTMain
问题:指令不是顺序存放的吗,此句中 $- FF25 5C104000 的作用是什么,指令 jmp dword ptr [<&MSVBVM60.#100>] 到底存放在内存的什么位置 

004011F1 . 46 6F 72 6D 3>ascii "Form1",0
问题: ascii 是汇编指令吗 

0040128C 94154000 dd 工程1.00401594
问题:此句的作用是什么 

--------------------编程问答-------------------- 交枪!这些我都不懂!

如果是临时去搜索点东西来塞着也不像个话!
不过豆子或陈辉这些玩过底层的家伙们知道的可能性挺大! --------------------编程问答-------------------- 回答个简单的吧

1、【提示】 对应英文界面上是hint。应该是某函数在dll导出表的序号吧。
2、那个地址应该是相对于dll加载基地址的偏移地址吧。

汇编的就不晓得了。
不过那个ascii什么的应该是ollydbg给出的注释,一般来说是相应地址的内容 --------------------编程问答--------------------
引用 1 楼 myjian 的回复:
交枪!这些我都不懂!

如果是临时去搜索点东西来塞着也不像个话!
不过豆子或陈辉这些玩过底层的家伙们知道的可能性挺大!


这两个人没接触过,可否帮忙给约一下。 --------------------编程问答-------------------- TREEVIEW+LISTVIEW而已 --------------------编程问答-------------------- 提示应该是函数入口地址 --------------------编程问答-------------------- 太高深 --------------------编程问答-------------------- 看界面是VC或C++做的东西,发到这版上,估计是憋着劲找茬的 --------------------编程问答-------------------- 楼上能否把帖子内容理解了再回复? --------------------编程问答-------------------- 不会看自带的帮助!?
引用楼主 bigtitsinsport 的回复:
1、上图中标注5的那个 【提示】 是什么意思 他的数值是做什么用的。
2、7处的入口点,是真实的加载到内存中的地址吗?

1、Hint The hint value for the imported function.  The hint value is used internally by the operating system抯 loader to quickly match imports with exports.  It is used as an index into the array of exported functions in the selected module.

2、Entry Point The entry point memory address for the function.  This is usually "Not Bound", meaning that the entry point address will not be known until load time.  If an address is given, then the parent module has bound by the BIND program.  BIND is a program that runs through a module's import table and stores the most probable entry point address for each function.  It does this for each function by opening the import module, looking up the function, and added that function's offset address with that module's preferred base load address.  This results in a faster load time if a bounded module's dependent modules actually load at their preferred base load addresses. --------------------编程问答-------------------- 我来翻译一下:
1、Hint The hint value for the imported function. The hint value is used internally by the operating system抯 loader to quickly match imports with exports. It is used as an index into the array of exported functions in the selected module.

翻译成中文:提示对于导入函数提示值。提示值所使用的操作系统加载器内部迅速配合出口进口。它是用来作为一个指标纳入导出函数在选定的组件阵列。 

2、Entry Point The entry point memory address for the function. This is usually "Not Bound", meaning that the entry point address will not be known until load time. If an address is given, then the parent module has bound by the BIND program. BIND is a program that runs through a module's import table and stores the most probable entry point address for each function. It does this for each function by opening the import module, looking up the function, and added that function's offset address with that module's preferred base load address. This results in a faster load time if a bounded module's dependent modules actually load at their preferred base load addresses. 
 
翻译成中文:入口点的入口点函数的内存地址。这通常是“没有义务“,即入口点地址将不会被载入时间才知道。如果一个地址,然后父模块的BIND程序的约束。 BIND是一个程序,通过一个模块的导入表和存储运行的最可能的条目为每个功能点的地址。它为每个函数通过打开这个导入模块,查找的功能,并补充说,功能的失调与该模块的首选基加载地址。在这一个更快的载入时间范围内的结果,如果一个模块的依赖模块实际上是在他们的首选基地加载地址的负载。

--------------------编程问答-------------------- 先参考下dependency waiker的帮助部分,目录"understanding the module session"下面的"Export Function List View"

2,入口地址Entry Point是函数在文件中的原始地址入口,实际在系统把文件映像到内存来执行的时候,要加上文件的基地址,在pe文件结构里面能找到基地址的。

00401014 > . 46014873 dd MSVBVM60._adj_fdiv_m16i ; ASCII "P哙%"
从地址看,文件的加载基地址是401000,我的vb程序也是这样,4010014意思是,这里是一个函数的入口地址,这个函数属于msvbvm60,函数的名字是._adj_fdiv_m16i ,这里.的意思和vb里面的使用对象.属性的时候是一样的

00401122 $- FF25 5C104000 jmp dword ptr [<&MSVBVM60.#100>] ; MSVBVM60.ThunRTMain
跳转到msvbvm60的thunrtmain函数处,也是msvbvm60的输出表里面,序号是100(hex)的函数地址
这个地址就是0004015c,是把FF25 5C104000这个指令后面的数据,按照低字节在前,高字节在后的方式。。。。


004011F1 . 46 6F 72 6D 3>ascii "Form1",0
这里内存放的是个ascii码,不是指令


0040128C 94154000 dd 工程1.00401594
这个不知道了,呵呵,是你的工程1.exe的一个内容,好似这里放的是个指针,指向工程1.00401594,因为94154000 ,按低字节前,高字节后,就是00401594,这个地址是属于工程1映像到内存后的区域的一部分,所以是注释为 工程1.00401594。
--------------------编程问答-------------------- 00401122 $- FF25 5C104000 jmp dword ptr [<&MSVBVM60.#100>] ; MSVBVM60.ThunRTMain
跳转到msvbvm60的thunrtmain函数处,也是msvbvm60的输出表里面,序号是100(hex)的函数地址
这个地址就是0004015c,是把FF25 5C104000这个指令后面的数据,按照低字节在前,高字节在后的方式。。。。


说错了,是跳转到内存0040105c的内容所决定的地址。 --------------------编程问答-------------------- 00401014 > . 46014873 dd MSVBVM60._adj_fdiv_m16i ; ASCII "P哙%"
从地址看,文件的加载基地址是401000,我的vb程序也是这样,4010014意思是,这里是一个函数的入口地址,这个函数属于msvbvm60,函数的名字是._adj_fdiv_m16i ,这里.的意思和vb里面的使用对象.属性的时候是一样的

这句里面的数值好象不对吗, --------------------编程问答-------------------- 00401014 > . 46014873 dd MSVBVM60._adj_fdiv_m16i ; ASCII "P哙%"
问题:(1). 46014873 前面的点号什么作用。(2)此句什么作用,是定义了一个字符串,还是有其他用途  

(1)MSVBVM60是个DLL,点号这个DLL里的_adj_fdiv_m16i函数。
(2)请自行搜索_adj_fdiv_m16i的作用。

00401122 $- FF25 5C104000 jmp dword ptr [<&MSVBVM60.#100>] ; MSVBVM60.ThunRTMain
问题:指令不是顺序存放的吗,此句中 $- FF25 5C104000 的作用是什么,指令 jmp dword ptr [<&MSVBVM60.#100>] 到底存放在内存的什么位置  

没听太懂,FF25 5C104000 就是jmp dword ptr [<&MSVBVM60.#100>]的汇编啊。
放在什么位置?前面的00401122又不是摆设。

004011F1 . 46 6F 72 6D 3>ascii "Form1",0
问题: ascii 是汇编指令吗  

……不是。"Form1"的ascii码是46 6F 72 6D 31,ascii只是工具的提示,不一定准的,就像你第一个问题一样。当然,这里是准的。

0040128C 94154000 dd 工程1.00401594
问题:此句的作用是什么  

鬼知道!不明工程里的不明调用。 --------------------编程问答-------------------- 听说通常用SmartCheck分析VB生成的exe --------------------编程问答--------------------
引用 13 楼 bigtitsinsport 的回复:
00401014 > . 46014873 dd MSVBVM60._adj_fdiv_m16i ; ASCII "P哙%"
从地址看,文件的加载基地址是401000,我的vb程序也是这样,4010014意思是,这里是一个函数的入口地址,这个函数属于msvbvm60,函数的名字是._adj_fdiv_m16i ,这里.的意思和vb里面的使用对象.属性的时候是一样的

这句里面的数值好象不对吗……


46014873 是内存数据,按照低字节前,高字节后显示的,反过了正常就是73480146,就是指向msvbvm60的领空中的_adj_fdiv_m16i,有什么不对的?你看看msvbvm60的导出函数表。。。如果msvbvm60的基地址是73390000,那么_adj_fdiv_m16i的入口就是F0146,看看和你的dependency显示的一样不
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,