13年360举办的某几个逆向题的简单分析

逆向1:bmp图片修复

首先有一个坑,winhex搜索key就能找到一个key,不过当然false

下面就是解题思路:

094fce+36 = 094f98

修改1:BM标识,在windows的标识

修改2:0xA处的大小为固定值0x0036


逆向2: c#破解
 
ILlasm或者reflector静态调试软件
reflector直接就可以反编译出源码,代码没加混淆以及反调试或者壳,
所以很简单。
 
reflector反编译结果:
private void btn_ok_Click(object sender, EventArgs e)
{
    if (this.textBox_Pass.Text == "")
    {
        MessageBox.Show("请输入密码!");
    }
    else
    {
        char[] array = this.textBox_Pass.Text.Replace(".", "-").Replace("7", "t").Replace("4", "a").Replace("1", "I").Replace("0", "o").Replace("O", "0").ToCharArray();
        Array.Reverse(array);
        string s = new string(array);
        s.ToUpper();
        char[] chArray2 = Convert.ToBase64String(Encoding.GetEncoding("UTF-8").GetBytes(s)).ToCharArray();
        Array.Reverse(chArray2);
        string str2 = new string(chArray2);
        string str3 = new string(Convert.ToBase64String(Encoding.GetEncoding("UTF-8").GetBytes(str2)).ToCharArray());
        if (str3 == "PTBpVGxSM1lqTWtVaE4yU0pOM1J2Qnph")
        {
            MessageBox.Show("密码正确!密码就是Key!", "成功");
        }
        else
        {
            MessageBox.Show("密码错误!", "失败");
        }
    }
}

  

字符转换:

小写字母o换成数字0

数字0换成大写0
_   .
t   7
a   4
I   1
 
PTBpVGxSM1lqTWtVaE4yU0pOM1J2Qnph
解密得到  =0iTlR3YjMkUhN2SJN3RvBza
逆序       azBvR3NJS2NhUkMjY3RlTi0=
解密得到  k0oGsIKcaRC#cteN-  
逆序       -Netc#CRacKIsGo0k  
最后变换得到key
key: .Netc#CR4cK1sG0Ok
 

 
 
逆向3:PE文件修复+异常的构造
 
经过分析我们只需在4010C2处构造一个异常即可,这里我构造了一个访问异常。
SetUnhandledExceptionFilter函数设置了一个对异常的处理,参数就是异常处理函数地址。
 
 
异常处理函数:
 
 key就是MessageBox弹出框的内容。
 
 
原文地址:https://www.cnblogs.com/Joy7/p/3230653.html