-
-
[分享]VB API调用浅析
-
发表于: 2010-6-1 13:24 3416
-
【文章标题】: VB API调用浅析
【文章作者】: johnsonlyg(菜鸟级)
【软件名称】: 一个VB程序片段
【编写语言】: VB5/6
【使用工具】: PEiD v0.95、OllyICEv1.10
【操作平台】: Windows XP
call 0040260c 函数:
call 0040260c在VB的源程序如下形式
sleep只是一个api例子函数
在本例中是GetPrivateProfileStringA
【文章作者】: johnsonlyg(菜鸟级)
【软件名称】: 一个VB程序片段
【编写语言】: VB5/6
【使用工具】: PEiD v0.95、OllyICEv1.10
【操作平台】: Windows XP
00404261 >push 004027B0 ; UNICODE "C:\WINDOWS\winhelp.ini"
00404266 >push ecx
00404267 >call edi ; <&MSVBVM60.__vbaStrToAnsi>
00404269 >mov edx, dword ptr [ebp-1C]
0040426C >push eax
0040426D >push 100
00404272 >lea eax, dword ptr [ebp-2C]
00404275 >push edx
00404276 >push eax
00404277 >call edi
00404279 >push eax
0040427A >lea ecx, dword ptr [ebp-28]
0040427D >push 004027A8
00404282 >push ecx
00404283 >call edi
00404285 >push eax
00404286 >lea edx, dword ptr [ebp-24]
00404289 >push 00402798 ; UNICODE "text3"
0040428E >push edx
0040428F >call edi
00404291 >push eax
00404292 >lea eax, dword ptr [ebp-20]
00404295 >push 00402788 ; UNICODE "Myapp"
0040429A >push eax
0040429B >call edi
0040429D >push eax
0040429E >call 0040260C ;这个就是调用了API函数,F7进入0040260C
004042A3 >call dword ptr [<&MSVBVM60.__vbaSetSystemError>] ; MSVBVM60.__vbaSetSystemError
004042A9 >mov ecx, dword ptr [ebp-2C]
004042AC >lea edx, dword ptr [ebp-1C]
004042AF >push ecx
004042B0 >push edx
004042B1 >call dword ptr [<&MSVBVM60.__vbaStrToUnicode>] ; MSVBVM60.__vbaStrToUnicode
004042B7 >lea eax, dword ptr [ebp-30]
004042BA >lea ecx, dword ptr [ebp-2C]
004042BD >push eax
004042BE >lea edx, dword ptr [ebp-28]
call 0040260c 函数:
0040260C >mov eax, dword ptr [406350] ;从一个全局变量中复制一个Long型的数值
00402611 >or eax, eax ;测试 eax 的值
00402613 >je short 00402617 ;如果eax的值为 0,跳转到第5行
00402615 >jmp eax;如果eax的值不为0,跳转执行eax所指向的函数地址
00402617 >push 004025F4 ;参数压栈
0040261C >mov eax, <jmp.&MSVBVM60.DllFunctionCall>复制DllFunctionCall的函数地址到 Eax中
00402621 >call eax 执行DllFunctionCall函数
00402623 >jmp eax DllFunctionCall 返回指定的APi函数地址,此句直接跳转执行那个(函数)地址,本例是GetPrivateProfileStringA
call 0040260c在VB的源程序如下形式
private sub Sleep lib "kernel32.dll" alias "SleepA"()
sub test()
sleep 100
end sub
sleep只是一个api例子函数
在本例中是GetPrivateProfileStringA
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
- [下载]猪八戒威客任务助手 3173
- 下断就提示脚本错误 2703
- [分享]VB API调用浅析 3417
看原图
赞赏
雪币:
留言: