C#逆向教程(3)Switch Case(上)
本帖最后由 Dean 于 2014-10-20 14:04 编辑上节课讲了最常见的IF逻辑,这节课讲 SwitchCase
Switch Case有三种结构,大同小异
老样子,写一段C#代码编译出来,然后自己反,这样的学习过程如果有任何疑问,自己尝试修改源程序就能得到答案,最适合自学
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
switch (textBox2.Text)
{
case "Dean": MessageBox.Show("会员"); break;
case "Shark": MessageBox.Show("管理员"); break;
case "蜡笔小小新": MessageBox.Show("水军"); break;
}
}
}
}
1.大于等于(>=)、小于等于(<=)的判断用if语句,而等于(=)的判断用switch语句。
2.switch语句中的case类似于if…else…else if…else,但是离散值的判断。
3.switch一般都可以及用if重写,但是if不一定能用switch重写。
4.不要忘了break.C#中break不写是不行的,除了合并case的情况。
5.case 中的值必须是常量,不能是变量、表达式。
软件效果图
比较常见于软件注册版本的判断,个人版,企业版,标准版,增强版等等
把程序丢进RE(Reflector简称,之后的教程都简称RE)看看,如何把没权限逆向成管理员级别或者把会员权限逆向成管理员
定位到关键代码的方法参考上一课
咦,我们写的代码明明是Switch case,怎么变成IF嵌套了,因为这里RE工具是根据IL代码来还原C#代码,所以代码实现功能一致的情况下,工具是没办法完全还原的(这里不是每次都会变成IF)
我们打开插件来看IL代码
这里的逻辑结构是判断注册码,然后如果等于Dean跳20,Shark跳24,那么如果要修改会员的跳转到管理员只需要将序号10的brtrue.s代码跳转到24即可
如果想输入任意注册码都提示管理员又该怎么做呢?
修改方法和方案非常多,大家最好自己思考,这里提供一种我常用的方法,那就是把我选中的代码全部删除即可
NET删代码的时候一定要注意,随便删或者brtrue改br强制跳,都会导致程序错误无法运行的
等我忙完这几天,我一定回来好好看看楼主的作品!
C#逆向教程(2)的课件,能发上来吗
C#等于C代码么?
学习学习 [快捷回复]-学破解防逆向,知进攻懂防守! 谢谢大佬分享
页:
[1]
2