hello的shellcode
来源:互联网 发布:主播用的唱歌软件 编辑:程序博客网 时间:2024/05/17 07:56
方法一,用mov,代码:
- ;hello_mov.asm
- section .data
- msg db "Hello, world!", 0xA
- len equ $ - msg
- section .text
- global _start
- _start:
- mov edx, len
- mov ecx, msg
- mov ebx, 1
- mov eax, 4
- int 0x80
- mov ebx, 0
- mov eax, 1
- int 0x80
方法二,用xor,代码:
- ;hello_xor.asm
- section .data
- msg db "Hello, world!", 0xA
- len equ $ - msg
- section .text
- global _start
- _start:
- xor eax,eax
- xor ebx,ebx
- xor ecx,ecx
- xor edx,edx
- mov dl, len
- mov ecx, msg
- mov bl, 1
- mov al, 4
- int 0x80
- mov bl, 0
- mov al, 1
- int 0x80
编译连接后,再反汇编看一下
- [root@localhost shellcode]# nasm -f elf hello_mov.asm
- [root@localhost shellcode]#
- [root@localhost shellcode]# ld -o hello_mov hello_mov.o
- [root@localhost shellcode]#
- [root@localhost shellcode]#
- [root@localhost shellcode]# ./hello_mov
- Hello, world!
- [root@localhost shellcode]# objdump -d hello_mov
- hello_mov: file format elf32-i386
- Disassembly of section .text:
- 08048080 <_start>:
- 8048080: ba 0e 00 00 00 mov $0xe,%edx
- 8048085: b9 a4 90 04 08 mov $0x80490a4,%ecx
- 804808a: bb 01 00 00 00 mov $0x1,%ebx
- 804808f: b8 04 00 00 00 mov $0x4,%eax
- 8048094: cd 80 int $0x80
- 8048096: bb 00 00 00 00 mov $0x0,%ebx
- 804809b: b8 01 00 00 00 mov $0x1,%eax
- 80480a0: cd 80 int $0x80
- [root@localhost shellcode]#
- [root@localhost shellcode]# nasm -f elf hello_xor.asm
- [root@localhost shellcode]# ld -o hello_xor hello_xor.o
- [root@localhost shellcode]# ./hello_xor
- Hello, world!
- [root@localhost shellcode]# objdump -d hello_xor
- hello_xor: file format elf32-i386
- Disassembly of section .text:
- 08048080 <_start>:
- 8048080: 31 c0 xor %eax,%eax
- 8048082: 31 db xor %ebx,%ebx
- 8048084: 31 c9 xor %ecx,%ecx
- 8048086: 31 d2 xor %edx,%edx
- 8048088: b2 0e mov $0xe,%dl
- 804808a: b9 9c 90 04 08 mov $0x804909c,%ecx
- 804808f: b3 01 mov $0x1,%bl
- 8048091: b0 04 mov $0x4,%al
- 8048093: cd 80 int $0x80
- 8048095: b3 00 mov $0x0,%bl
- 8048097: b0 01 mov $0x1,%al
- 8048099: cd 80 int $0x80
- [root@localhost shellcode]#
比较了一下:
- mov ecx,0
- 是5个字节,而
- xor ecx,ecx
- 则是2个字节
所以,我看到一般性的shellcode代码里,都是用xor eax,eax来代替mov eax,0
- hello的shellcode
- hello的shellcode
- bind stage shellcode ,reverse stage shellcode,reverse shellcode的异同
- shellcode的初步编写
- 编写"优美"的SHELLCODE
- 我的Shellcode生成器
- 写精简的shellcode
- 编写shellcode的全过程
- 一个神奇的shellcode
- shellcode的隐藏运行
- 编写"优美"的SHELLCODE
- exit的shellcode
- Shellcode的基本介绍
- XSS ShellCode的调用
- 文件上传下载的shellcode
- shellcode的两个关键技术
- ShellCode欺骗的艺术!
- Shellcode的编写
- C++ 线程安全的单例模式
- tcp协议简介
- 使用httpPost进行访问远程接口
- 七大排序算法总结
- struts2中多种提交的处理
- hello的shellcode
- lucene-4.5.0版本在window7上的环境搭建
- linux下两种安装应用程序的方法详解
- [Linux]CentOS开启80端口
- 虚拟机VMware下的UbuntuUSB设备识别问题的解决方法
- (程序员面试题)冒泡排序
- 网络--sftp的心跳检测配置
- 小草晚上应该享受黑暗
- apache和tomcat