首页
社区
课程
招聘
[原创]初学菜鸟做的应用层保护库
发表于: 2011-8-10 15:26 5724

[原创]初学菜鸟做的应用层保护库

2011-8-10 15:26
5724
各位大牛,本菜鸟初学安全编程,自己做了一个小小的应用层保护库,希望各位给点建议和帮助,程序是一个简单的socket本地通信,里面做了相关的小保护,希望大牛们能通过反汇编能给出菜鸟本人我保护的缺陷与不足(其中防护了send和recv两个socket函数<看你可否对这两个函数尝试R3的inline hook与iat hook得到数据>,这两个函数调用了两次处理<调用之前都被inline hook过了^-^,因为只做测试用>,最后一次为去掉防护后调用,可以看到send的在DebugView下的inline hook打印,但由于防护的模式的不同recv没有打印出信息,那是因为recv到那被解除防护的时候已经被自动修复了^-^,如果你能Hook住这两函数并打印出一次send数据是不成功的^-^<前面以说明>,所以需要打印出两次数据才算绕过防护,而且该技术可用于防护内核函数^-^,非验效原理,未加密),在此先谢谢大家!

创新防护,欢迎回馈...                                                                              联系方式: QQ:40740865@qq.com

socket_test.zip

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 862
活跃值: (329)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
2
沙发,不知道有谁会反汇编看看,自己暂时没空练练手。。。。本人菜鸟一个
2011-8-14 20:22
0
雪    币: 428
活跃值: (293)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
晕,还加UPX....
2011-8-16 12:56
0
雪    币: 235
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
加个压缩壳不一定是为了保护什么,也可以是效率什么,先谢谢你们了!
2011-8-17 00:03
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
在做保护之前,请先确保你自己的程序能在所有windows系统下面运行。XP确实可以,但是2K就不能运行,因为它的send的开头不是
mov edi, edi
push ebp
mov ebp, esp
而你的程序貌似认定程序入口必定如此,于是2k就GameOver了,其他Vista和Win7我没有测试过。
2011-8-18 11:08
0
雪    币: 235
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢您的反馈!菜鸟本人经验不足,测试没有考虑版本问题,对于保护库的调用约定是可变的,由于本人常在XP上工作,可能send和recv的调用约定已是__stdcall,Win2000很少接触,也许它的调用约定是__cdecl,至于inline hook 是会做判断处理的(错误应该不会出现在我测试的Hook上),所以我想您的错误应该是出栈的错误,这个问题只要做代码的时候判断下操作系统版本,然后根据不同的版本给出库保护它们的调用约定就不会出现错误了,因为本人没做任何系统版本处理,还有关于库保护通用性问题,我没有做任何固定设置,都是设计者自己设置或选择自动设置,库调用属性初始化为__stdcall约定,见笑了,再次感谢您回馈!
2011-8-18 11:34
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
调用约定是不可能改变的,都是stdcall,我跟踪了下2k出错的原因是,第一次调用send的那个0x00401C38的call eax,其eax是0,于是出错。而且就算XP下面在你的dll加载前,先修改了send的入口代码,比如改成push xxxx+ret这种地址无关的跳转代码,在你Hook以后,你的0x00401CB2这处代码依然是mov edi, edi+push ebp的那种,而0x00401CB2不会是临时计算生成的代码,也就是说你已经认定入口必定是这个样子,才会这么做。这在不同版本的操作系统中是得不到保证的。
2011-8-18 13:01
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
你另一处HOOK生成的代码,前八个字节的内容也是固定的,只是后面有部分是复制过来的,同样也是依赖特定的操作系统。
2011-8-18 13:14
0
雪    币: 235
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
额。。。我确实没有固定任何值,值都是根据我设定的大小自动获取的,不过你说的错误我听懂了一点,关于push,ret的跳转特征在我这里最新的版本里面已经更新了,上传的测试版本有待更新呢,至于您说的eax是0的错误问题比较含糊呢,关于核心方面的东西可以以消息的方式发给我,有需要的话我可以提供库调用的相关代码,你看后就明白了,可能我理解能力有问题,还谢谢您的反馈!

哦,是的,我那两个inline hook确实固定了ASM,你我看这脑袋把问题老看到库里面去了,谢谢了
2011-8-18 15:40
0
游客
登录 | 注册 方可回帖
返回
//