好友
阅读权限20
听众
最后登录1970-1-1
|
虚无空幻
发表于 2017-8-31 20:35
本帖最后由 虚无空幻 于 2017-9-2 18:14 编辑
很长时间不玩破解了,由于技术有限,所以以前一直在搞手段,而不是技术...
感觉再不拿出分析,就会彻底忘光了
这里具体的源码就不分享了,野路子就不丢人了
1.反沙盒
很多人分享过,但是那些方法都不咋地.而且兼容性特别的差.
我得出的方法就是 直接获取硬盘硬件序列号. 反正不是vbox 就是vmxxx之类的.基本99.9%的检测出来 哈勃 千里眼 虚拟机全能检测
2.反附加
加壳的反附加其实就是修改ntdll的两个函数.使其退出或者崩溃.你可以附加一个简单程序,在栈区就知道是哪两个函数.
但是附加过猛壳,一般只要还原两个函数的代码就好了.
所以此时可以不停的检测这两个函数是否被还原就好了
3.反加载+反调试
(1)利用加密参数启动自身
(2)启动进程并不退出,而是参与一部分工作.(可以是防破工作)
流程:检测启动参数->解密启动参数并核对(参数信息一般包括自身md5,时间戳等)
我以前想过主线程和防破解线程共同参与一个内存.然后两个进程互相通信.通过各自的时间戳就知道是否正在被调试.
破解者不太可能同时调试两个进程....
4.dll的反调试
我用的内存加载方式,缺点就是兼容性.
5.强退
简单代码:
sub esp, 0xf1f1f1f1
mov eax, 0xF1F1F1F1
jmp eax
或者
mov ebp, 0
mov esp, 0
jmp esp
或者卸载自身NTdll,不太建议退出这块用复杂的代码,调用函数越多越容易被逮到.
可以调用函数,此时用到以下NTDLL防破方法
6.NTDll防破
首先判断系统,我记得只要分开判断 xp win7 和win10 然后是x86和x64 (实际测试可能也就3点不同)
在启动的时候,首先找到最底层的ntdll函数地址(你用到的,比如蓝屏啊,强退,提权等等),然后复制其内存代码,搞块内存给权限.
ntdll防破进化过程
第一代使用的是复制ntdll的运行模块内存
缺陷:如果在底层设置内存访问断点,就会暴露方法
第二代使用读取其他进程内存ntdll的代码
缺陷:WriteProcessMemory下段的人较多,好像还有其他种种原因,后来代码也被我放弃了
第三代使用映射内存
过程听上去简单....首先内存映射系统ntdll.dll,然后遍历出指定函数所在的偏移.然后申请执行内存.复制映射代码过去.执行完填充这块内存(防止被发现)
6.关于几点注意 针对c++
(1)类虽然方便,但是所以数据写在对象里,可能会被一锅端
(2)防破解写在一块,容易被一锅端,单独线程,又容易被线程暂停导致直接失效(而且直接停留在创建线程函数,就可以知道反破解前后位置)
7.程序通讯
上面方法说过,自己启动自己,应该和qq有点像吧. 然后是自己监视自己.两个进程互奸,同生共死
接下来两个进程应该互相通信.通过多种手段通信.来达到不被一锅端
(1)两个程序互相远程读写内存,我用的方法是传入加密启动参数包括自己创建的新内存地址
(2)全局原子
(3)send recv
(4)管道
....
8.如果检测到被调试了,做记录
使用修改和读取文件时间的方法.用的人很少.很少.我没见国内软件用过...
最好改个大多系统自带的文件.尽量不要改自己,你懂得
9.远程执行
也是以前的思路试验过的,但是有了ntdll防破的方法,我就放弃了.不过也可以参考下.
首先是ntdll的函数地址是所有运行程序通用的.那么先定位自身ntdll地址.然后转汇编注入所有远程程序.(比如关机)
缺陷就是权限.xp没问题.win7+的话只有正常的第三方程序可以注入成功. 所以注入所有程序直接关机算了.....
补充: 附一个ZwShutdownSystem强制关机例子.是用上面的ntdll防破来完成的. (没加壳没加密.测试看下效果)
MemoryMap.rar
(168.87 KB, 下载次数: 43)
(试下ZwShutdownSystem下断)
/////因为是启动自己需要加密参数,所以OD无法直接加载打开. 然后又加了防附加. 我自己是想不出有什么办法可以调试. 只能一步步的去研究怎么解密过程之类的.难度应该非常大
还有很多细节,和方法.具体就不写了.主要的就这些吧.忘了不少...
|
免费评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 鱼木收集|主题: 2525, 订阅: 2706
- · 学习及教程|主题: 1126, 订阅: 1118
- · 教程类|主题: 265, 订阅: 43
|