不懂编程的小白求助算法
本帖最后由 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 看得懂过程,看不懂函数 好像c语言写的,但我刚学没看懂。。。 本帖最后由 井右寺 于 2019-10-22 08:41 编辑
yingpan()执行的返回值转byte数组,遍历byte,例如 得到 {$pass}112337411这种(大概是这样)。。。。然后再遍历上面的每个字符,比如1234564789 为123对26取余然后加上65,234%26+65,...789%26+65,把上面的结果每个转16进制然后拼接到一起,获得最后结果。
yingpan()函数返回值是什么?你需要自己去看
pass 的值是多少?你也得去看 虽然我也没学过,到我也知道这不是c OD加载DLL,一般返回值eax,可以看下,哪里清0了,例如 xor eax,eax,JMP或NOP即可。 去查看下C#的foreach语句,如果可以调试最好。 这样的也叫小白,我这混经验的 怎么称呼Excel
取硬盘码的吧
页:
[1]
2