ELF-No software breakpoints
ELF-No software breakpoints 题目链接
0x01 IDA分析
下载二进制文件,IDA打开后发现,在start
函数中:
1 | .text:08048096 mov eax, 3 |
其中,password读入byte_8049188
内存区域中,之后调用sub_8048115
函数进行一系列处理。sub_8048115(&start, 0x8048123)
为传入参数内容。start
为函数的代码段首地址,0x8048123
位代码段末地址,函数的返回值放入ecx
中。
sub_8048115
函数:
1 | .text:08048115 sub_8048115 proc near ; CODE XREF: start+35↑p |
函数进入后首先计算长度sub ebx, eax
,即len = 0x8048123 - &start
。
之后循环计算出key
放入exc
中。循环次数为ebx
。计算过程为:
1 | for i in range(len): |
之后继续分析:
1 | .text:080480BA mov edx, ecx |
可以看出,将sub_8048115
函数的结果取出放入edx
中,ecx
赋值为25(0x19h)。
之后即为循环比较password,计算公式:
1 | password \oplus str = key |
1 | for i in len: |
计算password即可
0x02 源代码
1 |
|