vipcrack 发表于 2015-5-8 21:15

一个.Net程序的修改录像(来自悬赏区)

软件来源和帖子:https://www.52hb.com/forum.ph ... 20&page=2#pid216093

修改后


视频链接:
**** Hidden Message *****
日志记录:

启动程序,输入任意注册码,提示注册卡错误。

提问问题的兄弟已经分析到了注册的关键位置,既然程序没有做混淆,那么我们就直接启动.NET反编译软件.Net Reflector

打开目标EXE,然后找找关键。

我KAO,虚拟机下,这个工具输入汉字就直接死了,不输入了,这里应该输入错误的注册卡那个提示信息去找。

注册搜索的时候,要看我刚才鼠标的选择,就是search string ...........

找到两个包含注册卡字样的,看看这个q,b,分别双击看看。

看到C分支下的q,K分支下的b都是一样的注册代码。

RSAKeyValue看到这里就知道是RSA算法,不知道私钥,就放弃做注册机吧。

如果单纯的修改注册,那么程序可能还会有其他地方检测,那么我们看看到底未注册是怎么判断的,然后考虑如何下手。

可以看到,未注册字样在c的k分支里,双击过去看看代码。


if (File.Exists(l.b))
得存在注册文件,然后RSA解码判断注册是否正确,这里既然没有KEY文件,放弃修改这里,反正程序找不到KEY文件就调走去下面了。

有文件存在的时候,如果解码出来的数据和机器码相同,那么就是注册版,他设置个标志。

            if (this.c.Text.Equals(str2))
            {
                this.bk = true;
            }


this.bk = true;

那么继续往下看
    if (this.bk)
    {
      this.af.Visible = false;
      this.ae.Visible = false;
      this.ap.Visible = false;
      this.ag.Visible = false;
      this.ah.Visible = false;
      flag = true;
    }

如果结果是true,那么就隐藏掉输入注册信息,注册按钮等控件。

bool flag = true;
    if (!flag)
    {
      new k(this).ShowDialog();
      if (!this.bk)
      {
            Environment.Exit(0);
      }
      else
      {
            this.af.Visible = false;
            this.ae.Visible = false;
            this.ap.Visible = false;
            this.ag.Visible = false;
            this.ah.Visible = false;
      }
    }
    else if (flag && !this.bk)
    {
      this.Text = this.Text + "- 未注册";
      new Thread(new ThreadStart(this.j)).Start();
    }

看这里,还是有个flag的判断,才会出现未注册字样,那么我们看看这两个地方是怎么来修改的。

我们修改测试看看效果。

既然注册正确才是this.bk=true,下面判断如果是的话,就隐藏按钮和输入框,那么我们修改下下面的判断,让程序做如果不是true就隐藏。

修改brfalse.s为brtrue.s,然后保存出来看看程序运行结果。

可以看到输入注册信息那里的控件都看不见了。主窗体上还是显示未注册,因为那里的判断我们还没修改呢。

继续修改下面的未注册的判断,让程序启动后就认为是注册版本。

因为这程序不会用,所以在论坛提供给提问题的伙计测试,说功能限制去掉了,那么就认为这样修改了未注册的判断后,程序限制就去掉了吧。

flag && !this.bk

要求两个条件同时程序还是一个存在,具体我忘了,那么我们只需要处理这个!this.bk好了。

修改brtrue.s为brfalse.s,然后保存出来看看程序运行结果。


好了,目前看看,应该是可以了,不过这次的修改和我传到论坛的附件不同,还请提问题的兄弟测试结果是否正确。


修改.NET程序的思路,就是考虑如何修改程序的验证,很多验证是brtrue和brfalse的处理判断使用Reflexil插件可以去定位代码,至于如何快读定位过去,就需要多多的去猜测,修改错了,就刷新重新修改,多做多总结就有了。


好了,简单的处理下这个问题,录制个视频,如果逆向结果不好,还请多多体谅与反馈,这里只是给大家一个简单的思路。

OVER





Shark恒 发表于 2015-5-8 21:21

赶紧抢个沙发,前排支持VIP{:5_116:}

lucious 发表于 2015-5-8 21:22

抢个前排!!!

njjwdy 发表于 2015-5-8 21:27

沙发就这样被老大抢走了!

vipcrack 发表于 2015-5-8 21:27

Shark恒 发表于 2015-5-8 21:21
赶紧抢个沙发,前排支持VIP

胡乱修改录制了下,等有空了,仔细录制几个软件的分析。

这个录像就是单纯的修改而修改了。

njjwdy 发表于 2015-5-8 21:28

非常感谢大神的帮助!

Shark恒 发表于 2015-5-8 21:42

vipcrack 发表于 2015-5-8 21:27
胡乱修改录制了下,等有空了,仔细录制几个软件的分析。

这个录像就是单纯的修改而修改了。

非常期待,么么哒~

彡墨鱼灬丶 发表于 2015-5-8 21:48

{:5_116:}感谢VIP师傅帮忙解决问题

自然卷。 发表于 2015-5-8 22:27

{:5_116:}学习net程序的逆向

flydea 发表于 2015-5-8 22:32

学习一下思路
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 一个.Net程序的修改录像(来自悬赏区)