找回密码
 立即注册
搜索
热搜: 教程 游戏 工具
查看: 48|回复: 0

[逆向安全] 使用x64dbg脚本命令+日志来记录堆栈数据的技巧

[复制链接]

发表于 2025-12-17 13:14:19 | 显示全部楼层 |阅读模式
本帖最后由 banzhu 于 2025-12-17 13:17 编辑
前言
在逆向分析程序的过程中,有时候需要我们记录某个代码地址中断时,堆栈中的数据,如果仅仅用肉眼看,如果只中断几次还好,要是上百次岂不是要累死?我们当然有其他的方案:
比如在这里做个HOOK打印,可以是Inline Hook,也可以是VEH HOOK
但是两种都有一个问题:写代码。
写代码难道不用时间的吗,肯定用,而且写代码还要查BUG,逆向本来就让很多朋友头疼了,还要写代码,有些人更头疼了
所以我们今天要讲一种不用写代码就可以记录打印数据的方法:
比如我们要记录这里的GetProcAddress函数名传入的情况:

截图示例-min-1024x418.png


我们可以看到[ESP+4]里面放的就是我们需要的函数名
7706F9CE | FF15 A40C0D77 | call dword ptr ds:[<GetProcAddressForCaller>] |

现在我们需求就是把每次[ESP+4]里面的数据拿出来,能够复制,能够拿来就看,拿来就用

我们先带大家看一下效果:所有中断的堆栈数据,我们全部一次性拿出来了!

  1. 函数名称: "RaiseException"
  2. 函数名称: "GetLastError"
  3. 函数名称: "GetSystemInfo"
  4. 函数名称: "VirtualProtect"
  5. 函数名称: "VirtualQuery"
  6. 函数名称: "FreeLibrary"
  7. 函数名称: "GetModuleHandleW"
  8. 函数名称: "GetProcAddress"
  9. 函数名称: "LoadLibraryExA"
  10. 函数名称: "UnhandledExceptionFilter"
  11. 函数名称: "SetUnhandledExceptionFilter"
  12. 函数名称: "GetCurrentProcess"
  13. 函数名称: "TerminateProcess"
  14. 函数名称: "IsProcessorFeaturePresent"
  15. 函数名称: "QueryPerformanceCounter"
  16. 函数名称: "GetCurrentProcessId"
  17. 函数名称: "GetCurrentThreadId"
  18. 函数名称: "GetSystemTimeAsFileTime"
  19. 函数名称: "InitializeSListHead"
  20. 函数名称: "IsDebuggerPresent"
  21. 函数名称: "GetStartupInfoW"
  22. 函数名称: "RtlUnwind"
  23. 函数名称: "SetLastError"
  24. 函数名称: "EnterCriticalSection"
  25. 函数名称: "LeaveCriticalSection"
  26. 函数名称: "DeleteCriticalSection"
  27. 函数名称: "InitializeCriticalSectionAndSpinCount"
  28. 函数名称: "TlsAlloc"
  29. 函数名称: "TlsGetValue"
  30. 函数名称: "TlsSetValue"
  31. 函数名称: "TlsFree"
  32. 函数名称: "LoadLibraryExW"
  33. 函数名称: "GetStdHandle"
  34. 函数名称: "WriteFile"
  35. 函数名称: "GetModuleFileNameW"
  36. 函数名称: "ExitProcess"
  37. 函数名称: "GetModuleHandleExW"
  38. 函数名称: "GetCommandLineA"
  39. 函数名称: "GetCommandLineW"
  40. 函数名称: "HeapAlloc"
  41. 函数名称: "HeapFree"
  42. 函数名称: "FindClose"
  43. 函数名称: "FindFirstFileExW"
  44. 函数名称: "FindNextFileW"
  45. 函数名称: "IsValidCodePage"
  46. 函数名称: "GetACP"
  47. 函数名称: "GetOEMCP"
  48. 函数名称: "GetCPInfo"
  49. 函数名称: "MultiByteToWideChar"
  50. 函数名称: "WideCharToMultiByte"
  51. 函数名称: "GetEnvironmentStringsW"
  52. 函数名称: "FreeEnvironmentStringsW"
  53. 函数名称: "SetEnvironmentVariableW"
  54. 函数名称: "SetStdHandle"
  55. 函数名称: "GetFileType"
  56. 函数名称: "GetStringTypeW"
  57. 函数名称: "CompareStringW"
  58. 函数名称: "LCMapStringW"
  59. 函数名称: "GetProcessHeap"
  60. 函数名称: "HeapSize"
  61. 函数名称: "HeapReAlloc"
  62. 函数名称: "FlushFileBuffers"
  63. 函数名称: "GetConsoleOutputCP"
  64. 函数名称: "GetConsoleMode"
  65. 函数名称: "SetFilePointerEx"
  66. 函数名称: "CreateFileW"
  67. 函数名称: "CloseHandle"
  68. 函数名称: "WriteConsoleW"
  69. 函数名称: "DecodePointer"
  70. 函数名称: "InitializeCriticalSectionEx"
  71. 函数名称: "FlsAlloc"
  72. 函数名称: "FlsSetValue"
  73. 函数名称: "InitializeCriticalSectionEx"
  74. 函数名称: "FlsAlloc"
  75. 函数名称: "FlsGetValue"
  76. 函数名称: "FlsSetValue"
  77. 函数名称: "LCMapStringEx"
  78. 函数名称: "AreFileApisANSI"
复制代码

1-min-3.png

操作教程:
游客,本帖隐藏的内容需要积分高于 100 才可浏览,您当前积分为 0

这里是快捷回复,赶紧试试哦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|92GMBBS

GMT+8, 2026-2-5 04:32

Discuz!

92GMBBS

快速回复 返回顶部 返回列表