一、RE Input your lucky number 要求输入一个数字。 程序有ASLR,可以去掉便于分析。 F5 关键函数401100,传了0x61、0x401013、我们输入的值 反汇编时看到用到了XMM0、XMM1寄存器,用WinDBG调试。 我输的是189,16进制是0xBD。 从上面可 ...
分类:
其他好文 时间:
2018-09-12 15:06:05
阅读次数:
261
switch 的简单情景(case 不超过 3 项) 首先,我们分析一下 switch 语句的一种简单情景,我们可以用 C 写出如下如下代码。 编译后用 OllyDBG 载入,它将显示出如下的反汇编代码。 ...
分类:
其他好文 时间:
2018-09-12 12:31:33
阅读次数:
224
让我们从反汇编的角度去分析并还原 C 语言的 if … else 结构,首先我们不看源代码,我们用 OllyDBG 载入 PE 文件,定位到 main 函数领空,如下图所示。 在图示中,我已经做好了关键的注释,经过一步一步地分析,不难还原出以下的 C 语言代码段。 ...
分类:
编程语言 时间:
2018-09-11 21:13:00
阅读次数:
171
最近在调试uboot的代码时,用的新版本的uboot,lowlevel_init函数里是空的,而且在链接文件中也没有发现对lowlevel_init.o的链接。 在bl lowlevel_init 之前和之中加了两个电灯,发现在bl之后的部分并没有被执行,所以想看看具体程序有没有运行这个函数。 在网 ...
分类:
系统相关 时间:
2018-09-08 15:19:32
阅读次数:
211
值得思考的问题: 示例: 反汇编如下: 我们看到i++和++i对应的汇编是完全一样的。仅仅是寄存器不一样。 因为我们并没有使用这两行语句的返回值,而是单纯的两行i++和++i,所以编译器优化后,将返回值抛弃,因此它们的底层汇编是一样的。 linux下g++编译器的反汇编如下: 可以得到结论,独立的两 ...
分类:
其他好文 时间:
2018-09-02 16:08:03
阅读次数:
179
将上面的命令 保存为一个 批处理文件 bat 双击执行,就会在 D盘 得到 几个 txt 文件 这些 txt 文件 包含了反汇编的很多信息。 ...
分类:
编程语言 时间:
2018-08-28 20:20:05
阅读次数:
1143
一、几个概念 1. 反汇编与反编译 源代码程序-->可执行程序,需要经过编译器-->汇编器-->链接器;用来撤销编译和汇编的过程,称之为反编译和反汇编 反汇编:从机器码到汇编代码 反编译:以汇编代码或机器码到高级语言 2. 常见的指令架构 指令架构:x86、ARM、MIPS x86主要应用于pc机上 ...
分类:
其他好文 时间:
2018-08-27 16:03:30
阅读次数:
1124
堆栈如下: 函数端在s_show: 发现很多个s_show的定义,所以反汇编下出错的地址: [exception RIP: s_show+228] RIP: ffffffff81166504 根据代码行,找到的函数是slab.c中的s_show,可以很明显根据堆栈看到最后回溯的rsi是空指针,所以会 ...
分类:
其他好文 时间:
2018-08-22 17:00:35
阅读次数:
148
如下图,在编译的时候出现Permission denied。此时u-boot-spl.axf已经编译出来,但是他的反汇编失败了。 失败的原因是生成的u-boot-spl.axf权限不足。 执行chmod 777 u-boot-spl.axf即可,修改makefile,在里面加上或者直接在命令行执行c ...
分类:
其他好文 时间:
2018-08-08 13:44:11
阅读次数:
188
在记事本中写算法题和在纸上写其实感觉差不多,反正是不能进行调试。想起某高手的话,写代码要做到“人机合一”,写高级语言时(指的是 C 和 C++)脑海中要知道当前写的代码对应的反汇编代码,也就是要深入了解编译器对高级语言的处理。什么时候能达到这样的境界呢? LeetCode 题库的第 20 题——有效 ...
分类:
其他好文 时间:
2018-08-04 00:59:07
阅读次数:
192