zoukankan      html  css  js  c++  java
  • 一关于C#程序反编译讨论的帖子

    一关于C#程序反编译讨论的帖子
    最近做的题库系统做完了.我把程序打包后,并安装.我把连接数据库的用户名,IP地址,密码写在了配置文件里.并用DES加密用户名和数据库名字.  
    我的一个朋友在试我的程序,我看它用了一个反编译程序,一会就把我写的DES加密解密的方法弄出来了,关轻易得到了加密的KEY和向量.  
    结果.......就直接得到了我连接数据库的用户名和密码.  
        
      怎么C#的程序这么容易就能让人看到原代码啊.郁闷.  
      

    1 楼 C#确实比较容易被反编译~

    2 楼 谁叫微软有反编译工具那

    3 楼  2用代码混淆器,可以让别人反编译后看你的代码累一点,哈哈

    4 楼 每每对C#了解的越深,就越是感觉C#这东西没法用了。

    5 楼 没有办法啦,

    6 楼 用代码混淆器,只是看起来稍微累点,没解决根本问题,哈哈

    7 楼 哪大家做C/S结构程序时,如果隐藏连接数据库的用户名和密码.

    8 楼 这个问题与C#无关,任何编程语言都有这个问题,你把密码包含在程序或配置文件中交付给用户,无论你怎样做,都不可能绝对安全。

    9 楼 就算你是用C++写的程序,要破解也不是难事

    10 楼 服务器采用web   services,你本地连接服务器的web   services,那么本地就可以不用知道服务器的密码了。  
      

    11 楼 隐藏密码可以使用webservice处理数据

    12 楼 是这样的,兄弟,命苦不能怨政府

    13 楼 C#有个反编译工具,反编C#代码易如反掌,  
    不过只能反编大70%的代码。

    14 楼 但是我看大多数都能看到代码.如封装在类里的方法\类成员变量什么的,都看得见.  
        
      "隐藏密码可以使用webservice处理数据"  
      这个怎么处理,没有用过,能否讲讲?  
      

    15 楼 你用什么DES,没意义,白做了.无论你用什么加密算法,无论你的加密过程多么复杂.  
    你最终还是要以明文发送数据包去连接数据库吧?  
    只要截取了数据包下来分析一下就能知道SQL连接密码了.这个问题也跟开发语言无关,你用什么语言编写的程序都跟不过最后这一关.所以说是你的设计方案本身就有问题,还是建议你还Web   Services做

    16 楼 哦,楼上朋友的话说得很让我茅塞顿开阿。

    17 楼

    18 楼 当然还是要用Web   Services拉   偶们公司做的网上审批系统就是用的Web   Services   8然万一用户名和密码被人知道就可以随便批拉!~

    19 楼 这个跟C#没什么关系,你数据库用户名是写在配置文件里吗?  
    我们这里用的加密,是自己在原来的加密函数基础上,重新写的函数,调用函数需要密码的。要么反编译出来的结果会不正确。

    20 楼 有谁可以告诉我怎么截获数据包.

    21 楼 大家都说用Web   Services来做,但哪位能讲讲思路和方法,来个例子.

    22 楼 我知道,但是不告诉你,嘿嘿!!

    23 楼 我想告诉你,但是我不知道,嘿嘿!!  
      

    24 楼 webservice就是放在服务器的类,你在客户端调用这个类,进行操作,在VS中加入webservice就是web引用.

    25 楼 学习

    26 楼 做web,有了代码肯定就能知道密码,这个没办法的.

    27 楼 因为C#是与JAVA竞争,是作网络应用的,网络不存在反汇编,作WINFORM最好用C++

    28 楼 C++就不好破解了么?,一大堆的脱壳工具,一大堆的PE修改工具,在C++里面只要你把字符串写在类成员里,保证五分钟之类就给你找出来并改掉

    29 楼 今天看了一点关于"Web   Services"的东东,你们的意思是,在服务器端在Web   Services里写个类或者写个方法,把连接数据库用的东东放在里面,在客户端的WINFORM里调用这个方法,对不?  
      如果是这样,哪调用Web   Services里方法返回的值,能不能被得到,我知道有些软件是专门监听网络流的.

    30 楼

    31 楼 现在有什么不能被反编译的语言?!!呵呵

    32 楼 C++就是不能反编译啊,,只能反汇编吧?

    33 楼

    34 楼 楼主你没用过Reflector吧,没混淆的基本上源代码都能看得见的。

    35 楼 c/s为了保护数据库名用户和密码,你可以在数据库上开一个公用用户名,这个用户权限只给只读访问用户表,当客户端用此用户登陆数据库效验成功后,从数据库返回另一个用户名和密码,客户端再用具有新权限的用户名登陆使用,这样就不怕被反编译了.  
      此乃拙见,希望各位兄弟批评指正

    36 楼 楼上,截取数据的话,你的新用户名和密码一样会被看到

    37 楼 不知道用MD5加密可不可以

    38 楼 楼主随便看看cram-md5的rfc就可以搞定了

    39 楼 你的安全机制本身设计的就有问题

    40 楼 有一种办法可以解决既要以C/S方式直接登录数据库又不泄露数据库密码的问题。那就是用户登录系统时所用的密码就是登录数据库的密码,分发给用户的程序和配置文件不包含任何密码信息,数据库配置为使用安全连接,即使别人从网络上截获了数据包也无法知道所用的密码。麻烦之处在于需要为每个用户在数据库上建立一个账户。不过这个可以使用程序自动完成,数据库上也可以配置用户组来为每个数据库用户授予对表、视图或存储过程的访问权限。这个方案应该是比较安全的,建议采用。

    41 楼 连接数据库的密码中插几个韩文,日文字.或其他的希奇古怪的字符.呵呵.

    42 楼 混淆一下,加个壳,搞定

    43 楼 使用应用服务器不知行不行

    44 楼 加一个服务器验证   或者看看MAX   CODE

    45 楼 我测试过了   抓包   可以看到   数据   帐号   表名   SQL语句  
    但是就是看不到密码,密码自动被加密了的。  
    楼主   是把密码存在了程序里面   当然可以看到了。是通过破解程序或者反编译哈  
    通过抓包   还是看不到密码的  
    请问那位高手知道   用Sniffer抓包   可以看到密码的站出来探讨一下

    46 楼 但是就是看不到密码,密码自动被加密了的  
    密码肯定不会明文传送的,都是做了手脚再传送的。

    47 楼 可以用windows认证方式呀,这样不用写口令,直接管理服务器就可以了,适用于局域网上的程序(服务器最好是域服务器),对于互联网就采用Webservise就可以了。

    48 楼

    49 楼 楼上有人建议用户登录系统时所用的密码就是登录数据库的密码,我觉得这样也不行,如果这样,那么用户完成可以使用数据库的客户端来连接数据库,直接访问后台数据,这样完全可以避免应用系统的逻辑。而使用windows认证的方式,同样也有这个问题。我觉得,解决方法还是使用三层结构,使用应用服务器来达到安全的目的。其实webservise就是这样的解决思路。不过,同质系统其实没有必要使用webservise,效率比较低。

    50 楼 所以以后别用C#了

    51 楼 找混淆器吧.

    52 楼 混淆器管一点用。  
    要是用了   MaxtoCode   这款国人做的佼佼工具软件,就效果不一般了。  
    这款工具软件就是用来防止   .NET   软件被反编译的。http://www.maxtocode.com/  
    不过,楼主的安全机制本身有问题。加密的东西能这么做?  
    对称加密的密钥最好要在非对称加密后再传输,以供进行对称解密。

    53 楼 怎么知道一个文件是什么语言写的呢?

    54 楼 呵呵MD5加密是不能反編譯的。但你的代碼算法還是很容易被人獲知的!

    55 楼 数据库用户名密码没事丢到客户端去做什么?  
    你只要把服务器的ip和端口给客户端就好了  
    服务器与客户端全部通过tcp/ip通讯,跟数据库无关,绝对安全。

    56 楼  对于直接连数据库的CS应用程序,也只能这样了,如果要避免用户直接连数据库而绕过应用逻辑,其实也有办法,那就是把所有的应用逻辑都写进存储过程,用户只有访问存储过程,或读取表或试图的权限,没有写表的权限。传统的C/S模式就是这么做的。
  • 相关阅读:
    js 检测浏览器
    js获取url参数
    js 使用Math函数取得数组最大最少值
    js 取一定范围内的整数
    遍历文件夹内所有文件
    'weinre' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 解决方案
    解决图片缓存导致页面刷新无效果问题
    JAVA中的几种基本数据类型是什么,各自占用多少字节
    Mac终端git,svn提交代码步骤
    小程序分享链接功能
  • 原文地址:https://www.cnblogs.com/linmilove/p/1500891.html
Copyright © 2011-2022 走看看