前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Visual Studio快捷键介绍和高级玩法

Visual Studio快捷键介绍和高级玩法

原创
作者头像
无情剑客
修改2021-04-03 10:02:54
5580
修改2021-04-03 10:02:54
举报
文章被收录于专栏:Android逆向

既然使用IDE,我想更多的看重的是它的调试和定位功能。其他的快捷键需要自己慢慢探索。微软不太好的地方是vscode和studio的快捷方式不太一样。

调试

•调试(启动):F5;•调试(重新启动):使用组合键“Ctrl+Shift+F5”;•调试(开始执行不调试):使用组合键“Ctrl+F5”;•调试(逐语句,步入):F11;•调试(逐过程,步过):F10;•设置断点:F9。•退出当前过程: Shift+F11•编译: F7

如果遇到库函数,想看看库函数的实现,怎么办? 举个例子memset函数,很常见的一个函数。 (1) F9在memset处设置断点 (2) Debug运行程序 (3) 到达断点,查看memset的反汇编

代码语言:javascript
复制
memset(&appBaseMem, 0, sizeof(appBaseMem));
00600645  push        0Ch  
00600647  push        0  
00600649  lea         eax,[appBaseMem]  
0060064C  push        eax  
0060064D  call        _memset (024571FCh)  
00600652  add         esp,0Ch

(4) F11步进_memset

代码语言:javascript
复制
024571FC  jmp         dword ptr [__imp__memset (1855A5B4h)]

(5)继续F11

代码语言:javascript
复制
583750E0  mov         ecx,dword ptr [esp+0Ch]  
583750E4  movzx       eax,byte ptr [esp+8]  
583750E9  mov         edx,edi  
583750EB  mov         edi,dword ptr [esp+4]  
583750EF  test        ecx,ecx  
583750F1  je          58375233  
583750F7  imul        eax,eax,1010101h  
583750FD  cmp         ecx,20h  
58375100  jle         583751E5  
58375106  cmp         ecx,80h  
5837510C  jl          5837519D  
58375112  bt          dword ptr ds:[5838731Ch],1  
5837511A  jae         58375125  
5837511C  rep stos    byte ptr es:[edi]  
5837511E  mov         eax,dword ptr [esp+4]  
58375122  mov         edi,edx  
58375124  ret

可以逐步调试汇编代码查看寄存器的值。也可以查看内存的值,函数的调用堆栈等,超级强大。

从第(4)->第(5)经历了什么,后续会专门讲解,这里涉及到windows下库函数定位。

定位

1.转跳到定义:F12;2.查找所有引用:使用组合键“Shift+F12”

搜索功能

CTRL+F 全局查找[1]

在光标所在行的上面或下面插入一行

•组合键“Ctrl+Enter”:在当前行的上面插入一个空行;• 组合键“Ctrl+Shift+Enter”:在当前行的下面插入一个空行。

写在最后

Visual Studio的功能非常强大,要比Android Studio的功能强大很多,几乎涵盖了编程的方方面面,甚至调试windows内核也是可以的(本质上还是集成windbg),能够取代windbg。不过Visual Studio体积太大,如非必要,可能用不到这么大的工具,毕竟杀鸡不必用牛刀,但是杀牛就要用牛刀了。

公众号

更多内容,欢迎关注我的微信公众号:无情剑客。

References

[1] 全局查找: https://jingyan.baidu.com/article/2c8c281d9e987e0008252a92.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 调试
  • 定位
  • 搜索功能
  • 在光标所在行的上面或下面插入一行
  • 写在最后
  • 公众号
  • References
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档