首页
社区
课程
招聘
[原创]检测软件被下int3断点
发表于: 2014-12-28 14:42 8791

[原创]检测软件被下int3断点

2014-12-28 14:42
8791

这个方法不是原创的
但是代码是自己写的。。。。
由于是用FASM写的 (我这个输入不了中文....)自己英语水平又不咋地 配合词典看看文档还凑合 自己说就算了。。。前面用有道翻译的。。。
下面上代码
;Here is what I see in hacker defense testing 0xCC software breakpoints
;I write it with FASM assembler
include 'win32ax.inc'
use32
entry start
section '.text' code readable executable
start:
push ebp
mov ebp,esp
mov eax,[fs:30h] ;peb
mov ebx, dword[eax+08h] ;Imagebase
mov dword [imagebassaddress],ebx
mov eax,[eax+0ch]
mov eax,[eax+0ch]
mov ebx, dword [eax+20h] ;sizeofimage
mov dword [sizeofimage],ebx
invoke CreateThread,NULL,NULL,fuckocc,NULL,0,NULL

fucknima:
mov ecx,10
loop fucknima
mov esp,ebp
pop ebp
invoke exit,NULL
fuckocc:
;Function implementation
push ebp
mov ebp,esp
fuckcc_loop:
mov al,0xcc
mov edi,dword [imagebassaddress];get imagebaseaddress
mov ecx,dword [sizeofimage];get imagesize
repne scasb
sub edi,1;get address 0XCC=1BYTE so sub
mov dword [fuckcc],edi ;write 0xcc address to .data
;mov dword [edi],0x90
jmp fuckcc_loop
mov esp,ebp
pop ebp
section '.data' data readable writeable
imagebassaddress dd 00
sizeofimage dd 00
fuckcc dd 00
section '.idata' import data readable
library kernel,'KERNEL32.DLL'
import kernel,CreateThread,'CreateThread',\
       exit,'ExitProcess'   


大神不要笑话


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

收藏
免费 3
支持
分享
最新回复 (12)
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
多谢分享,支持一个。
2014-12-28 14:56
0
雪    币: 350
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
CC就一定是断点吗? *****
2014-12-28 15:05
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
4
虽然不咋地 也没有必要骂人吧。要是我都写出来了 还发上来干嘛
2014-12-28 15:08
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
每次都回复真特么感动
2014-12-28 15:28
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
虽然我还不是很懂这个,但是楼主的贡献还是要鼓励下的,没准过段时间要用上了就得回头看楼主的帖子啦。
2014-12-28 15:32
0
雪    币: 7077
活跃值: (3603)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
7
你这代码写的有问题吧..
fuckcc_loop:
mov al,0xcc
mov edi,dword [imagebassaddress];get imagebassaaddress
mov ecx,dword [sizeofimage];get imagesize
repne scasb
sub edi,1;get address 0XCC=1BYTE so sub
mov dword [fuckcc],edi ;write 0xcc address to .data
;mov dword [edi],0x90
jmp fuckcc_loop

能跳出来么,另外就是2楼说的..
你好歹也弄个解析指令长度的吧,随便找条指令,其中包含0xcc的多了去了.
2014-12-28 15:36
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
8
能跳出来
2014-12-28 15:39
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
9
解析指令长度求思路
2014-12-28 15:43
0
雪    币: 7077
活跃值: (3603)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
10
可以参考udis86里,有个好像是叫ud_decode的函数.
另外,你告诉我怎么跳出来...虽然本人没用过*ASM之类的工具,但好歹也用过OD调试过程序.
看到你那段代码就心生疑惑.百度了下repne scasb指令,它也不具备跳转的功能.
于是顺手找了个exe改了实验下:

到现在还没跑完呢..你告诉我怎么跳出来..
上传的附件:
2014-12-28 15:52
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
11
好像是出了问题。。。。
2014-12-28 15:53
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
12
谢谢  我去看看ud_decode
2014-12-28 15:54
0
雪    币: 443
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
这兄弟说的对,而且那个也是死循环,会一直从开始地址搜索0xCC。

mov al,0xcc
mov edi,dword [imagebassaddress];get imagebaseaddress
mov ecx,dword [sizeofimage];get imagesize
fuckcc_loop:
repne scasb
sub edi,1;get address 0XCC=1BYTE so sub
mov dword [fuckcc],edi ;write 0xcc address to .data
;mov dword [edi],0x90
loop fuckcc_loop
这样就能跳出来了,不过你搜索的只是0xCC字节,0xCC不一定是INT3,它有可能是偏移,常量,或者数据。

以上是我个人理解,有哪里理解的不对的,请指正。
2014-12-28 16:46
0
游客
登录 | 注册 方可回帖
返回