从零开始学逆向(1)

环境:我用的是visual studio 2019,跑在win10虚拟机里的,目前就环境无其他要求,后续有会另写。

配置:visual studio 2019安装时选择使用C++的桌面开发,安装好以后在解决方案资源管理器中选择源文件添加项目即可。

需要C语言的项目后缀写.c;需要汇编语言的项目需要后缀写.asm,并且在项目中选择依赖项,生成自定义,勾选masm,在扩展-管理扩展中搜索asmdude,添加此扩展,重启vs2019后选择modify安装扩展。

汇编语言需要在项目里选择属性-链接器-高级,在入口点处手动添加main(默认的入口函数),随后即可开始编写你的第一个汇编程序了。

机器语言,汇编语言,高级语言之间的关系:

机器语言:CPU执行用的,全是二进制,只有0和1,人看不懂,也写不了,知道就行;

汇编语言:用英文缩写代表机器指令,与机器语言是一对一的关系,比机器语言易懂,写完后被汇编器翻译成机器语言给硬件执行;

高级语言:易写易理解,常见的编程语言都是高级语言,从逻辑上看高级语言都会经过汇编或类汇编的转换,最终被翻译成机器语言被硬件执行。

打断点与反汇编:打断点是给CPU的指令指针(EIP/RIP)设路障,让程序在指定机器指令处冻结,以便更仔细检查此刻的完整硬件状态(寄存器、内存、栈),并能修改它们或改变执行流。

如图所示,我在int a = 1处打了断点,启动调试时就会在这里中断;这时就可以在调试-窗口进行反汇编,此时可以看到高级语言代码与汇编语言代码的对应关系。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
| 耗时 0.086 秒 | 查询 31 次 | 内存 4.41 MB |