查看: 2729|回复: 16

.NET逆向基础(1)

  [复制链接] TA的其它主题

升级   100%

  • TA的每日心情
    慵懒
    2021-11-13 19:34
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    6

    主题

    155

    回帖

    2861

    积分

    管理员

    CMs

    积分
    2861

    最佳新人活跃会员灌水之王陌辞云用户

    发表于 2021-9-20 10:53:01 | 显示全部楼层 |阅读模式 来自 河南省安阳市 联通

    登录后享用更多功能

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    0x1:
             说到.net逆向,大家首先想到一定是反编译。反编译有个弊处就是"不入此门,不得此道",意思就是如果你不懂这门语言,反编译出来代码也看不懂,那么.net能像易语言、C++那样反汇编么,答案是能的。如C#、VB等依赖于.net环境的高级语言在将代码编译成托管代码时,编译器将源代码翻译为Microsoft中间语言(MSIL)简称IL语言,也可以称作IL汇编语言,市面上一些.NET逆向反编译工具如dnspy、Reflector、dotPeek等都具备将IL语言翻译为源代码的功能,也就是说可以将反编译出来的源代码回滚成IL语言,我们只需要修改IL指令便可做到同OD一样修改汇编指令的效果。

    0x2准备:
            dnspy或Reflector        (这里我准备了IL跳转指令图文):
    跳转指令.png
           (这里我自己写了个小玩意,问题不大)
    doNet逆向基础课件.exe (12.5 KB, 下载次数: 1)
    E2QO@{LY4[CMS0O45(%Q37Q.png [G]AN4ZAQ9LQ3N[U6}X[U2N.png

    0x3入坑
          这里以C#为例将文件拖进dnspy,右键模块转到入口点,然后我们会看到程序的主窗口Form1,点击进入来到下图界面

        然后我们在左边的程序集资源管理器中展开Form1,找到button1_Click(按钮1_被点击)后会看到
    1. try
    2.         {
    3.                 string text = File.ReadAllText("C:\\nx.txt");
    4.                 string[] array = text.Split(new char[]{'|'});
    5.                 bool flag = this.textBox1.Text == array[0] && this.textBox2.Text == array[1];
    6.                 if (flag)
    7.                 {
    8.                         MessageBox.Show("登录成功!");
    9.                 }
    10.         }
    11.         catch
    12.         {
    13.         }
    复制代码
       然后我们看到if的上方有个bool类型(真假)的判断,可以看到这行代码就是判断账号和密码是否正确的
    1. bool flag = this.textBox1.Text == array[0] && this.textBox2.Text == array[1];
    复制代码
      接下来,右键模块点击编辑IL指令
    7B0@@@V@`AF[0HZ11IZ%>.png
       是不是感觉有点OD的内味了?仔细看就会发现"登录成功"上方39 (005B) nop的操作码brfalse.s,其中false翻译过来就是假,操作符中的005B就是变量为假时要跳转到的偏移,但是我们不能让他跳转。false的反义词是什么?true(真),所以我们可以将brfalse.s换成brtrue.s,点击确定后代码的变化如下
    1. string text = File.ReadAllText("C:\\nx.txt");
    2.                 string[] array = text.Split(new char[]
    3.                 {
    4.                         '|'
    5.                 });
    6.                 if (!(this.textBox1.Text == array[0]) || !(this.textBox2.Text == array[1]))
    7.                 {
    8.                         MessageBox.Show("登录成功!");
    9.                 }
    复制代码
       那么新的问题又来了,为什么点击后没反应呢?我们可以看到账号和密码是从文件nx.txt中读取出来的,这种根据文件路径读取如果没找到文件是会报错而不是返回假,因为try、catch的缘故没有提示报错,上面的代码我们看不懂也不知道写到文件中的格式,怎么办?我们可以从注册账号的地方下手!
    那么如此我们可以Ctrl+Z撤销之前的操作
    0x4分析程序

       得到确定了方向后,我们看向程序资源管理器中的"注册ToolStripMenuItem_Click",进入后会看到第二个窗口From2,跟进去会看到如下
    (SGIF}87MI0}UN]A@%}$U.png
       往下翻会看到以下代码
    1. private void button1_Click(object sender, EventArgs e)
    2.                 {
    3.                         File.Delete("C:\\nx.txt");
    4.                         this.IDleng = this.cpuid.Length;
    5.                         bool flag = this.textBox1.Text.Length < this.IDleng || this.textBox1.Text.Length > this.IDleng;
    6.                         if (flag)
    7.                         {
    8.                                 MessageBox.Show("格式不正确");
    9.                         }
    10.                         else
    11.                         {
    12.                                 bool flag2 = this.textBox1.Text == this.cpuid;
    13.                                 if (flag2)
    14.                                 {
    15.                                         File.WriteAllText("C:\\nx.txt", this.textBox2.Text + "|" + this.textBox3.Text);
    16.                                         MessageBox.Show("注册成功");
    17.                                 }
    18.                         }
    19.                 }
    复制代码
      如此我们就到达目的地了,接下来说一下上面IL跳转指令里没有的指令"br"和“br.s”无条件跳转,相当于jmp。所以我们要做的是跳出没用格式判断,右键编辑IL指令
    1. 20        0045        ldarg.0
    2. 21        0046        ldfld        int32 doNet逆向基础课件.Form2::IDleng
    3. 22        004B        cgt
    4. 23        004D        br.s        25 (0050) stloc.0
    5. 24        004F        ldc.i4.1
    6. 25        0050        stloc.0
    7. 26        0051        ldloc.0
    8. 27        0052        brfalse.s        34 (0063) ldarg.0
    9. 28        0054        nop
    10. 29        0055        ldstr        "格式不正确"
    11. 30        005A        call        valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string)
    12. 31        005F        pop
    13. 32        0060        nop
    14. 33        0061        br.s        59 (00B5) ret
    15. 34        0063        ldarg.0
    16. 35        0064        ldfld        class [System.Windows.Forms]System.Windows.Forms.TextBox doNet逆向基础课件.Form2::textBox1
    复制代码
       我们可以清楚的看到ldstr"格式不正确"上方的brfalse.s判断,把它换成br.s。往下翻会看到
    1. 40        0079        stloc.1
    2. 41        007A        ldloc.1
    3. 42        007B        brfalse.s        59 (00B5) ret
    4. 43        007D        nop
    5. 44        007E        ldstr        "C:\\nx.txt"
    6. 45        0083        ldarg.0
    7. 46        0084        ldfld        class [System.Windows.Forms]System.Windows.Forms.TextBox doNet逆向基础课件.Form2::textBox2
    8. 47        0089        callvirt        instance string [System.Windows.Forms]System.Windows.Forms.Control::get_Text()
    9. 48        008E        ldstr        "|"
    10. 49        0093        ldarg.0
    11. 50        0094        ldfld        class [System.Windows.Forms]System.Windows.Forms.TextBox doNet逆向基础课件.Form2::textBox3
    12. 51        0099        callvirt        instance string [System.Windows.Forms]System.Windows.Forms.Control::get_Text()
    13. 52        009E        call        string [mscorlib]System.String::Concat(string, string, string)
    14. 53        00A3        call        void [mscorlib]System.IO.File::WriteAllText(string, string)
    15. 54        00A8        nop
    16. 55        00A9        ldstr        "注册成功"
    17. 56        00AE        call        valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string)
    18. 57        00B3        pop
    19. 58        00B4        nop
    20. 59        00B5        ret
    复制代码
       接下来通过分析序号46-52的操作符,可以盲猜文件中的格式是Text+|+Text("账号|密码"),然后把序号42的brfalse.s替换为brtrue.s点击确定后源码变化如下
    1. File.Delete("C:\\nx.txt");
    2.                         this.IDleng = this.cpuid.Length;
    3.                         bool flag = this.textBox1.Text.Length < this.IDleng || this.textBox1.Text.Length > this.IDleng;
    4.                         flag;
    5.                         if (!(this.textBox1.Text == this.cpuid))
    6.                         {
    7.                                 File.WriteAllText("C:\\nx.txt", this.textBox2.Text + "|" + this.textBox3.Text);
    8.                                 MessageBox.Show("注册成功");
    9.                         }
    复制代码
      左上角文件选项保存模块后F5运行测试
    A%HE9E01DVK7Z(9K1@A9}7S.png
       很好注册成功了,我们跑到C盘会发现多了个nx.txt,内容为123|456,证实了我们的猜测。接下来退出调试打开文件登录一下
    W``L}BTZ[{)LP[6X)7F8@(C.png
       成了!以上就是全部内容,大家可自行测试,如果有什么说的不对的地方还请大佬们明示

    评分

    参与人数 1陌辞币 +100 收起 理由
    sky + 100

    查看全部评分





    上一篇:Windows 激活工具 (支持智能激活,kms激活,数字激活,oem)
    下一篇:论坛一教学程序逆向教程

    相关帖子

    我就是我,何必在意他人的看法
    CDKEYPlus

    升级   100%

  • TA的每日心情
    慵懒
    2021-11-13 19:34
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    6

    主题

    155

    回帖

    2861

    积分

    管理员

    CMs

    积分
    2861

    最佳新人活跃会员灌水之王陌辞云用户

     楼主| 发表于 2021-9-20 11:02:32 | 显示全部楼层 来自 河南省安阳市 联通
    昨天弄了个工具包,工具有点少凑合用界面如下
    TXHB%~FES}UGCA1VLUH63HT.png
    百度网盘:
    链接:https://pan.baidu.com/s/1MyPncbxd0EUouoCsYVdw8w
    提取码:0p88
    我就是我,何必在意他人的看法
    CDKEYPlus
    回复 支持 反对

    使用道具 举报

    升级   0%

  • TA的每日心情
    开心
    2022-9-10 09:59
  • 签到天数: 36 天

    [LV.5]常住居民I

    36

    主题

    416

    回帖

    3814

    积分

    新手上路

    积分
    3814

    活跃会员灌水之王突出贡献优秀版主督查组员最佳新人热心会员陌辞云用户

    QQ
    发表于 2021-9-20 13:11:42 | 显示全部楼层 来自 重庆市 移动

    回帖奖励 +10 陌辞币

    啥也不说了,楼主就是给力!
    陌辞论坛:bbs.moci6.com - 优秀原创技术资源分享交流社区
    CDKEYPlus
    回复 支持 反对

    使用道具 举报

    升级   71.15%

  • TA的每日心情
    开心
    2021-12-5 16:04
  • 签到天数: 34 天

    [LV.5]常住居民I

    6

    主题

    360

    回帖

    2423

    积分

    高级会员

    积分
    2423
    发表于 2021-9-20 18:26:10 | 显示全部楼层 来自 四川省成都市 电信

    回帖奖励 +10 陌辞币

    我就勉为其难的看看吧!
    陌辞论坛:bbs.moci6.com - 优秀原创技术资源分享交流社区
    CDKEYPlus
    回复 支持 反对

    使用道具 举报

    升级   100%

  • TA的每日心情

    6 天前
  • 签到天数: 36 天

    [LV.5]常住居民I

    34

    主题

    290

    回帖

    9557

    积分

    管理员

    积分
    9557

    3周年纪念勋章虎年吉祥勋章陌辞网络荣誉会员2022北京冬奥会纪念勋章国庆勋章最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老督查组员陌辞云用户

    QQ
    发表于 2021-9-21 08:39:17 来自手机 | 显示全部楼层 来自 安徽省 移动数据上网公共出口

    回帖奖励 +10 陌辞币

    膜拜高质量技术帖,望继续努力
    陌辞论坛:bbs.moci6.com - 优秀原创技术资源分享交流社区
    CDKEYPlus
    回复 支持 反对

    使用道具 举报

    升级   100%

  • TA的每日心情
    难过
    2021-11-5 16:56
  • 签到天数: 30 天

    [LV.5]常住居民I

    10

    主题

    174

    回帖

    870

    积分

    禁止访问

    积分
    870
    发表于 2021-9-24 19:12:13 | 显示全部楼层 来自 浙江省宁波市 移动

    回帖奖励 +10 陌辞币

    提示: 作者被禁止或删除 内容自动屏蔽
    陌辞论坛:bbs.moci6.com - 优秀原创技术资源分享交流社区
    CDKEYPlus
    回复 支持 反对

    使用道具 举报

    升级   4.55%

  • TA的每日心情

    2023-2-1 15:46
  • 签到天数: 43 天

    [LV.5]常住居民I

    3

    主题

    165

    回帖

    1091

    积分

    高级会员

    积分
    1091

    2022北京冬奥会纪念勋章虎年吉祥勋章陌辞云用户

    发表于 2021-9-24 19:32:55 | 显示全部楼层 来自 广东省韶关市 移动

    回帖奖励 +10 陌辞币

    我就喜欢楼主这种风格!
    陌辞论坛:bbs.moci6.com - 优秀原创技术资源分享交流社区
    CDKEYPlus
    回复 支持 反对

    使用道具 举报

    升级   45.57%

  • TA的每日心情
    慵懒
    2021-12-25 08:07
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    4

    主题

    78

    回帖

    619

    积分

    中级会员

    积分
    619
    发表于 2021-9-26 22:59:51 | 显示全部楼层 来自 山东省济宁市 电信

    回帖奖励 +10 陌辞币

    看帖看完了至少要顶一下,还可以加入到淘帖哦!
    陌辞论坛:bbs.moci6.com - 优秀原创技术资源分享交流社区
    CDKEYPlus
    回复 支持 反对

    使用道具 举报

    升级   13.65%

  • TA的每日心情

    2022-8-15 14:40
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    12

    主题

    291

    回帖

    1273

    积分

    高级会员

    积分
    1273
    QQ
    发表于 2021-9-27 12:14:56 | 显示全部楼层 来自 安徽省合肥市 电信

    回帖奖励 +10 陌辞币

    幻苍秋 发表于 2021-9-20 11:02
    昨天弄了个工具包,工具有点少凑合用界面如下

    百度网盘:

    我百度网盘下不了,能不能搞个蓝奏的【卑微】
    陌辞论坛:bbs.moci6.com - 优秀原创技术资源分享交流社区
    CDKEYPlus
    回复 支持 反对

    使用道具 举报

    升级   69.57%

  • TA的每日心情
    擦汗
    2023-2-2 17:57
  • 签到天数: 39 天

    [LV.5]常住居民I

    2

    主题

    148

    回帖

    787

    积分

    中级会员

    积分
    787
    发表于 2021-9-30 22:21:39 | 显示全部楼层 来自 上海市 移动

    回帖奖励 +10 陌辞币

    还是我的c++好玩
    陌辞论坛:bbs.moci6.com - 优秀原创技术资源分享交流社区
    CDKEYPlus
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    陌辞论坛上一条 /1 下一条

    客服中心

    3043201373

    Copyright   ©2018-2021  陌辞论坛  Powered by © 陌辞论坛 萌ICP备20220968 MySSL.Top安全认证  |网站地图|Sitemap

    快速回复 返回顶部 返回列表