作者介绍:邓琳律师
专业领域:信息网络犯罪刑事辩护、控告、风险防控与合规
邓琳律师具有法学、计算机科学复合专业背景;担任过多家中大型上市科技集团的高级开发、技术管理人员,同时在法律+科技领域有过创业经历,专注于数字经济与网络领域的法律服务。
一、前言
近年来,随着公安机关技术认知的提高,对于信息技术类的犯罪打击力度有逐渐上升趋势,特别是涉及破坏、控制计算机系统等危害计算机信息系统安全的犯罪有严厉打击的趋势。目前在北大法宝上仅通过“外挂”关键字检索到的刑事案例就有3000多件。
开发、销售、使用外挂程序,是否构成犯罪不能简单来看,大部分需要对案涉外挂程序进行鉴定才能得出结论,但其中罪与非罪的辨析是比较专业的问题,一方面要懂的计算机技术才能理解外挂程序的实现原理,另一方面要懂刑法理论才能厘清被告人的行为是否达到定罪量刑的标准,这往往增加了司法人员的办案难度,相关冤案、错案时有发生,当然,这也给辩护律师提供了很大的辩护空间。下面我就通过一个常见的案例来对这个问题进行探讨。
二、案例
小王是一名程序员,在一旅游爱好者微信群里,了解到某地区热门景区门票十分难抢,由于这些门票都是通过手机App分发,为了抢到门票,小王制作了一个自动完成购买门票操作的脚本程序,一旦门票开始分发,小王的程序1秒之内就能完成购票操作。
后来小王把抢票的经历分享到微信群内,一家旅行社老板联系到小王,说如果能帮他批量抢票,他可以按照门票出售价格的30%给小王提成,还给小王画饼,说一个月至少可以赚10万。小王幸然答应,并将脚本程序进行了优化,只要提供客户的身份信息和手机号,就能批量完成抢票操作,通过这种模式,小王一个月就挣了20万,正当小王准备大展拳脚,就被警察找上门了。经过调查发现,小王的脚本程序只是模拟人工操作就实现了抢票功能,最终公安机关认为小王不存在犯罪行为,予以释放。
三、外挂程序在技术上的分类
要想理解外挂程序是否构成犯罪就需要对外挂的实现原理有一定的理解,经常做外挂的朋友都知道,外挂程序从实现原理上可以分为以下几种技术类型:
1,模拟挂
模拟挂是以按键精灵为代表的一类,他本质上不进入游戏内部,只是在外围通过识别游戏图片、文字等界面元素方式来模拟人的点击操作,按键挂一般分为前台按键和后台按键,其中前台按键是操作鼠标实现指针移动到指定位置进行点击,所以必须保持游戏窗口一直在前台,而后台按键则不然,采用窗口消息,在代码中使用操作系统API向游戏窗口发送点击指令,从而实现窗口内部点击,那么这种模式,即时你窗口最小化也没有关系,更适合做窗口多开情况下的点击,举个例子,在角色扮演游戏中,你点鼠标砍了怪一下,那么在外挂的处理中,就是通过图形识别出怪的位置,用鼠标左键在怪身上模拟点击,从而使得人物跑到怪身边挥刀一砍。
2,内存挂
这种外挂制作技术难度比较高,需要精通计算机原理和较强的编程功底。他一般通过一些客户端调试工具,对游戏的主程序以及载入的模块进行动态追踪调试,一般称作找基址、找CALL,其实就是找某个数值或者某个功能,例如在RPG游戏中,你点鼠标砍了怪一下,那么如果是内存挂,就首先要找怪物在内存中的数据,例如怪物的编号、怪物的坐标、怪物的血条等等数值,然后通过调试工具找出打怪这个功能函数所在的代码段,当然都是反汇编的ASM代码,找到以后,通过一些工具进行测试,看是否正常,最后对整个外挂设计脚本流程。根据不同的用户需求自动调用各个不同的游戏主程序中的功能函数,从而实现作弊或者自动完成游戏操作,一般内存挂都会将主文件封装成模块,然后用一切办法让游戏启动的时候加载起来,这样,内存挂就变成了游戏的一部分,都是内部调用,一般体现形式是游戏一启动以后,会多出一个外挂窗口,可以设置修改各种参数。
3,封包挂
这是是比较高端的一种模式,需要精通计算机网络通信技术。由于游戏的客户端与服务器之间随时都在同步数据,那就可以用封包(传输的数据)截取软件(例如WPE)截取封包,拿到封包数据以后对数据结构进行分析和破译。同样的,拿砍怪来说,游戏在调用了砍怪的功能函数之后,他最终必须将砍怪的结果发给服务器,而这个结果才是重中之重,一旦破解了封包的数据结构,就可以模拟封包,然后修改和伪装封包,向服务器发送伪造的数据,从而达到作弊的效果。
当然,一个优秀的外挂必然不会单纯的只用到其中一项技术,往往是通过多种技术混合来实现外挂的功能,这就大大增加了案件的办理难度,甚至都无法进行鉴定。
四、外挂程序罪与非罪的辨析
不是所有的制作外挂程序的行为都会构成犯罪,但由于办案人员对于计算机技术和外挂程序的实现原理理解不足,常常会导致对案涉外挂程序的法律定性存在偏差,所以需要将每一个涉及的罪名结合外挂程序实现原理分别分析,从而厘清辩护思路。
1,提供侵入、非法控制计算机信息系统的程序、工具罪
外挂程序的开发销售人员是否构成该罪,主要的难点在于这两个方面的认定:
一是外挂程序是否具有避开或者突破安全保护措施的功能,二是外挂程序是否在未经授权的情况下提供了非法获取计算机系统数据和非法控制计算机信息系统的功能。
比如外挂程序中,单纯只是获取普通用户能看到的目标程序的界面元素,然后根据界面元素的数据来模拟人的点击操作,因为这些数据的获取并不需要绕开系统的安全保护措施,模拟操作是调用的操作系统层面的API,根本不涉及是否需要授权的问题。
但如果是通过破解目标程序对内存数据或者通信报文中的加密算法,来获取或修改客户端程序以及服务器中的数据,则可能涉及非法获取计算机信息系统数据和非法控制计算机信息系统。
比如,在第一人称射击游戏中,普通用户无法看到被物体遮挡的敌方玩家,但外挂程序通过破解获取游戏内存中或者通信封包中敌方玩家的坐标信息,再通过侵入客户端程序代码绘制出敌方玩家人物的边框来达到透视的效果,则有很大可能符合构成该罪的要素。
追诉量刑
本罪的追诉量刑标准并不以是否牟利来判断。比如,我开发一款涉嫌犯罪的外挂程序后,为了把我的游戏公会发展壮大,免费给我游戏公会的小伙伴们使用,只要使用人次达到“情节严重”的情形,公安机关依然可以进行追诉,因为本罪所保护的法益是计算机信息系统的安全。
2,非法获取计算机信息系统数据罪、非法控制计算机信息系统罪
制作外挂程序出事的,几乎都是规模化、产业链、集团犯罪的情形,他们往往有比较明确的分工,比如技术人员、销售人员、游戏工作室等角色。而最容易出事的环节就是使用外挂的游戏工作室,因为他们对游戏环境有较大的破坏性影响,容易被运营厂商控告。公安机关顺藤摸瓜,才能把产业链上的所有人员找到。如果案涉外挂程序有非法获取计算机系统数据和非法控制计算机信息系统的功能,则使用外挂的人,很有可能构成非法获取计算机信息系统数据罪、非法控制计算机信息系统罪,从而导致相关的开发、销售人员涉嫌提供侵入、非法控制计算机信息系统的程序、工具罪。
所以提供程序、非法获取和非法控制几个罪名有较强的关联性,实践中,最主要的辩护方向往往就是案涉程序是否存在非法获取计算机信息系统数据的功能以及非法控制计算机信息系统功能两个方面。一旦案涉程序不存在这两个问题,那整个链条上的人都将不构成犯罪。
3,"非法"的认定和”计算机信息系统”的认定是入罪的关键
a) ”计算机信息系统“是什么
根据《关于办理危害计算机信息系统安全刑事案件应用法律若干问题的解释》第十一条第一款规定,本解释所称“计算机信息系统”和“计算机系统”,是指具备自动处理数据功能的系统,包括计算机、网络设备、通信设备、自动化控制设备等。
可见本罪所指的计算机系统是指自动处理数据功能的系统,那么能否将客户端程序解释为自动处理数据功能的系统?
比如,仅仅对客户端程序内存数据进行修改和获取就实现了外挂功能,没有伪造封包数据发送给服务器,恐怕不宜认定为控制了整个计算机信息系统。
使用CE修改器修改游戏内存数据
b)"非法"的认定
从法条上理解,“非法”的定义为,违反国家规定,“侵入”计算机信息系统或采用其他技术手段获取、修改、增加数据,从技术的角度来讲,其实核心的问题就是在于有没有超出用户账号的授权范围或者绕开系统的安全保护措施来获取、修改、增加数据。
客户端中的数据都是用户登陆以后正常获取以及发送的数据,用户在自己的计算机上对这些数据进行破译和修改能否认定为超出用户账号权限或者绕开系统的安全保护措施?比如,在分析封包数据时未采用木马程序等黑客手段对游戏服务器进行攻击以达到分析数据结构的目的,仅仅通过对客户端程序的源代码进行逆向分析就实现的,恐怕不宜认定为“非法”侵入了整个计算机信息系统。
4,鉴定报告分析
案涉外挂程序的鉴定报告对于案件结果的影响十分重要,但鉴定人员不一定会十分详细的分析案涉外挂程序实现原理,有时候遇到不理解的地方可能会模糊的作出结论,作为辩护律师则需要仔细分析鉴定报告:
a)对外挂程序的实现原理的描述是否与当事人陈述的一致;
b)对外挂程序功能的描述与实际程序运行起来的是否一致;
c)要看鉴定人员对案涉程序的评价是否符合法律规范、是否达到了构成犯罪的程度。
五、总结
严格来说,大部分的“外挂”程序是非常难认定为犯罪的,但由于很多司法办案人员的认知问题或者因为利益相关的单位或人员强势控告,粗暴地认为只要有破坏案涉程序的行为,就想给人安一个罪名,违反了罪刑法定原则,所以相关从业人员,一定要做好法律风险的把控,如果有什么疑惑,欢迎私信交流。