很多人觉得栈溢出,shellcode很神奇,今天早上在看一篇践踏堆栈的文章,虽然原理很简单,但是我缺费了很大的力气才搞定,来看看吧 :)
这是代码(原来的例子稍微有所不同):
/* exam3.c*/
void function(int a, int b, int c) {
char buffer1[5];
char buffer2[10];
int *ret;
ret = buffer1 + 12; /*注意,不同的平台,这里是不一样的 */
(*ret) += 8; /* 这里也是,不同的平台,不同的编辑器,可能产生的结果也不一样*/
}...
- [chervy] 我还是初学汇编的。 我学着弄了一遍,接下来怎么弄呢?谢谢。 09/17 17:24
- [ghi] 先收藏了 以后再看 哈哈 好东西都得看见就收藏了 07/02 22:06
- [wuerlang] 我也收藏. 也许用来研究学习汇编的时候有用. 至于研究病毒,倒不觉得有什么兴趣. 12/25 17:24
- [happy] 学习了! 10/22 20:19
- [happy] 厉害! 10/22 20:07
- [happy] 不错,支持一下 10/22 20:05
- [goal00001111] 很不错,收藏了。 10/21 12:51
- [dreamhk] 博主可否把病毒文件加密码virus压缩发送到 rar.virus@gmail.com 谢谢,我没有 10/20 21:27
- [jyycool] 呵呵,不错强啊,我还不行,我想最多半个月,我就可以看的懂了 10/20 19:48
[2007-10-23 21:04] 关于堆栈
阅读全文 |
评论次数(0) |
浏览次数(918) |
所属类型(默认类型)
[2007-10-22 16:30] miniprintf
写了半个晚上,终于写出来了, 理解printf函数, 你需要知道一个程序的堆栈是如何分布的, 以前看别人写, 现在我也有信心写自己的printf,虽然功能很弱,但是已经够我用了, 不过我还没加%d的处理, 有空再加吧, 写完这个我不得不提醒自己:注意你的堆栈!!!
采用的是 __cdecl 调用方式
assume cs:code, ds:data, ss:stack
stack segment
dw 100H dup (0)
stack ends
data segment
msg db "this is a %s, caracter %c %c %c...
采用的是 __cdecl 调用方式
assume cs:code, ds:data, ss:stack
stack segment
dw 100H dup (0)
stack ends
data segment
msg db "this is a %s, caracter %c %c %c...
阅读全文 |
评论次数(1) |
浏览次数(948) |
所属类型(默认类型)
[2007-10-22 16:28] 反汇编举例
反汇编主要用于反汇编高级语言, 而高级语言的结构是造成反汇编困难的很重要的因素,这段时间我一直在反汇编一些基础的C的程序, 发现很多有意思的东西,在此用一个简单的C语言的代码说说高级语言的结构和编辑器如何优化了我们感觉很熟悉的代码,开始吧 :)
代码如下, 这是一个关于杨辉三角的程序, 我会一点一点的剖析它:
//这其实是反汇编以后的版本, 源代码不是我写的。。。
#include <stdio.h>
int main()
{
int i, j;
int a[12][12];
for (i=0; i<12; i++){
...
代码如下, 这是一个关于杨辉三角的程序, 我会一点一点的剖析它:
//这其实是反汇编以后的版本, 源代码不是我写的。。。
#include <stdio.h>
int main()
{
int i, j;
int a[12][12];
for (i=0; i<12; i++){
...
阅读全文 |
评论次数(0) |
浏览次数(1073) |
所属类型(默认类型)
[2007-10-22 16:27] 2个内存驻留程序
内存驻留一般用于病毒等, 在dos下, 他们被激活的方式一般是使用截获中断, 弄了好几天参考别的程序, 我写了自己的一个内存驻留, 说简单也简单, 可我知道, 里面还有不少我要弄清楚的。
assume cs:code
code segment
org 100H
start:
jmp init
INT9H dd ?
TSR:
push ax ; 保存所有用到的寄存器
push es
push di
push cx
mov ax, 0b800H
mov es, ax ...
assume cs:code
code segment
org 100H
start:
jmp init
INT9H dd ?
TSR:
push ax ; 保存所有用到的寄存器
push es
push di
push cx
mov ax, 0b800H
mov es, ax ...
阅读全文 |
评论次数(1) |
浏览次数(1282) |
所属类型(默认类型)
[2007-10-22 16:26] 关于PSP
程序的PSP可能有些地方写的不是很清楚,同时有些朋友也不明白为什么COM文件要偏移100H,再这里说明下。
PSP并不是文件里存在的段,而是在程序被装载进内存以后,操作系统建立的一个区域,这个区域包含了很多有用的信息,其中我们感兴趣的比如参数的传递,以下是 关于COM文件的。。。
.COM文件包含程序的一个绝对映象----就是说,为了运行程序准确的
处理器指令和内存中的数据,MS-DOS通过直接把该映象从文件拷贝到内存
而加载.COM程序;它不作任何改变.
为加载一个.COM程序,MS-DOS首先试图分配内存,因为.COM程序必须
位于...
PSP并不是文件里存在的段,而是在程序被装载进内存以后,操作系统建立的一个区域,这个区域包含了很多有用的信息,其中我们感兴趣的比如参数的传递,以下是 关于COM文件的。。。
.COM文件包含程序的一个绝对映象----就是说,为了运行程序准确的
处理器指令和内存中的数据,MS-DOS通过直接把该映象从文件拷贝到内存
而加载.COM程序;它不作任何改变.
为加载一个.COM程序,MS-DOS首先试图分配内存,因为.COM程序必须
位于...
阅读全文 |
评论次数(1) |
浏览次数(1322) |
所属类型(默认类型)
[2007-10-20 19:09] 一个感染 com 的病毒
日久见人心,才没几天。。。偶手又痒了。。。。。在看完一个感染com文件的病毒激动万分的时候,偶决定要为这个“病毒”写点东西,也算对得起它吧,估计又该有某某大叫头疼了,但思路却是相同的,每个人,每件事,对么? 好了开始。。。。
介绍下这个病毒的结构,这个病毒是感染com文件的(古老的一种文件格式,但是很简单),由于是实模式下的,所以我们就可以添删com而不用担心别的事情,程序有感染的代码,有破坏的代码,因为没有自动查找的代码程序暂时只能感染test.com这个co并删除del.txt这个文件,但有点不爽的是这个程序没有判断是否已经感染,结果就造成重复感染,有兴趣的可以加上这...
介绍下这个病毒的结构,这个病毒是感染com文件的(古老的一种文件格式,但是很简单),由于是实模式下的,所以我们就可以添删com而不用担心别的事情,程序有感染的代码,有破坏的代码,因为没有自动查找的代码程序暂时只能感染test.com这个co并删除del.txt这个文件,但有点不爽的是这个程序没有判断是否已经感染,结果就造成重复感染,有兴趣的可以加上这...
阅读全文 |
评论次数(6) |
浏览次数(2471) |
所属类型(默认类型)
[2007-10-20 19:07] 你尽力了么?
以此纪念 W.Richard Stevens 并自勉
自己都觉得这里的水平底的一塌糊涂,当然也包括我自己了,所以我经常也要
跑到whnet去问问题,有时候都恨自己怎么这么菜啊。
scz(四哥)说:BBS是不能真正学到东西的,
不过这里能开阔人的视野,能得到对大方向的指引,能够了 。
是的,真的是足够了,要不是scz的指引,我不会走这条路的,当时在gznet的BBS
上,我也问了好多关于unix network programming的问题,得到好多人的帮助。
后来转而学习linux kernel,来到了whnet,主要就是得到scz的帮助,...
自己都觉得这里的水平底的一塌糊涂,当然也包括我自己了,所以我经常也要
跑到whnet去问问题,有时候都恨自己怎么这么菜啊。
scz(四哥)说:BBS是不能真正学到东西的,
不过这里能开阔人的视野,能得到对大方向的指引,能够了 。
是的,真的是足够了,要不是scz的指引,我不会走这条路的,当时在gznet的BBS
上,我也问了好多关于unix network programming的问题,得到好多人的帮助。
后来转而学习linux kernel,来到了whnet,主要就是得到scz的帮助,...
阅读全文 |
评论次数(0) |
浏览次数(846) |
所属类型(默认类型)
页码数(1):
1