能力值:
( LV5,RANK:70 )
|
-
-
2 楼
动态获取函数地址,放入变量中,其他没什么
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
获取缓存文件,获取Temp文件,启用user
不是通过上面加载的DLL获取的吗
|
能力值:
( LV12,RANK:300 )
|
-
-
4 楼
呃,锈剑……
这只是使用LoadLibraryEx和GetProcAddress获取所需要的API函数,保存函数地址,以便随后进行调用。
也就是说调用这些获取得到的API的代码才是真正实现功能的。
另外CreateProcessAsUserA不是“启用user”,而是以某个用户的身份和权限启动进程。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
10001B54 |. 6A 00 push 0 ; /Flags = 0 10001B56 |. 6A 00 push 0 ; |hFile = NULL 10001B58 |. 68 D8310010 push as.100031D8 ; |FileName = "Wininet.dll" 10001B5D |. FF15 78300010 call dword ptr ds:[<&KERNEL32.LoadLibrar>; \LoadLibraryExA 10001B63 |. 8945 F8 mov [local.2],eax 10001B66 |. 68 E4310010 push as.100031E4 ; /ProcNameOrOrdinal = "GetEntryInfoUrlCacheA" 10001B6B |. FF75 F8 push [local.2] ; |hModule = "Wininet.dll" 10001B6E |. FF15 3C300010 call dword ptr ds:[<&KERNEL32.GetProcAdd>; \GetProcAddress
比如这APILoadLibraryExA是加载wininet.dll吧,然后通过调用
GetProcAddress来获取wininet.dll输出库函数地址
那么GetEntryInfoUrlCacheA是不是要调用wininet
其实想问下是这个意思,小聪
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
LoadLibraryEx和GetProcAddress
其实就是对DLL的加载和调用,我是这么理解的,不知道对否
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
10001B54 6A 00 push 0
10001B56 6A 00 push 0
10001B58 68 D8310010 push as.100031D8 ; |FileName=Wininet.dll"
10001B5D FF15 78300010 call dword ptr ds:[<&KERNEL32.LoadLibrar>; kernel32.LoadLibraryExA
10001B63 8945 F8 mov dword ptr ss:[ebp-8],eax
10001B66 68 E4310010 push as.100031E4 ; ASCII "GetUrlCacheEntryInfoA"
10001B6B FF75 F8 push dword ptr ss:[ebp-8]
10001B6E FF15 3C300010 call dword ptr ds:[<&KERNEL32.GetProcAdd>; kernel32.GetProcAddress;获得"GetUrlCacheEntryInfoA"函数的地址,返回值在eax中
10001B74 A3 04620010 mov dword ptr ds:[10006204],eax;保存"GetUrlCacheEntryInfoA"函数的地址在[10006204]里以便以后调用,
例如以后要调用GetUrlCacheEntryInfoA"函数可以这详
push 参数3
push 参数2
push 参数1
call [10006204];
回5楼 GetEntryInfoUrlCacheA不是要调用wininet
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
10001B66 |. 68 E4310010 push as.100031E4 ; /ProcNameOrOrdinal = "push as"
10001B6B |. FF75 F8 push [local.2] ; |hModule = "Wininet.dll"
10001B6E |. FF15 3C300010 call dword ptr ds:[<&KERNEL32.GetProcAdd>; \
在VC中
FARPROC GetProcAddress(
HMODULE hModule, // DLL模块句柄
LPCSTR lpProcName // 函数名
);
getprocaddress中
这个应该是掉用dll模块
原来是分开的压栈操作
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
不是调用,LoadLibrary是把dll加载进内存(用完后还要把它从内存中释放),加载进内存后才能有获得函数地址
GetProcAddress是获得函数在内存中的地址即指针,之后就可以用这个指针来调用该函数
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
谢谢楼上几位,知道了
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
俺也来学习下了
|
|
|