现在的开发人员安全意识还是薄弱,用c#写的还就加了一点点混淆。本文章分两部分,一是开启软件时的校验,二是绕过软件检测系统。重点强调!!!本文章只限于交流逆向技术用途,不提供成品下载!!
文件校验
在加载的时候按暂停,很容易能找到检查软件版本的位置
很明显是验证版本
跟下去之后很容易找到校验位置,应该是一个任务组,运行其中一个任务
一直跟下去,能找到这个线程组的线程函数,可以看到有校验的函数。补充一句,软件是若校验本地exe和dll与校验码不一致则重新下载
这里不再阐述如何修改,直接修改c# IL为Nop即可,上图最后有个needRestart,意思是更新软件重启,可见需要直接return,满足那个if条件。
修改后变这样,用dnspy保存即可
检测系统
当开着有通讯软件时会报错,显示要求关闭,甚至会发现是虚拟机,远程桌面等。
当显示提示的时候dnspy点暂停,很容易能找到相关位置
都叫monitorSystem了,明显A是检测函数,nop掉即可
继续分析
前面两部分其实已经够了,这里再分析一下流程,先获取了学生信息,videoMnager打开摄像头,连接一个鼠标按下的event
下图a函数应该是截图,查看电脑当前屏幕,有机会上传,另外那个B函数有机会是上传系统环境进程,这里调试不了,可能需要实际考试产能进入这个函数。
结果
可以看到打开qq,甚至是虚拟机的情况下都能正常运行。这里没有继续分析监考客户端是否有其他监控过程,所以就算你一意孤行打算作弊,也请你也自行斟酌带来的风险和后果。有时间研究逆向破解监考客户端,不如多花些时间学习!