Coder Jozu
I believe --- 这里坚持原创,拒绝转贴
VC知识库BLOG
::
首页
::
新随笔
::
联系
::
聚合
::
登录
::
13 随笔 :: 4 文章 :: 87 评论 :: 1 Trackbacks
<
2008年11月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
留言簿(4)
给我留言
查看公开留言
查看私人留言
随笔分类
乱七八糟 (12)
(rss)
随笔档案
2005年5月 (1)
2005年3月 (4)
2005年1月 (5)
2004年12月 (1)
2004年10月 (2)
文章分类
研究心得 (3)
(rss)
代码分析 (1)
(rss)
文章档案
2004年10月 (4)
东接西链
搜索
最新评论
1. re: Run before CRT
Nice Job!
--布伦特原油
2. re: Run before CRT
这也叫好文章?有尾没头,不知道在干啥,或许有点用,可惜我不想看,
--kemin
3. re: 装载一个exe,并且执行
hao,好好好
--gxk
4. re: Delete myself (exe file version)
// Delself.cpp: 删除正在运行的程序
这个注解应该改一下,不是“删除正在运行的程序”,是“推出后删除自己身”
--UMU
5. re: Delete myself (exe file version)
不用测试就知道是进程退出后才删除的,虽然用了 SHChangeNotify 来欺骗人民群众
--UMU
6. re: 备忘一下
Pls.
send me the details about the size of the structure in bytes.
Also I need the size of individual elements of the struct.
I am trying the same code in c#and for marshalling I need proper sizes.
--vaibhav.gaikwad@gmail.com
7. re: Run before CRT
绝对的强人!
向你学习ing
--dabang
8. re: 利用socket进行命令行进程的重定向
这样做有意义吗
--无
9. re: 发现一个好API,奇怪的是M$怎么就是不公开呢
是够奇怪的,调用之后,好象什么作用不起,老大这个东东到底是干什么的啊!
--brodbus
10. re: Super administrator
为什么编译的时候总是说SE_TCB_NAME是char[15]啊??
--brodbus
阅读排行榜
1. 利用socket进行命令行进程的重定向(5990)
2. 简单的debugview(5244)
3. 发现一个好API,奇怪的是M$怎么就是不公开呢(5127)
4. 装载一个exe,并且执行(4949)
5. 备忘一下(4387)
6. Super administrator(4358)
7. NB代码,赶紧记下来(4274)
8. 监视一个指定进程是不是启动(4133)
9. 大牛也犯错误啊(3678)
10. 七猫,给你个参考,评论上放不下,就当随笔吧(3165)
评论排行榜
1. 简单的debugview(19)
2. NB代码,赶紧记下来(12)
3. 装载一个exe,并且执行(10)
4. windows命令行的一个未公开的小tip(10)
5. 监视一个指定进程是不是启动(10)
6. 备忘一下(8)
7. 新增一篇代码,用来删除自己程序的。(6)
8. 七猫,给你个参考,评论上放不下,就当随笔吧(6)
9. 大牛也犯错误啊(6)
10. 发现一个好API,奇怪的是M$怎么就是不公开呢(6)
NB代码,赶紧记下来
定位自己:
__asm {
fldz
fnstenv byte ptr [esp-0ch]
pop ebx
}
防止出现0x00的相对偏移跳转:
push 0FFFFFFEBh
JMPOUT $-4
db NEXT - JMPOUT - 1
call JMPOUT
jmp end
NEXT:
.......
end:
posted on 2005-03-10 16:49 Coder Jozu 阅读(4274)
评论(12)
编辑
收藏
评论
#
看不懂@@
2005-03-10 22:49
ksl
如题
#
定位自己
2005-03-11 10:08
周星星
__declspec(naked) void* me() // 我的方法,比较传统
{
__asm {
mov eax, [esp]
sub eax, 5
ret;
}
}
int main( int x )
{
void* p1;
__asm { // 仍然是你的方法,但修改了一点点
fldz
fnstenv byte ptr [esp-1ch]
mov eax, [esp-10h]
mov p1, eax
}
void* p2 = me();
return 0;
}
#
防止出现0x00的相对偏移跳转
2005-03-11 10:31
周星星
实在看不懂,从 -4-1 来看,似乎想构造一个CALL/JMP的跳转指令,而且 push 0FFFFFFEBh 中的 EB 是 CALL/JMP指令 的头,有大嫌疑,不过连在一起还是毫无头绪。
#
re: NB代码,赶紧记下来
2005-03-11 10:40
Jozu
me()这种方法是最长用于病毒体定位自己的,等同于这个:
begin:
call next
next:
pop ebp
sub ebp, next-begin
这时ebp就是begin的位置,这个方法有个致命缺点就是指令中含有0,对于远程堆栈缓冲区溢出攻击来说是不能用的,所以采用这个方法。
#
re: NB代码,赶紧记下来
2005-03-11 11:02
Jozu
这里有个很酷的技巧,再看一次:
push 0FFFFFFEBh
JMPOUT $-4
db NEXT - JMPOUT - 1
call JMPOUT
jmp end
NEXT:
.......
end:
在call jmpout的时候,jmp end指令的位置已经放入了堆栈,也就是说我可以在这里放数据,字符串,等等。最关键的是这些数据里没有一个0,做一个
push 0FFFFFFEBh
JMPOUT $-4
db NEXT - JMPOUT - 1
相当于作了一个jmp NEXT,然而下面的call的相对便宜位置变成了负数。
#
to Jozu:
2005-03-11 15:08
周星星
你数次提到“指令中含有0”“数据里没有一个0”,请问为什么指令中含有0了就不能进行缓冲区溢出攻击?
#
首先还是要对栈溢出有一个大概的了解
2005-03-11 16:02
Jozu
void foo(char* src)
{
char buff[any_length];
strcpy(buff, src); // 这里是一个典型的缓冲溢出
}
攻击代码就写在src里面,那么如果攻击代码里面含有0,strcpy就不能把你的攻击代码完全拷贝下来。
#
re: NB代码,赶紧记下来
2005-03-11 16:42
紫水晶
一头雾水~
#
re: NB代码,赶紧记下来
2005-03-11 18:13
问题男
好文,但似乎有个小问题,不过我想多半应该是我没有完全领悟,还请指教
前一段代码重点是第二条语句fnstenv,获取fpu的当前状态,其中在32为保护模式下,第3个(从第0个开始)dword就是上一条“FPU Instruction Pointer Offset”。前面一条指令还可以用很多浮点指令替代
第二段楼主已解释了
push 0FFFFFFEBh机器码是
68 EBFFFFFF
此条指令后的$ - 4指向eb这个字节,给与标号JMPOUT,并初始化为NEXT - JMPOUT - 1,我的不解就在这里,不应该替换eb把?源代码是否应改成:
push 0FFFFFFEBh
JMPOUT $-3
db NEXT - JMPOUT - 1
call JMPOUT
jmp end
NEXT:
.......
end:
应该是$-3才能使JMPOUT指向eb的下一个字节(要替换的应该是这个才对吧),构造eb xx,组成jmp next的效果吧?
还请不吝赐教
#
re: NB代码,赶紧记下来
2005-03-11 18:29
问题男
是这样:
push 0FFFFFFEBh
JMPOUT $-4
db 0ebh
db NEXT - JMPOUT - 1
call JMPOUT
jmp end
NEXT:
.......
end:
#
re: NB代码,赶紧记下来
2005-03-11 18:40
问题男
就相当于:
__asm
{
_emit 0x68;
JMPOUT:
_emit 0xeb;
_emit 0x09; // 修正为 NEXT - JMPOUT - 2
_emit 0xff;
_emit 0xff;
call JMPOUT;
jmp end
NEXT:
xor eax, 0;
END:
}
#
re: NB代码,赶紧记下来
2005-12-21 19:08
Ghostex
根据通常的溢出攻击原理,如果有零,目标程序就会认为想要收取的数据到此结束,所以在此之后的代码是无法进入目标程序的。而一段不完整的代码是肯定得不到预期结果的。
个是陋见,还请指教 :)
标题
姓名
主页
验证码
*
内容
Remember Me?
登录
使用高级评论
Top
[使用Ctrl+Enter键可以直接提交]
Powered by:
Copyright © Coder Jozu