首页
社区
课程
招聘
[分享]yoda's protector脱壳思路
发表于: 2017-12-17 19:29 14619

[分享]yoda's protector脱壳思路

2017-12-17 19:29
14619

yoda's protector主要有两个需要注意的反调试保护:阻塞设备输入和枚举进程pid并终止调试器

yoda 使用 user32.dll中的BlockInput来屏蔽所有的输入设备的消息,比如鼠标键盘。当设备被屏蔽时你无法进行任何操作,只有阻塞设备的线程或进程可以使用相同的API填入不同的参数来解锁它


yoda protector会在使用api阻塞设备后转向脱壳/解密的进程并执行一些反调试的技巧,在脱壳结束并且所有检查通过时,yoda才会解锁设备。

一个非常简单的方法可以解除阻塞,那就是patch掉BlockInput,让它什么都不做就返回。


当我们用od载入unpackme,我们可以看到内存中只载入了两个dll


为了patch掉BlockInput,我们需要让user32.dll载入内存,在od选项中我们设置断在新的dll上


然后我们继续F9,让user32.dll导入到内存


随后我们就可以取消掉之前断在新dll的选项,然后跳到BlockInput的入口代码处



BlockInput的api就是上图的灰色代码,retn 4就是结尾,我们只需要将所有这些代码填充为nop就行


这样,api就不会进行任何操作,我们的输入设备也不会被阻塞


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

上传的附件:
收藏
免费 2
支持
分享
最新回复 (3)
雪    币: 9802
活跃值: (6258)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jgs
2
谢谢楼主分享,学习了一种思路。
2017-12-18 08:40
0
雪    币: 7790
活跃值: (5202)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享,  不错的思路!!!
2017-12-18 08:50
0
雪    币: 5
活跃值: (208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
在00413F79处的00404000就是我们的OEP了
不明白,感觉这俩不是一个地址呢
2018-4-11 22:10
0
游客
登录 | 注册 方可回帖
返回