| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3074 人关注过本帖
标题:linux & masm
只看楼主 加入收藏
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 9楼 pangding
原来如此

The quieter you become, the more you can hear
2012-09-05 00:08
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用zklhp在2012-9-4 22:05:08的发言:


我开始觉得是microsoft 后来一想不对啊 应该是macro

一查 原来是 Microsoft Macro Assembler (MASM)

我的第一感觉也是 microsoft。
2012-09-05 00:08
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
有容最好去 software center 把 gcc 呀 g++ 之类的都先装好。默认带不带我也不记得了,反正肯定是必备工具。
2012-09-05 00:10
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用pangding在2012-9-5 00:06:36的发言:

z版说 gas 已经支持 intel 的语法了,有容何不自己试试:
应该就行了。
as --help

有类似这样的东西

 -mmnemonic=[att|intel]  use AT&T/Intel mnemonic
 -msyntax=[att|intel]    use AT&T/Intel syntax

肯定是支持的啦 不过得加参数
2012-09-05 08:06
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用pangding在2012-9-5 00:10:37的发言:

有容最好去 software center 把 gcc 呀 g++ 之类的都先装好。默认带不带我也不记得了,反正肯定是必备工具。
恩 这个主意好。

梅尚程荀
马谭杨奚







                                                       
2012-09-05 09:36
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 14楼 zklhp
如果GAS支持intel语法 就先用它了

梅尚程荀
马谭杨奚







                                                       
2012-09-05 09:37
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
网上说 在intel语法里的代码前加上.intel_syntax就可以用AS编译这个汇编源文件
但是 我试了下不行啊  改成 intel syntax / intel_syntax 都不行
yrjd@yrjd-virtual-machine:~/c$ as 11.s -o 11.o
11.s: Assembler messages:
11.s: Warning: end of file not at end of a line; newline inserted
11.s:1: Error: unknown pseudo-op: `.intel'
11.s:2: Error: no such instruction: `assume cs:code,ds:data'
11.s:4: Error: no such instruction: `data segment'
11.s:5: Error: no such instruction: `s db 72ello world!4410h,13h,36'
11.s:6: Error: no such instruction: `data ends'
11.s:8: Error: no such instruction: `code segment'
11.s:9: Error: too many memory references for `mov'
11.s:10: Error: too many memory references for `mov'
11.s:11: Error: junk `h' after expression
11.s:11: Error: operand size mismatch for `int'
11.s:13: Error: too many memory references for `mov'
11.s:14: Error: junk `h' after expression
11.s:14: Error: operand size mismatch for `int'
11.s:15: Error: too many memory references for `mov'
11.s:16: Error: junk `h' after expression
11.s:16: Error: operand size mismatch for `int'
11.s:17: Error: no such instruction: `code ends'
11.s:18: Error: no such instruction: `end start'
然后按照Z版给的那个方法去试 也不行
yrjd@yrjd-virtual-machine:~/c$ -msyntax=[intel]
-msyntax=[intel]: command not found
yrjd@yrjd-virtual-machine:~/c$ -msyntax=[att|intel]
intel]: command not found
-msyntax=[att: command not found
怎么弄 ?
直接学at&t 语法算来?



梅尚程荀
马谭杨奚







                                                       
2012-09-05 11:46
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
为了免去各种麻烦,感觉用intel语法, 就用nasm 编译
AT&T 语法,就用 gas编译,

因为接触汇编不多,我一直是这么做的,顺便付一个可编译的AT&T 语法的 hello,world

程序代码:
.global _start
_start:
    jmp    do_call
jump_back:
    xor %eax, %eax
    xor %ebx, %ebx
    xor %ecx, %ecx
    xor %edx, %edx
    movb $4, %al
    movb $14, %dl
    popl %ecx
    movb $1, %bl
    int    $0x80

    xor %eax, %eax
    movb $1, %al
    xor %ebx, %ebx
    int $0x80

do_call:
    call    jump_back
hello:
    .ascii "Hello, World!\n"


$ as hello.s -o hello.o

$ ld hello.o -o hello

The quieter you become, the more you can hear
2012-09-05 11:55
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 18楼 madfrogme
为了免去各种麻烦,感觉用intel语法, 就用nasm 编译
AT&T 语法,就用 gas编译。

好吧 就听你的

不过我在网上看到个AT&T写的Hello world的代码 直接调用的系统内核  代码很短啊 没有跳转。

梅尚程荀
马谭杨奚







                                                       
2012-09-05 12:02
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用有容就大在2012-9-5 13:02:28的发言:

为了免去各种麻烦,感觉用intel语法, 就用nasm 编译
AT&T 语法,就用 gas编译。

好吧 就听你的

不过我在网上看到个AT&T写的Hello world的代码 直接调用的系统内核  代码很短啊 没有跳转。

恩,是的,这时为了写 shellcode 之前,用了一点点需要在shellcode用到的技巧吧

比如消灭NULL, 把字符串放在call 下面为了把字符串的地址推入栈,什么的

[ 本帖最后由 madfrogme 于 2012-9-5 13:20 编辑 ]

The quieter you become, the more you can hear
2012-09-05 12:15
快速回复:linux & masm
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021110 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved