ana*_*and 2 debugging assembly windbg visual-studio
三个疑点1)假设我得到如下调用堆栈
user32.dll!_InternalCallWinProc@20() + 0x28 bytes
user32.dll!_UserCallWinProcCheckWow@32() + 0xb7 bytes
user32.dll!_CallWindowProcAorW@24() + 0x51 bytes
user32.dll!_CallWindowProcW@20() + 0x1b bytes
Run Code Online (Sandbox Code Playgroud)
现在每个函数末尾提到的字节是什么?就像第一个语句一样,什么是0x28字节.
2)如何在VS中的windows系统dll上放置断点?在windbg中,我可以搜索windows系统dll的特定功能
>x wininet!*funcA*
Run Code Online (Sandbox Code Playgroud)
使用此命令,我可以获取此函数的地址并可以放置断点.我可以在Visual Studio中执行相同的操作吗?
3)我没有dll的Symbol文件.我在反汇编中得到的调用堆栈是
7814XXX0 call dword ptr [__imp__WindowsFuncA@32 (781EXXXXh)]
Run Code Online (Sandbox Code Playgroud)
什么是__imp__上面调用栈?这是否意味着这个windows函数被挂钩到其他一些dll?
1)它们是相对于函数开始在该堆栈帧中执行的指令的字节偏移量.
2)在New Breakpoint对话框中输入这样的内容:
{,,user32.dll}_SendMessageW@16
Run Code Online (Sandbox Code Playgroud)
其中16是函数所期望的参数的字节数(在Win32中,这几乎总是参数数量的4倍).该W指API的Unicode版本; 使用A,如果你正在调试的ANSI应用程序.
3) __imp__引用DLL导入表 - 当前模块中的代码通过a重定向JMP到真正的Windows DLL中,__imp__符号引用它JMP.它们JMP存在于DLL或EXE中的一个表中进行调用.
| 归档时间: |
|
| 查看次数: |
669 次 |
| 最近记录: |