我知道如何使用gdb获取程序的汇编代码但是如何获取操作码?我需要它来破解Linux服务器(不要担心它是我所拥有的类的一部分所以没有真正的服务器会受到伤害).其实我正在阅读这篇文章,我想知道如何从汇编中获得:
[aleph1]$ gcc -o shellcodeasm -g -ggdb shellcodeasm.c
[aleph1]$ gdb shellcodeasm
(gdb) disassemble main
Dump of assembler code for function main:
0x8000130 <main>: pushl %ebp
0x8000131 <main+1>: movl %esp,%ebp
0x8000133 <main+3>: jmp 0x800015f <main+47>
0x8000135 <main+5>: popl %esi
0x8000136 <main+6>: movl %esi,0x8(%esi)
0x8000139 <main+9>: movb $0x0,0x7(%esi)
0x800013d <main+13>: movl $0x0,0xc(%esi)
0x8000144 <main+20>: movl $0xb,%eax
0x8000149 <main+25>: movl %esi,%ebx
0x800014b <main+27>: leal 0x8(%esi),%ecx
0x800014e <main+30>: leal 0xc(%esi),%edx
0x8000151 <main+33>: int $0x80
0x8000153 <main+35>: movl $0x1,%eax
0x8000158 <main+40>: movl $0x0,%ebx …Run Code Online (Sandbox Code Playgroud) 当我尝试运行我的程序时,我得到了这个:bash:./ supermarket:权限被拒绝
可执行文件显示为二进制文件,对用户具有读写权限但没有执行权限
这是我的makefile的代码可以搞清楚是什么问题?
OBJS = supermarket.o cashier.o customer.o
SOURCE = supermarket.c cashier.c customer.c
HEADER = struct.h
OUT = supermarket cashier customer
CC = gcc
FLAGS = -lrt -g -c
#LIBS = -lm
# -g option enables debugging mode
# -c flag generates object code for separate files
# -lm math library
# -lrt semaphores
all: supermarket cashier customer
supermarket: supermarket.c
$(CC) $(FLAGS) supermarket.c -o supermarket
cashier: cashier.c
$(CC) $(FLAGS) cashier.c -o cashier
customer: customer.c
$(CC) $(FLAGS) customer.c -o customer …Run Code Online (Sandbox Code Playgroud) 我必须介绍我的程序设计。我使用Visual Studio 2010,但演示文稿PC是我的大学实验室PC与2008。我无法在其上安装任何软件。语言是c ++,opengl
是否可以使我的可执行文件向后兼容,还是应该依靠8岁的笔记本电脑?我讨厌它,如果我必须使用它,因为该项目是opengl,而我得到的帧率很低...
我想做一个小动画,一座桥上有一个交通灯女巫警告当桥打开(黄灯),红灯,而桥是动画(只是移动你和下来)和绿灯,当它下来.现在我只想让它一遍又一遍地重复相同的动画
在idle函数中我有这个代码:
if(bridgeAnimating==0);
{
printf("\nwtf,%d\n",bridgeAnimating);
fflush(stdout);
startBridge=1;
}
Run Code Online (Sandbox Code Playgroud)
animateBridge();
这就是我得到的输出:wtf,0 wtf,1 wtf,1 ......等
bridgeAnimating是一个全局变量,例如startBridge int startBridge = 0; int bridgeAnimating = 0;
这是功能:
void animateBridge()
{
float static speed=0.25;
int static upwards=1;
double static warnTime=teid;
warnTime-=dt;
if(startBridge==1)
{
upwards=1;
bridgeAnimating=1;
warnTime=teid;
startBridge=0;
//printf("Here:Animating=%d",bridgeAnimating); //if un-commented this gets printed!!!
}
if(bridgeAngle<30 && upwards==1 && warnTime<=0)
{
bridgeAngle+=speed;
red=2;
green=0.9;
orangeRed=0.9;
orangeGreen=0.6;
bridgeAnimating=1;
printf("Upwnwards");
}else if(bridgeAngle>0 && upwards==0 && warnTime<=0)
{
bridgeAngle-=speed;
red=2;
green=0.9;
orangeRed=0.9;
orangeGreen=0.6;
bridgeAnimating=1;
printf("Downwards");
}else if(warnTime>0)
{
orangeRed=2; …Run Code Online (Sandbox Code Playgroud)