假设我有一个已编译的exe,我想找到exe的参数或命令行参数,我该如何使用调试器?我认为这个话题进入了逆向工程的范畴,但我似乎无法找到如何实现这一技巧的指南。
我能得到的最接近的是在exe上使用调试器,并在CreateProcess上设置断点。但是,如何在调试器中找到CreateProcess函数?
答案 0 :(得分:1)
某些调试器允许您在调试对象的上下文中调用任意函数,因此如果您支持,则可以调用GetCommandLine()函数。
另一种选择是通过半文件化的TEB和PEB结构。您需要转到fs:30h(PEB),然后转到ProcessParameters,然后检查那里的CommandLine字段。
答案 1 :(得分:0)
使用一些命令行参数运行exe,例如“target.exe -whateverabc” 然后,当您的调试器加载exe时,在内存中搜索-whateverabc并在该内存位置设置读取断点并可能重复。希望当断点触发时,你将进入检查该exe中命令行参数的函数。
要在CreateProcess上设置断点,可以在某些调试器中键入“bpx CreateProcess”。 或者编写一个小应用程序,在kernel32.dll或w / e dll上使用LoadLibrary包含你的函数,然后使用GetProcAddress和函数名来获取它的地址。然后在该地址上设置执行断点;