好久没写博客了,今天终于搞出了第一个shellcode,以此mark一下。

#include "stdafx.h"
#include <Windows.h>
#include <tchar.h> int _tmain(int argc, _TCHAR* argv[]) {
HMODULE hm = LoadLibrary(_T("kernel32.dll"));
int addr = (int)GetProcAddress(hm, "WinExec");
int exitaddr = (int)GetProcAddress(hm, "ExitProcess");
printf("the address is %2x\r\nthe exitaddris %2x", addr, exitaddr); char buf[] = {
"\x33\xc0" //xor eax,eax
"\x50" //push eax
"\xb8\x2e\x65\x78\x65" //mov eax,0x6578652e
"\x50" //push eax
"\xb8\x63\x61\x6c\x63" //mov eax,0x636c6163
"\x50" //push eax
"\x89\xe0" //mov eax,esp
"\x6a\x05" //push 0x5
"\x50" //push eax
"\xb8\xa0\xf8\x0a\x77" //mov eax,770af8a0
"\xff\xd0" //call eax
"\x33\xc0" // xor eax, eax
"\x50" //push eax
"\xb8\xb0\xad\x07\x77" //mov eax,7707adb0
"\xff\xd0" //call eax
};
/*
char buf[] = {
0x33, 0xc0, //xor eax,eax
0x50 , //push eax
0xb8, 0x2e, 0x65, 0x78, 0x65, //mov eax,0x6578652e
0x50, //push eax
0xb8, 0x63, 0x61, 0x6c, 0x63, //mov eax,0x636c6163
0x50, //push eax
0x89, 0xe0, //mov eax,esp
0x6a, 0x05, //push 0x5
0x50, //push eax
0xb8, 0xa0, 0xf8, 0x0a, 0x77, //mov eax,770af8a0
0xff, 0xd0, //call eax
0x33, 0xc0, // xor eax, eax
0x50, //push eax
0xb8, 0xb0, 0xad, 0x07, 0x77, //mov eax,7707adb0
0xff, 0xd0 //call eax
};
*/
__asm{
lea ecx, buf
call ecx
} /* __asm{
xor eax, eax
push eax
mov eax, 0x6578652E
push eax
mov eax, 0x636C6163
push eax
mov eax, esp
push 5
push eax
mov eax, 0x770af8a0
call eax
}
*/
//WinExec("calc.exe", SW_SHOW);
ExitProcess(0);
return 0; }

[mark] first shellcode的更多相关文章

  1. java.io.IOException: mark/reset not supported

    java.io.IOException: mark/reset not supported at java.io.InputStream.reset(InputStream.java:348) at ...

  2. 逆向工程学习第二天--动手开发自己的第一个shellcode

    一个简单的c语言添加windows管理员账号的小程序,之前在渗透的时候经常用到,现在拿它来做自己的第一个shellcode. C代码: #pragma comment(lib, "netap ...

  3. [mark] 使用Sublime Text 2时如何将Tab配置为4个空格

    在Mac OS X系统下,Sublime Text是一款比较赞的编辑器. 作为空格党的自觉,今天mark一下使用Sublime Text 2时如何将Tab配置为4个空格: 方法来自以下两个链接: ht ...

  4. 【原创】内核ShellCode注入的一种方法

    标 题: [原创]内核ShellCode注入的一种方法 作 者: organic 时 间: 2013-05-04,04:34:08 链 接: http://bbs.pediy.com/showthre ...

  5. 【逆向篇】分析一段简单的ShellCode——从TEB到函数地址获取

    其实分在逆向篇不太合适,因为并没有逆向什么程序. 在http://www.exploit-db.com/exploits/28996/上看到这么一段最简单的ShellCode,其中的技术也是比较常见的 ...

  6. 特邀美国EMC实战专家Mark来华授课

    “轻松搞定EMC-PCB和系统设计”课程介绍 本次课程特邀美国EMC领域权威专家Mark Montrose主讲,将涵盖满足产品电磁兼容性和信号完整性的基本原理.课程涉及多个领域,不仅仅针对PCB设计, ...

  7. 逆向工程学习第三天--另外一个ShellCode

    上周自己打造的添加用户的shellcode太长,不过当时主要目的是为了锻炼手动asm,熟悉一些复杂的参数类型如何手动进行构造,然后通过堆栈传递. 接下来就打造一个弹计算器的shellcode来进行接下 ...

  8. 如何撤销 PhpStorm/Clion 等 JetBrains 产品的 “Mark as Plain Text” 操作 ?

    当把某个文件“Mark as Plain Text”时,该文件被当做普通文本,就不会有“代码自动完成提示”功能,如下图所示: 但是呢,右键菜单中貌似没有 相应的撤销 操作, 即使是把它删除,再新建一个 ...

  9. vim - mark

    Using markshttp://vim.wikia.com/wiki/Using_marks1. There is no visible indication of where marks are ...

随机推荐

  1. Android 动画——Frame Animation与Tween Animation

    很多手机应用的引导页都是动画的,添加动画后的应用画面会更加生动灵活,今天博主也学习了Android中Animation的使用,下面来总结下.  android中的Animation分为两种,一种是Fr ...

  2. [Oracle]高水位标记(HWM)

    (一)高水位标记(High Water Mark,HWM)的概念 所谓高水位标记,是指一个已经分配的段中,已经使用的空间与未使用的空间的分界线.在表的使用过程中,随着数据的不断增多(insert),H ...

  3. 自定义VS程序异常处理及调试Dump文件(一)

    自定义VS程序异常处理及调试Dump文件(一) 1. Dump文件 1. Dump文件介绍 Dump文件(Dump File),也叫转储文件,以.DMP为文件后缀.dump文件是进程在内存中的镜像文件 ...

  4. SQl去获取相同记录

    以name字段为例 select * from table where name in(select name from table group by name having count(name)& ...

  5. 集合的定义,操作及运算 (Python)

    集合的定义: 集合和列表([  ]) 与  字典 ( {    }) 不同,没有特别的特别的语法格式.可以使用set () 创建. 集合同字典一样是无序的.也是不具有重复性的.因此可以把列表变成集合进 ...

  6. 增强for循环赋值

    增强for循环赋值 代码如下: double[] testList01 = new double[5]; java.util.Scanner sc = new java.util.Scanner(Sy ...

  7. [luogu P3786]萃香抱西瓜 [spfa][状态压缩]

    题目背景 伊吹萃香(Ibuki Suika)正在魔法之森漫步,突然,许多西瓜(Suika)从四周飞来,划出了绚丽的轨迹.虽然阵势有点恐怖,但她还是决定抱走一些西瓜. 题目描述 萃香所处的环境被简化为一 ...

  8. JVM常用启动参数

    本文参考 jvm参数设置大全:http://www.cnblogs.com/marcotan/p/4256885.html 堆内存分配及gc:http://www.cnblogs.com/weiguo ...

  9. 【CSS】div父容器根据子容器大小自适应

    Div即父容器不根据内容自动调节高度,我们看下面的代码: <div id="main"> <div id="content"></ ...

  10. j2ee中的2是什么意思

    J2EE里面的2是什么意思 1998年Java 1.2版本发布,1999年发布Java 1.2的标准版,企业版,微型版三个版本,为了区分这三个版本,分别叫做Java2SE,Java2EE,Java2M ...