好友
阅读权限10
听众
最后登录1970-1-1
|
VxKex NEXT 基于vxiiduu VxKex开发,原本只支持Windows7,最近添加了Windows8、8.1的正式支持。本人作为主开发者,解决了逐步兼容新版Windows过程中的大量困难。
首先是安装程序的兼容。vxiiduu VxKex使用了一个未文档化的ntdll Ldr API读取注册表,而不同版本的Windows下此函数签名都不一样,按照Win7的方式在Win8上调用绝对会出现非法访问。解决方案为使用文档化的Nt API并手动释放句柄。
然后是SYSCALL的问题。vxiiduu VxKex只兼容Win7,直接硬编码了所有的系统调用号,那么换一个Windows版本肯定报错。解决方案为从磁盘上的ntdll文件手动提取调用号。有一个例外,即NtQuerySystemTime,在64位系统下这个函数在ntdll内部并不调用SYSCALL,而是返回内部地址一个变量的值,这里做一个手脚,将获取到的SSN减1即可,因为下一个函数才有SYSCALL指令。
接着是绕过CreateProcessInternalW版本检查的代码,Win7上这个逻辑在kernel32.dll,Win8以上改成了kernelbase.dll里面,这里直接匹配系统版本并改写目标dll的内存即可。
还有子进程传播的问题。Win8 Wow64下原生64位的ntdll.dll加载在64位空间,32位进程创建64位子进程时需要写入子进程的64位空间内存,需要用到天堂之门。
其他技术问题,还有很多很多,这里只列举主要的问题,最后劝一句,写代码的时候不要写得太死,就是要抽象化,像硬编码这种能少用就少用,否则后期加功能会非常麻烦。 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|