Reverse基础

1. Linux基本操作

在讲文件/文件夹的增删改之前,先聊一下路径的问题,因为有些命令创建文件(夹)时会直接在当前目录创建,或者需要自己指定相应的目录,所以知晓当前所处的位置就显得尤为重要。

进入终端之后默认进入用户目录,即"/根目录/用户",直接输入"pwd"进行查看;

puyalee@puyalee-virtual-machine:~$ pwd
/home/puyalee

切换目录用的是"cd"
最直接的是“cd 路径”,可进入指定的目录下,当然这里的路径有绝对路径和相对路径之分。绝对路径就是按部就班地从根目录一直写道目标目录,如:

puyalee@puyalee-virtual-machine:~$ cd /home/puyalee/test0/test1/test2
puyalee@puyalee-virtual-machine:~/test0/test1/test2$ 

相对路径允许省略用户,比如我要到/home/puyalee/test0/test1/test2,也可直接用:

puyalee@puyalee-virtual-machine:~$ cd ./test0/test1/test2
puyalee@puyalee-virtual-machine:~/test0/test1/test2$ 

另外"cd ~"、"cd …"分别表示返回用户目录和返回上一级目录

puyalee@puyalee-virtual-machine:~/test0/test1/test2$ cd ..
puyalee@puyalee-virtual-machine:~/test0/test1$ pwd
/home/puyalee/test0/test1
puyalee@puyalee-virtual-machine:~/test0/test1$ cd ~
puyalee@puyalee-virtual-machine:~$ pwd
/home/puyalee

补充一点:"pwd"是显示当前的目录

对文件的基本操作

  • "touch"该命令可修改文件的修改时间,当文件不存在时,会建立一个新的文件

支持"touch [文件名]"在当前目录创建新文件,也支持"touch [目录/文件名]"在指定目录下创建文件

  • "rm"命令可直接删除文件,也有一些其它选项

"rm -i"删除前询问,空与非空均可

puyalee@puyalee-virtual-machine:~/test0$ rm -i 1
rm:是否删除普通空文件 '1'? y

“rm -f"强制删除文件,空与非空均可
此外"rm -r”、"rm -d"也可删除文件,也均支持通过路径删除

  • 向txt文件写入文本

1、“vi"输入"vi test.txt” 回车,按a或i进入编辑模式,输入“ I am a boy”,然后按esc键退出编辑模式,输入":wq"保存并退出,当test.txt不存在时创建
2、"echo"只可单行追加

puyalee@puyalee-virtual-machine:~/test0$ echo 123 >> test.txt
//当test.txt不存在时创建

3、"cat"可对文件进行编辑,“cat >> test.txt”,键入需要输入的文本,按Ctrl+D保存

对文件夹的操作

  • "mkdir"用来创建文件夹

"mkdir"可直接在当前目录下创建新的文件夹

puyalee@puyalee-virtual-machine:~$ mkdir test

"mkdir"可在指定目录下创建新的文件夹

puyalee@puyalee-virtual-machine:~$ mkdir test/test1

"mkdir -p"递归创建所需的目录,上一级目录可以不存在,也一并创建

puyalee@puyalee-virtual-machine:~$ mkdir -p test1/test2/test3/test4
  • "rm"用来删除文件夹

"rm -d"可删除空文件夹,删除test4

puyalee@puyalee-virtual-machine:~$ rm -d test1/test2/test3/test4

"rm -r"可删除文件夹及其内容,删除test1

puyalee@puyalee-virtual-machine:~$ rm -r test1

"rmdir"也可删除空文件夹,"rmdir -p"连同上一级空目录也一起删除

  • "mv"对文件和文件夹进行移动、重命名,如将文件"1"从test0移动到test1
puyalee@puyalee-virtual-machine:~$ cd test0     //首先进入test0
puyalee@puyalee-virtual-machine:~/test0$ mv 1 test1

重命名"mv [原名字] [新名字]“即可,如将文件’'1"重命名为"2”

puyalee@puyalee-virtual-machine:~/test0/test1$ mv 1 2

2. 汇编语言编写hello world!

在网上找了一个源程序,只能看懂基本的结构,还有好多地方不明白,或者说压根不会。比如,我知道前面定义了数据段(应该是用来存储字符串)和堆栈段,但不知道为什么这么做,具体的语法也不清楚。

DATA   SEGMENT                               ;定义数据段
PRINT  DB "Hello World!", 0AH, 0DH, '$'      ;定义一个字符串,以'$'结束
DATA   ENDS                                  ;定义数据段结束
STACK  SEGMENT   STACK                       ;定义堆栈段 
       DW  20  DUP(0)                        ;为堆栈段分配空间
STACK  ENDS                                  ;定义堆栈段结束
CODE   SEGMENT                               ;定义代码段
ASSUME CS:CODE, DS:DATA, SS:STACK            ;告诉编译器将段寄存器与符号对应起来
START:                                       ;程序入口
        MOV AX, DATA                         
        MOV DS, AX                           ;将段地址DATA送入DS中
        MOV DX, OFFSET  PRINT                ;将字符串地址送人DX中
        MOV AH, 09H
        INT 21H                              ;调用INT 21H的9号中断
        MOV AH, 4CH                          ;返回DOS系统
        INT 21H
CODE   ENDS                                  ;定义代码段结束
END    START                                 ;程序结束

至于源程序的编辑、编译、连接、生成可执行文件并执行的方法步骤,已经掌握。

  1. 准备材料
    dosbox、masm

  2. 事先将hello world源程序放在一个txt文件中,并将后缀改为.asm 我将其暂时和masm中的程序放在一个文件夹内,便于操作。
    在这里插入图片描述

  3. 运行dosbox,依次输入命令,回车

mount c d:\home\		//将d:\home\作为虚拟c盘,省去配置环境变量
c:						//进入虚拟c盘
  1. 输入命令 masm hello.asm 一路回车,将hello.asm编译成目标文件,会在当前目录生成一个目标文件hello.obj

  2. 输入命令 link hello.obj 一路回车,生成可执行文件 hello.exe

  3. 输入命令 hello.exe ,回车即可打印出 hello world!
    在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值