发现王:发现生活点滴!

软件应用

当前位置:首页 > 文苑资讯 > 软件应用

.Net零基础逆向教程 第八课(打不开的程序)

        第八课准备补一张 de4dot 的基础用法的……找了半天没有找到特别好的例子,把几个论坛的 CM 区翻遍了也没找到一个适合做讲解的。

        一看时间都十点了,为了不鸽大家,花了一分钟打开我的 VS,一分钟写代码编译,然后就搞定今天的课件了。没错,就这么任性。

        先来看看今天的这个程序:


.Net零基础逆向教程 第八课(打不开的程序)


        双击它来了解一下……你会发现啥都没有发生。看了下进程日志,发现它直接退出了。


.Net零基础逆向教程 第八课(打不开的程序)


        这就尴尬了,我们之前学的所有操作,都建立在我们看到了明显标志的情况下,这个软件连界面都没有,我们怎么搞?

        不管我们有没有思路,该做的基本操作还是要做的。

        DIE 查壳,没壳,载入 dnSpy 看看,按照我们之前的思路,直接运行它看看。

        还是秒退,所以我们得分析下这个软件是在哪里退出的。如下图,设置它中断于入口点。


.Net零基础逆向教程 第八课(打不开的程序)


        好,现在我们在 Main 方法里断下来了。


.Net零基础逆向教程 第八课(打不开的程序)


        我们并不需要点进每一个方法里去查看,因为它是无报错直接退出的,所以我们猜测它是由软件控制退出的。

        所以我们直接使用逐过程来分析它是在哪个方法里出问题了,快捷键 F10,这一点和我们在 OD 里找关键 Call 的方法很相似。

        点了几次 F10 后,我们发现在 16 行运行完了后程序自动退出了,而 16 行是一个闭合括号。说明 15 行的方法里包含了让程序退出的原因。有没有一种在 OD 里找关键 Call 的代入感???

        我们看一下 15 行的内容


        Application.Run(new Form1());


        运行后载入 Form1,点一下 Form1 去看看这个窗口。


.Net零基础逆向教程 第八课(打不开的程序)


        14 行,上节课说过它定义了窗口的一些布局,跟进看一下内容。


.Net零基础逆向教程 第八课(打不开的程序)


        可以发现 52 行定义了一个 Form_Load 事件(等同于易语言的窗口加载事件)

        点一下 Form1_Load,可以看到里面有一个关闭窗口的方法。


.Net零基础逆向教程 第八课(打不开的程序)


        右键编辑方法,注释掉这行即可。

        保存即可看到我们的成果。


.Net零基础逆向教程 第八课(打不开的程序)


        在我们的实际操作中,这种防逆向的手段较为常见,当然肯定比我这个写的复杂点儿,比如检验自身 hash 之类的。但解决的方法还是一样的,不管三七二十一跟着程序运行,搞懂它的逻辑,我们就能成功。


        本章课件第八课:https://www.lanzous.com/i3rniqh 


        感谢本文作者:慕若曦


文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

评论排行榜