ty94516 发表于 2019-10-22 03:13

不懂编程的小白求助算法

本帖最后由 ty94516 于 2019-10-22 10:07 编辑

本人小白一个,有个ECXEL插件的想求注册码。用反编译工具打开DLL,发现如下代码,貌似是注册码的算法


      int Tem3 = 0;
      string Tem4 = pass;
      byte[] bytes = Encoding.ASCII.GetBytes(YingPan());
      foreach (byte item in bytes)
      {
                Tem3 += item;
                Tem4 += item;
                Tem4 += Tem3;
      }
      string result = null;
      for (int i = 0; i < Tem4.Length - 3; i += 3)
      {
                result += ThisAddIn.Chr(Convert.ToByte(Convert.ToInt32(Tem4.Substring(i, 3)) % 26 + 65)).ToString();
      }
      return result == pass;
}


因为没有学过这个,看不懂算法,哪位好心人指教一下。多谢!


下面是原文件https://www.lanzouj.com/i6wf8ta

xingjm 发表于 2019-10-22 06:05

看得懂过程,看不懂函数

洛枫 发表于 2019-10-22 08:22

小猪嘟嘟 发表于 2019-10-22 08:30

好像c语言写的,但我刚学没看懂。。。

井右寺 发表于 2019-10-22 08:39

本帖最后由 井右寺 于 2019-10-22 08:41 编辑

yingpan()执行的返回值转byte数组,遍历byte,例如 得到 {$pass}112337411这种(大概是这样)。。。。然后再遍历上面的每个字符,比如1234564789 为123对26取余然后加上65,234%26+65,...789%26+65,把上面的结果每个转16进制然后拼接到一起,获得最后结果。
yingpan()函数返回值是什么?你需要自己去看
pass 的值是多少?你也得去看

xinxirong 发表于 2019-10-22 08:41

虽然我也没学过,到我也知道这不是c

weikun444 发表于 2019-10-22 08:42

OD加载DLL,一般返回值eax,可以看下,哪里清0了,例如 xor eax,eax,JMP或NOP即可。

逍遥枷锁 发表于 2019-10-22 08:49

去查看下C#的foreach语句,如果可以调试最好。

太多沉默 发表于 2019-10-22 08:50

这样的也叫小白,我这混经验的 怎么称呼Excel

丸子吃枣药丸 发表于 2019-10-22 08:55

取硬盘码的吧
页: [1] 2
查看完整版本: 不懂编程的小白求助算法