C头样本.
typedef LPVOID UKWD_USB_DEVICE;
typedef struct _UKWD_USB_DEVICE_INFO {
DWORD dwCount;
unsigned char Bus;
unsigned char Address;
unsigned long SessionId;
USB_DEVICE_DESCRIPTOR Descriptor;
} UKWD_USB_DEVICE_INFO, *PUKWD_USB_DEVICE_INFO, * LPUKWD_USB_DEVICE_INFO;
Run Code Online (Sandbox Code Playgroud)
我的理解
struct定义一个结构({}之间的部分).结构的类型是_UKWD_USB_DEVICE_INFO.结束后} UKWD_USB_DEVICE_INFO是此结构的别名.
题
之后声明的目的是什么?* PUKD_USB_DEVICE_INFO和*LPUKWD_USB_DEVICE_INFO.如果一个触摸变量而另一个在字体之间有空格,那么这些指针别名是否意味着不同的东西*?
我一直在阅读大会.根据我对编程语言的理解,似乎编译器(汇编程序......我知道在其他地方争论的两者之间存在微妙的差异),产生目标代码.一种不友好的机器语言没有指令.该目标代码由处理器解释,之后链接器使其成为可执行文件.我知道必须在正确的装配中说出每个处理器.IE浏览器..386,.486,.586令我困惑的是通过MASM运行DOS程序和通过Linux运行相同程序而没有NASM或GAS之间的差异.如果将源代码编译成目标代码,那么它是不是跨平台?我可以像在Linux上一样轻松地从我的戴尔启动Windows.我在这里错过了什么?
此外,我一直在寻找一种查看目标代码的方法,这样我就不必通过Immunity Debugger来破译执行.只是我编写的源代码的指令机器代码指令.有没有办法在Linux中产生类似objdump的结果?