Loading... # 015-Brad Soblesky.1 的 write up ## 1. 程序执行  ## 2. 查壳  ## 3. 分析 C51是大端存储;socket编程中网络字节序一般是大端存储 首先我们拖入32位IDA进行分析,根据运行的错误信息的关键提示字符,可以知道下面标黄的可能一个是错误提示,一个是正确提示。双击跟踪即可,如下图:  跟踪后以text view形式阅读,如下图:   解释:其实这题和简单,可以看的出来主要做的就会用户输入的string2和内置的string对比。而string只是从内存中三个双字拼接出来的,如下图:  选中标黄字符串,右键选择以十六进制转换成ASCII形式即可显示出字符串来  这里只是需要注意一个大端存储的问题: ### 大端存储(Big-Endian) 数据的高字节存储在低地址中,数据的低字节存储在高地址中 如: ```cpp int a = 1; // int在内存中占 4Byte; // a在内存中的分布为 0x1 0x0 0x0 0x0; // 从左到右内存地址降低,也就是高字节地址存放的是a的低字节数据 ``` 应用:C51是大端存储;socket编程中网络字节序一般是大端存储 ### 小端存储(Little-Endian) 数据的高字节存储在高地址中,数据的低字节存储在低地址中 如: ```cpp int a = 1; // int在内存中占 4Byte; // a在内存中的分布为 0x0 0x0 0x0 0x1; // 从左到右内存地址降低,也就是低字节地址存放的是a的低字节数据 ``` 应用:x86结构、ARM和DSP都是小端存储 ## 4. 结果 所以最后拼接出来的正确结果是:<BrD-SoB>  最后修改:2024 年 12 月 14 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏