Dean 发表于 2014-10-20 13:59

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强制跳,都会导致程序错误无法运行的




Shark恒 发表于 2014-10-20 16:14

等我忙完这几天,我一定回来好好看看楼主的作品!

歪歪 发表于 2015-1-30 09:25

C#逆向教程(2)的课件,能发上来吗

若只如初见 发表于 2015-1-30 23:20

C#等于C代码么?

weiran324 发表于 2022-3-29 22:17

学习学习

MoeRay 发表于 2022-4-8 22:31

[快捷回复]-学破解防逆向,知进攻懂防守!

sherry5566 发表于 2022-4-8 23:01

别管我了行 发表于 2022-6-11 01:56

Wayne 发表于 2022-6-11 09:30

天使替我爱你 发表于 2022-6-11 23:17

谢谢大佬分享
页: [1] 2
查看完整版本: C#逆向教程(3)Switch Case(上)