C和汇编混合编程----printf

今天终于用c和汇编成功调试出第一个程序了,程序很简单,我太菜了,花了几天的时间,才调试好,来记录一下,以防忘记了
先上程序:

#include "stdio.h"
int main()
{char *str="begin\n";
//	printf("begin\n");__asm{push str		;将str的值就是字符串begin首地址压入栈call printf		;调用printf函数add esp,4	;平衡栈数据}return 0;
}

程序的功能就是输出begin,代码解释写在程序中了
结果:
在这里插入图片描述
注意

  • 每个函数调用时,需要参数时,从栈顶取,根据参数的需要,依次往下取
    比如说,输出两个参数:
#include "stdio.h"int main()
{printf("begin\n");char *str="a=%d,b=%d\n";__asm{push 3push 4call eeeeadd esp,8mov eax,3jmp endeeee:	mov eax,[esp+8]mov ebx,[esp+4]xchg eax,ebxpush ebxpush eaxpush strcall printfadd esp,12retend:	nop}return 0;
}

在这里插入图片描述

  • 函数调用完需要平衡栈数据,上面程序中
mov esp,4

就是平衡栈数据

如果没有平衡会报错,如图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux清理缓存cache,Linux清理cache缓存

当cache缓存占用太大,服务起不来,需要查看清理缓存查看缓存:free -m输入运行下面一行:echo 3 > /proc/sys/vm/drop_caches# 释放缓存区内存的方法1)清理pagecache(页面缓存)# echo 1 > /proc/sys/vm/drop_caches 或者 # sys…

c和汇编混合编程----shellcode----弹出计算器

先用c和汇编混合编程成功弹出计算器(在VC里运行) #include "stdio.h" #include "windows.h"int main(int argc, char* argv[]) {printf("begin\n");HINSTANCE libHandle;char *dll"kernel32.dll";libHandleLoa…

linux系统的层次结构,关于Linux操作系统层次结构分析

本文转自http://www.jb51.net/LINUXjishu/214104.html首先来看一张图(这是Linux操作系统的大致层次结构):最内层是硬件,最外层是用户常用的应用,比如说firefox浏览器,evolution查看邮件,一个计算流体模型等等。硬件是物…

shellcode---c和汇编混合编程---弹出cmd

首先用C/C语言实现弹出cmd #include "stdio.h" #include "windows.h"int main(int argc, char* argv[]) {printf("begin\n");HINSTANCE libHandle;char *dll"kernel32.dll";libHandleLoadLibrary(dll);WinExec("cmd.exe",S…

C和汇编混合编程---栈平衡

最近在搞C和汇编混合编程,对栈平衡有点小理解,记录一下 当我们调用一个API或者子程序时时,API和子程序可以理解为函数,我们不必在返回的时候平衡栈里面的函数参数,但C语言库函数要我们自己平衡栈数据, 比如…

如何创建Java程序

(1),点击 (2),点击OK (3),File->New->Project… (4),Java Project->Next> (5),Project name随便填(这里以qweqwe为例) 然后Finish (6),鼠标右击qweqwe(随便名称都可以)->New->Class (7),同理,…

c语言数据转移,重温C语言(2)之数据

一 数据类型数据就是代表某些信息的数字和字符。按计算机的储存方式可分为两大基本类型:整数类型和浮点数类型。1 关键字初始C90C99intsigned_Boollongvoid_Complexshort_Imaginaryunsignedcharfloatdouble2 存储单元首先得记住,计算机内部都是以二进制进…

对esp和ebp分析来了解函数的调用过程

esp:扩展栈指针寄存器,是指针寄存器的一种,用于存放函数栈顶指针(栈顶指针) ebp:扩展基址指针寄存器,也被称为帧指针寄存器,用于存放函数栈底指针(栈底指针)。…

仿射变换 c语言,c语言数字图像处理(三):仿射变换

仿射变换及坐标变换公式几何变换改进图像中像素间的空间关系。这些变换通常称为橡皮模变换,因为它们可看成是在一块橡皮模上印刷一幅图像,然后根据预定的一组规则拉伸该薄膜。在数字图像处理中,几何变换由两个基本操作组成:(1)坐标…

C和汇编混合编程----实现浮点数的加减乘除

加法 C程序: #include "stdio.h"int main() {float a1.0;float b2.34;float c;cab;printf("c%f",c);return 0; }反汇编之后,实现加法的关键程序 5: float a1.0; 00401028 C7 45 FC 00 00 80 3F mov dword ptr [eb…

【Wordpress】分享500多款国外WordPress经典主题 其之三

从国外网站上淘来的WordPress主题,以前都是放在本人博客xcodeland.mooo.com上的后来空间挂掉了就转到这里来与大家分享。 modernclean 下载地址 just-business 下载地址 redrum 下载地址 aneducation 下载地址 artsie 下载地址 eveningalone 下载地址 wasabi …

C和混编混合编程----strcpy缓存溢出原理

今天老师给了一到程序,让我们分析分析原理,关于strcpy缓存溢出原理的,反汇编一遍遍调试,终于看明白了,记录一下 C程序: #include "string.h" #include "stdio.h" char *shellcode&quo…

C和汇编混合编程--------函数调用后ebp、esp值问题

今天老师又给了一个程序,让我们分析,记录一下分析过程 程序: #include "stdio.h" #include "string.h"char *shellcode"\x64\x65\x66\x67\x68\x69\x70\x71\x05\x10\x40\x00"; void fun1(int a, int b) {print…

android游戏黑屏,第五人格游戏进不去黑屏解决办法

小编今天给各位玩家朋友们带来的是第五人格游戏进不去黑屏解决办法,很多的玩家朋友们在第五人格更新后都出现了黑屏、游戏无法进入等情况,这应该怎么办呢?小编把解决方法给大家整理在了下方,感兴趣的小伙伴们快来跟小编一起往下看…

线性表----顺序表

线性表的定义 线性表是具有相同数据类型的n个数据元素的有限序列, 逻辑特性 除第一个元素外,每个元素只有一个前驱,除最后一个元素外,每个元素都有一个后继 物理结构 线性表的存储结构有顺序存储结构和链式存储结构&#xff…

树、二叉树、二叉搜索树_检查二叉树是否为BST(二叉搜索树)

树、二叉树、二叉搜索树Description: 描述: This article describes how to check whether a given tree is BST or not? This problem came in coding round of Microsoft. 本文介绍如何检查给定的树是否是BST ? 这个问题来自微软的编码回合。 Probl…

栈溢出利用-----jmp esp

通过jmp esp利用栈溢出&#xff0c;首先我们要找出jmp esp 的地址&#xff0c;因为系统不同&#xff0c;通用jmp esp的地址可能不同&#xff0c;下面的代码是找出jmp esp的地址的&#xff1a; #include<windows.h> #include<iostream.h>#include<tchar.h> i…

android 队列上传图片,话说android端七牛图片上传

七牛图片上传业务流程如下图(这是官方的图)&#xff1a;由上图可知&#xff0c;要想实现图片上传&#xff0c;是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行)接下来步骤如下&#xff1a;1、首先肯定是要有一个七牛的账号&#xff0c;并创建一个空间2、客户…

bst 删除节点_C ++程序查找具有N个节点的BST数量(加泰罗尼亚编号)

bst 删除节点Problem statement: C program to find number of binary search trees with n nodes. 问题陈述&#xff1a; C 程序查找具有n个节点的二进制搜索树的数量。 Input format: single integer n 输入格式&#xff1a;单整数n Constraints: 0<n<15 约束&#x…

android intent实验,Android开发课程实验报告③ intent的使用

Android开发课程实验报告author&#xff1a;065实验四&#xff1a;intent实验报告目录实验目的初学移动应用公开发中的Android开发&#xff0c;实验四的主要内容为intent的使用&#xff0c;通过这一次实验&#xff0c;掌握基本的intent使用方法。具体实验分析实验第一步&#x…