|
发表于 2021-5-11 10:01:08
|
显示全部楼层
浙江省杭州市
把要修改的内容和功能保存在一个DLL里面,然后注入到输入法的进程模块中,这样,只要输入法运行,你的功能就始终维持一个运行状态,达到你修改某些东西的目的。 至于系统驱动注入应该就是程序将自身的加载项与驱动的sys文件关联起来。驱动的权限较高,很多驱动程序是工作在ring0层的,驱动的加载要早于操作系统中的安全软件,因为他们是工作在ring3层的。 所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。 编辑本段例: hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允许远程创建线程 PROCESS_VM_OPERATION | //允许远程VM操作 PROCESS_VM_WRITE, //允许远程VM写 FALSE, dwRemoteProcessId ) 由于我们后面需要写入远程进程的内存地址空间并建立远程线程,所以需要申请足够的权限(PROCESS_CREATE_THREAD、VM_OPERATION、VM_WRITE)。 如果进程打不开,以后的操作就别想了。进程打开后,就可以建立远线程了,不过别急,先想想这个远线程的线程函数是什么?我们的目的是注入一个DLL。而且我们知道用LoadLibrary可以加载一个DLL到本进程的地址空间。于是,自然会想到如果可以在目标进程中调用LoadLibrary,不就可以把DLL加载到目标进程的地址空间了吗?对!就是这样。远线程就在这儿用了一次,建立的远线程的线程函数就是LoadLibrary,而参数就是要注入的DLL的文件名。 |
|