VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 25080|回复: 29

发一个反调试(源码在7楼)

[复制链接]
 楼主| 发表于 2011-6-15 13:34:38 | 显示全部楼层 |阅读模式
本帖最后由 eaaca1234 于 2011-6-18 20:07 编辑

这几天无聊用VB写反调试,现将程序BIN发上来,看看有谁能破解出源码,为了防止有人用反编译工具反编译,特意加上一个垃圾壳,过几天再发源码和原理。
调试器检测.rar (2.8 KB, 下载次数: 1224)

点评

不给你关机权限  发表于 2011-6-17 15:47
自杀直接NtRaiseHardError……(BSOD)  发表于 2011-6-17 13:25
自杀还不容易,胡乱写一堆跳转+死循环,然后胡乱WaitForSingleObject一下,就锁死了……话说锁死了之后是不是连调试器也没有反应了?  发表于 2011-6-17 13:23
发现调试容易,自杀难啊,这个自杀设计的不太好  发表于 2011-6-17 13:02
今天再仔细看了下 貌似是JunkShal壳 vb写的壳  发表于 2011-6-17 12:42

本帖被以下淘专辑推荐:

发表于 2011-6-16 12:16:04 | 显示全部楼层
强度还可以
能发现od
不过貌似加插件就不行了

点评

源码在7楼  发表于 2011-6-18 19:40
那么你可不可以破解出程序调用的API?  发表于 2011-6-16 12:51
回复 支持 反对

使用道具 举报

发表于 2011-6-16 22:18:56 | 显示全部楼层
本帖最后由 eaaca1234 于 2011-6-16 22:25 编辑

好复杂啊,随便看了下
nt系列
NtQueryInformationProcess
NtSetInformationDebugObject
NtRemoveProcessDebug
NtSetInformationThread
NtQuerySystemTime
NtTerminateProcess
普通的:
OutputDebugString
你加的是什么壳呀?
自己写的?

点评

JunkShal  发表于 2011-6-17 12:40
NtSetInformationDebugObject ‘ 设置属性的调试对象 NtRemoveProcessDebug ’停止调试指定的进程 NtSetInformationThread ‘禁止线程产生调试事件 NtQuerySystemTime ‘对比时间的  发表于 2011-6-16 22:31
手工处理呼?  发表于 2011-6-16 22:26
输入表的处理太诡异了  发表于 2011-6-16 22:25

评分

参与人数 1威望 +2 收起 理由
h907308901 + 2 不错,都对了

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-6-17 12:42:06 | 显示全部楼层
回复 eaaca1234 的帖子

这个壳不知是哪搜的……反正是VB写的,源码如下:
exe加壳源码.rar (9.13 KB, 下载次数: 761)

点评

这些反调试api都是好东西啊,都是未导出的。开源吧,开源就立刻加精  发表于 2011-6-18 19:28
不会是坛子上面那个用VB写的壳吧……  发表于 2011-6-17 13:22
果然是 JunkShal 壳 看第一眼还以为没壳呢  发表于 2011-6-17 12:48
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-6-17 12:47:21 | 显示全部楼层
那个NtRemoveProcessDebug使用时可能存在问题,因为可能存在残余的调试事件,比如EFL中的DF标志(触发单步事件),INT3断点,硬件断点,内存断点等等,一旦触发就会因为没有调试器接受事件导致进程结束
回复 支持 反对

使用道具 举报

发表于 2011-6-17 12:53:03 | 显示全部楼层
回复 h907308901 的帖子

话说这个壳真的好白痴也
XOR BYTE PTR DS:[EBX+EAX],0B8
INC EAX
CMP EAX,-252
JNZ SHORT 00401A9C
这个解密代码太明显了

点评

不是压缩壳么?加密壳?  发表于 2011-7-22 18:10
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-6-18 19:38:24 | 显示全部楼层
应版主要求,那么就开源吧,反正原理已经被破解出来了,但是还是加上一点权限
调试器检测.rar (4.55 KB, 下载次数: 86)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-6-18 19:44:02 | 显示全部楼层
顺便做一点解释,首先NtQuerySystemTime和NtQueryInformationProcess比较时间,然后调试字串,接着NtSetInformationThread传入ThreadHideFromDebugger,最后是取得进程调试对象,NtSetInformationDebugObject取消其KillOnExit属性,再NtRemoveProcessDebug结束调试

点评

动态+内联汇编调用这些api更爽些,一个是看不到api另一个是不会被去掉  发表于 2011-6-18 20:11
回复 支持 反对

使用道具 举报

发表于 2011-6-18 20:33:57 | 显示全部楼层
回复 h907308901 的帖子

忽然想到一个保护关键算法的好办法
for i=0 to 10000000000
hProcess = FcOpenProcess&(i)
NtSuspendProcess hProcess
next
if text1 = 100 then 。。。
。。。
for i = 0 to 10000000000
hProcess = FcOpenProcess&(i)
    NtResumeProcess hProcess
Next
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-6-18 20:39:11 | 显示全部楼层
回复 eaaca1234 的帖子

我以前发现WriteProcessMemory写到pid 4(system)进程的0x10000地址会导致整个系统乱码,这样会怎么样?

点评

数学家那个想法好邪恶阿,可以做文件劫持 而且很难被发现 。除非做inline hook检测  发表于 2011-7-22 18:13
我在SYSTEM进程的0x10000里貌似只看到一堆ASCII码,其他什么也没发现……  发表于 2011-6-21 12:42
如果把pid 4(system)0x10000地址环境变量列表的PATH改掉会怎么样?会不会所有进程的PATH都会变啊?这样就可以搞一个PATH劫持……  发表于 2011-6-20 13:39
我XP下FcOpenProcess直接获得……  发表于 2011-6-20 12:38
r3搞不到system的句柄。。。  发表于 2011-6-19 18:13
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2023-4-2 06:52

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表