打开文件的办法
CHAR lpExeFilename[MAX_PATH] = ""
HINSTANCE hInstance = GetModuleHandle(NULL)
GetModuleFileName(hInstance, lpExeFilename, MAX_PATH)
HANDLE hFile = CreateFile(lpExeFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTES_NORMAL, NULL)
//todo:判断是否打开成功
CHAR lpBuffer[100]
ReadFile(hFile, ...)
//todo:处理固定偏移
CloseHandle(hFile)
以上是比较稳妥的办法 事实上如果对于进程的创建有一定理解的话
就应该知道GetModuleHandle(NULL)调用返回的就是进程文件加载到内存的地址了
完全可以这样得到首地址:
LPCSTR lpcBuffer = (LPCSTR)GetModuleHandle(NULL)
然后lpcBuffer[1] 就是你说的0x000000001了
手头没有调试器 个别地方可能有笔误 见谅
一、需要的API函数分步阅读1
/2
LoadLibrary函数的声明如下,它只有一个参数,指明要加载的动态库。
2
/2
GetProcAddress函数的声明如下,它有两个参数,一个是LoadLibrary函数返回的模块句柄,一个是要获取的函数名称。
二、动态加载动态库的实例
1
/7
这里以user32.dll中的MessageBox函数为例,开发环境使用vs2017。首先点击“文件”——“新建”——“项目”建立一个win32控制台程序。
2
/7
正常的使用MessageBox代码如下,直接调用即可。
//vs2017中的代码
#include <tchar.h>
#include <windows.h>
int main(){
MessageBox(0, _T("hello world!"), _T("MessageBox"), MB_OK)
return 0
}
3
/7
如果使用动态加载,则需要首先用LoadLibrary函数加载user32.dll。
4
/7
然后定义一个函数指针类型,用定义的函数指针类型定义函数指针。用于保存GetProcAddress()获取的MessageBox函数地址。
5
/7
然后通过GetProcAddress()获取其函数地址。
6
/7
最后通过函数指针调用MessageBox()函数即可。
这又是流氓网页删除开机运行的网页:
用Msconfig来屏蔽,但注册表还是残留它的,建议用注册表编辑器
进入注册表编辑器(开始—运行—输入regedit—回车)
逐项进入分支:
HKEY_CURRENT_USER
-Software
--Microsoft
---Windows
----CurrentVersion
-----Run
看Run里面(右侧窗口里)有没有这个网页,(我的经验,键值一般是%system%什么什么的)有就删除
另外在HKEY_LOCAL_MACHINE的相同分支下,也有Run,必须也要看看!
恢复被修改的网页:
使用注册表吧,点开始--运行--输入regedit--回车
依次打开:
HKEY_CURRENT_USER
--SOFTWARE
----Microsoft
------Internet Explorer
--------Main
里面,你能看到许多地址,里面肯定有你要去掉的那个烦人的URL
你可以将它改成默认的空白页
例如:
双击Start Page,将值改为你所要设置的网站或者空白页
空白页可以用:%SystemRoot%\system32\blank.htm
或者about:blank
另外,在HKEY_LOCAL_MACHINE里的相同子路径下,也有这个Main
也要修改的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)