vipcrack 发表于 2014-4-29 20:41

小米火警的修改方法_图文版(针对0415版本)

本帖最后由 vipcrack 于 2014-4-30 12:47 编辑








0430补充下主文件。
其实小米火警的破解修改基本是一样的,只不过现在作者换了加密软件DNGuard,很少人能脱壳了。

只要有大神脱壳后,就可以对未进行2次加密的破解进行修改。

所有内容都来自网络和论坛,请勿喷水。

因为图比较多 ,所以直接传个DOC吧。

补充下:我不懂脱壳,我只是把其他老大的成果汇总起来了而已。所以,也没法回答坛子里朋友的问题,SORRY。



vipcrack 发表于 2014-4-29 22:39

dbzmzm 发表于 2014-4-29 21:49
想知道另一处后门在哪里,怎么修改。求真相

bh.h()



private void h()
{
    if (a && !this.p())
    {
      string str = u.b(cr.c("awBoAHQAQwBoAHUAZQBBAgGAlBAVAMGA") + ":" + this.f.a(this).XiaomiId);
      this.f.a(str);
      if (str.StartsWith(cr.c("ARw==AE4")))
      {
            this.a(ai.f);
            this.b(false);
            this.f.a(this).Message = cr.c("C4ALpUuAC5R+1PzDXuuftA+d");
      }
      else if (str.StartsWith(cr.c("ASw==AE8")))
      {
            this.a(ai.i);
            this.b(true);
      }
      else
      {
            this.a(ai.x);
            this.f.a(this).Message = cr.c("++VGWdD/wFgb2OI+U49XXiTZ");
      }
    }
    else
    {
      this.a(ai.k);
      this.b(true);
    }
}


代码还原

private void method_1()
{
    if (bool_0 && !this.Boolean_0)
    {
      string str = Class140.smethod_0("CheckTheAuth" + ":" + this.miSekillPanelVM_0.method_6(this).XiaomiId);
      this.miSekillPanelVM_0.method_5(str);
      if (str.StartsWith("NG"))
      {
            this.Enum2_0 = Enum2.const_5;
            this.Boolean_1 = false;
            this.miSekillPanelVM_0.method_6(this).Message ="右键点击继续...";
      }
      else if (str.StartsWith("OK"))
      {
            this.Enum2_0 = Enum2.const_8;
            this.Boolean_1 = true;
      }
      else
      {
            this.Enum2_0 = Enum2.const_23;
            this.miSekillPanelVM_0.method_6(this).Message = "授权信息取得错误!";
      }
    }
    else
    {
      this.Enum2_0 = Enum2.const_10;
      this.Boolean_1 = true;
    }
}

修改思路:

1、直接删除代码,这样不影响授权用户
2、替换NG和OK的字符,让NG授权,让OK未授权,这样影响授权用户


删除代码:

1、删除84——176行代码
2、删除后在更新的代码基础上,删除98——139行代码

代码变成:

private void h()
{
    if (!(!a || this.p()))
    {
      string str = u.b(cr.c("awBoAHQAQwBoAHUAZQBBAgGAlBAVAMGA") + ":" + this.f.a(this).XiaomiId);
      this.f.a(str);
      this.a(ai.i);
      this.b(true);
    }
    else
    {
      this.a(ai.k);
      this.b(true);
    }
}


下单时候的检测:

            if (u.b(cr.c("HAGAjBwUAU=M") + ":" + this.f.a(this).Account + cr.c("AfA==AHw") + this.f.a(this).Version).StartsWith("OK"))
            {
                this.a(ai.z);
                this.s();
            }

还原代码:

            if (u.b("Succ" + ":" + this.f.a(this).Account + "||" + this.f.a(this).Version).StartsWith("OK"))
            {
                this.a(ai.z);
                this.s();
            }

修改成
                this.a(ai.z);
                this.s();
或者


            string str2 = "OK";
            if (str2.StartsWith("OK"))
            {
                this.a(ai.z);
                this.s();
            }
======================================================================================================================================================
复制密码检测授权,功能用不上,可不修改

private void miCopyPassword_Click(object sender, RoutedEventArgs e)
{
    UserSekillVM selectedItem = this.lvResult.SelectedItem as UserSekillVM;
    MenuItem item = sender as MenuItem;
    if ("miStart".Equals(item.Name))
    {
      if (this._vm.dictionary_0.bool_2)
      {
            this._vm.dictionary_0.method_14();
      }
      else
      {
            this._vm.dictionary_0.method_13();
      }
    }
    else if ("miReset".Equals(item.Name))
    {
      if (this._vm.dictionary_0.Enum2_0 >= Enum2.const_4)
      {
            this._vm.dictionary_0.Enum2_0 = Enum2.const_4;
      }
      else if (this._vm.dictionary_0.Enum2_0 >= Enum2.const_17)
      {
            this._vm.dictionary_0.Enum2_0 = Enum2.const_17;
      }
      else
      {
            this._vm.dictionary_0.Enum2_0 = Enum2.const_1;
      }
      this._vm.dictionary_0.method_13();
    }
    else if ("miCopyAccount".Equals(item.Name))
    {
      Clipboard.SetText(selectedItem.Account);
    }
    else if ("miCopyPassword".Equals(item.Name))
    {
      Clipboard.SetText(selectedItem.Password);
    }
    else if ("miShouquanma".Equals(item.Name))
    {
      ShouquanmaWin win = new ShouquanmaWin();
      win.ShowDialog();
      string inputCode = win.InputCode;
      if (!string.IsNullOrEmpty(inputCode))
      {
            string xiaomiId = selectedItem.XiaomiId;
            string[] strArray2 = Class140.smethod_0("AddShouquan:" + xiaomiId + "||" + inputCode).Split(new string[] { "||" }, StringSplitOptions.None);
            if (strArray2.Length == 2)
            {
                MessageBox.Show(strArray2, "授权结果");
                if ("OK".Equals(strArray2))      //未授权字符是"NG"
                {
                  this._vm.dictionary_0.Enum2_0 = Enum2.const_4;
                  selectedItem.Message = "";
                  this._vm.dictionary_0.Boolean_1 = true;
                  this._vm.dictionary_0.method_13();
                }
            }
            else
            {
                MessageBox.Show("未知错误!", "授权结果");
            }
      }
    }
    else if ("miNoAuthTry".Equals(item.Name))
    {
      this._vm.dictionary_0.Enum2_0 = Enum2.const_6;
      this._vm.dictionary_0.bool_2 = true;
      selectedItem.Message = "";
    }
}

自然卷。 发表于 2014-4-29 20:44

305131438 发表于 2014-4-29 20:46

好人一生平安。。。。

X.son 发表于 2014-4-29 20:47

这个支持下,虽然不是很关注这个

system123678 发表于 2014-4-29 20:47

要想办法脱这个壳才是硬道理

305131438 发表于 2014-4-29 20:47

我想请问下,反混淆。。。 --dont-rename    用de4dot后面加这个后。还是没混淆成功。。。然后-p mc 跟-p mf2次反混淆后。成功了,但是软件打不开了。如何解决?

fengh 发表于 2014-4-29 21:05

不错啊,这个要收藏起来

吾丶爱破解 发表于 2014-4-29 21:07

看不懂了   哎 只希望大手子能偶发一下

vipcrack 发表于 2014-4-29 21:15

305131438 发表于 2014-4-29 20:47
我想请问下,反混淆。。。 --dont-rename    用de4dot后面加这个后。还是没混淆成功。。。然后-p mc 跟-p ...

我搞不定这个壳,我对脱壳一窍不通啊

189825258 发表于 2014-4-29 21:18

有去更新的解析吗?
页: [1] 2 3 4 5 6
查看完整版本: 小米火警的修改方法_图文版(针对0415版本)