如何在不知道名称的情况下访问C结构的成员?

Mar*_*oft 2 c objective-c

我正在处理一个未记录的API,我正在尝试进行一些逆向工程 - 不要担心这不是恶意的,只是试图以创造性的方式完成一个用例.

我有一个指向C结构的指针.有没有办法让我通过检查这个结构有多少成员来确定?他们的价值?

我怀疑实际的会员名称不可用,但也许他们是?

unw*_*ind 5

你不能.你所能做的只是检查记忆,并尝试猜测.

例如,指针值有时可以很容易定位,因为它们通常位于相同的"一般区域"中.如果你有一个struct的地址,那么在数值上查找"close"的值(平台的指针大小,通常是32位或64位).

在您的平台上查找某些"常见"浮点数的位模式也可能值得研究一下.在这里,应用程序和/或域帮助的知识当然可能有一些"应该"在那里的值,那些是那些自然要搜索的东西.

如果您可以访问接受和/或返回结构的API中的任何函数,您可能希望尝试调用它们并检查差异,这可以提供正在发生的事情的线索.

在这方面,你当然也可以逐步完成分配/创建结构的代码,看看它在哪里做了什么.