时隔很多年再一次接触逆向
前言:今日朋友说他要写小说,他需要理一下人物关系,扔给我一个软件,让我给他破解一下,有些功能需要授权,我顿时有点懵逼,心想挺久没接触逆向了弄不出来就挺尴尬的。我跟他说,那我试试看。接下来,用着我仅有的一点记忆开始了这次漫长的破解之旅
1.破解当然第一步扔PEID
2.呀!是个.net!一看到.NET那就想到了dnSpy神器(但是我没用过啊!此处花了点时间学习了一下dnSpy)-->掏出我的dnSpy,把软件扔进去
嗯?乱码,那应该是加了壳(此处又花了点时间去找.net脱壳),在论坛上找到.net 一般都用de4dot,抱着试试看的心态。用de4dot脱了壳之后
嗯!舒服了!----->然后想着既然没乱码了,那么应该可以搜索字符串了吧!(按照无脑爆破的方法,直接搜索“登录”!)
芜湖!一下就看到了一个熟悉的if语句(心想卧槽那么简单?),修改if语句为条件为true。
保存运行一下。
点了确定之后并没有发生什么改变,是什么地方错了吗。然后我接着往回跟。跟到上一级调用
ChkLog这个方法,是发送网络验证的东西。
当我跟踪到这里的时候,我觉得text应该就是接收返回信息的一个参数,然后与1对比,等于1就true
下面this.Setting.T = (this.AuthNet ? this.GetCurTimeStr() : this.Setting.T);
很明显就是按照AutnNet的 false 或者true进行验证。
当然无脑true啊,把下面text改成1试试
哟 !可以了!
功能也能用!
我们总不能每次都在里面改变量吧,所以我们直接一步到位,
直接改成true
然后保存,运行一下,非常nice!。。。。
----记录一下整个过程用了3个半小时。原因还是太菜了 很多年都可以随便破解成功,我很多年都还没接触破解.... 本帖最后由 chased 于 2021-4-21 13:02 编辑
这里面还有一个字符串加密函数,解密后才能正常显示中文字符,楼主是手动修改的??
public class GClass0
{
// Token: 0x06000982 RID: 2434 RVA: 0x0002A500 File Offset: 0x00028700
public static string smethod_0(string string_0)
{
int length = string_0.Length;
char[] array = new char[length];
for (int i = 0; i < array.Length; i++)
{
char c = string_0[i];
byte b = (byte)((int)c ^ length - i);
byte b2 = (byte)((int)(c >> 8) ^ i);
array[ = (char)((int)b2 << 8 | (int)b);
}
return string.Intern(new string(array));
}
} 楼主厉害,膜拜学习。 厉害,学习一下 谢谢楼主跟楼主学习学习。 跟楼主学习了 楼主很强{:1_893:} 楼主很棒,学习一下
楼主很棒,学习一下
楼主厉害,膜拜学习。 楼主很棒,看明白了