加载中...

【Root-Me】 PE DotNet - 0 protection



水题。

开启挑战后,下载了一个 ch22.exe 文件,运行后是一个 UI 程序。

随意输入一个 password ,点击 Valider 按钮后,提示密码错误。

使用 IDA 打开这个文件,尝试反汇编(注意使用 Microsoft.NET. assembly 方式打开):

从左侧 Function name 可以找到 UI 程序每个组件模块的代码。

由于校验密码的行为是在我们点击按钮后触发的,因此可以猜测真正的密码被硬编码到这个点击行为的代码里面。

因此现在的目标应该是找到 Valider 按钮点击的事件代码。

而在 Function name 只有一个模块名为 CrackMe.Form1__Button1_Click,双击查看这个模块代码,可以发现这个模块调用了一个 compare 函数,而根据 compare 的结果,代码会流向两个分支,一个是验证密码失败,一个是验证密码成功,说明这就是目标代码。

不难注意到在 compare 函数前面有一个常量 DotNetOP ,很容易就会猜到这是硬编码到代码里面的真正密码。

尝试使用这个密码验证,挑战成功。


答案下载

flag 下载后的 flagzip 的文件需要手动更改后缀为 *.zip,然后解压即可(为了避免直接刷答案)


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
  目录