【干货最多】逆向分析学生机房管理助手7.8随机进程名算法、极域U盘、网络、键盘限制

这篇具有很好参考价值的文章主要介绍了【干货最多】逆向分析学生机房管理助手7.8随机进程名算法、极域U盘、网络、键盘限制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

逆向分析7.8算法

先给个开幕雷击吧:

【干货最多】逆向分析学生机房管理助手7.8随机进程名算法、极域U盘、网络、键盘限制

这真不知道怎么评价好呢,学生机房管理助手上一个版本还是7.5,在11月23号这天直接跳到了7.8,咱也不知道它是有中间昙花一现的两个版本呢,还是避讳什么,必须跳版本。

说实话,在我满怀期待反编译它之后,一股酸劲涌满我全身:作者开摆了。为什么呢?

上一个版本分析(逆向分析学生机房管理助手7.5随机进程名算法)中,我最终是在main.exe的“退出程序”这个窗体中找到退出算法的,于是这个版本下载好,当然是首先用.NETReactorSlayer脱壳。

脱完之后,打开dnSpy,按照从前的套路,直接进入main.exe的Form3,根据“退出”这个按钮的点击事件,定位到了method_3()方法。找到熟悉的退出逻辑:

【干货最多】逆向分析学生机房管理助手7.8随机进程名算法、极域U盘、网络、键盘限制

核心逻辑和7.5版本相比,只更改了一处:此前筛选的程序名称长度必须是10,而在这个版本中只要长度大于等于4都符合条件。此外对字符范围的限制仍是100~109,实际测试也确实如此。

于是代码就出来了,只需要更改一处,我就不花费时间贴出来了,大伙自己到上一个版本的博客里找代码吧,改动两处即可。

如果就为了一个已经摆烂的作者写一篇博客也太闲了,我的作风也不是这样的,于是就有了接下来对极域的分析。

解极域U盘限制

极域有几个功能,这些功能真的很ex,这回我们挑他三太子出来吧。首先是U盘限制,有些时候你想要用U盘里一些资料,却很不幸地 get a pretty access denied 拒绝访问……是不是想揍人的心都有了?

解除这个限制有两种方法,但实际上都是对极域的文件驱动作操作。它的驱动叫TDFileFilter.sys,经过IDA Pro分析,它调用FltRegisterFilter()FltCreateCommunicationPort()等函数创建微型筛选器,对文件访问请求进行筛选,如果访问了U盘、CD光盘等,就会返回0xC0000022,转换成Win32错误值(RtlNtStatusToDosErrorNoTeb())就是0x5拒绝访问。

硬解禁

于是暴力的方法有了,就是直接停止并删掉这个驱动,使用cmd命令(这也是最简单的方法):

sc stop TDFileFilter
sc delete TDFileFilter

如果cmd被禁用了,还有powershell:

cd C:\Windows\System32\
.\sc stop TDFileFilter
.\sc delete TDFileFilter

用API就是这样的:

SC_HANDLE sc = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
SC_HANDLE hFilt = OpenService(sc, "TDFileFilter", SERVICE_STOP | DELETE);
SERVICE_STATUS ss = {};
ControlService(hFilt, SERVICE_CONTROL_STOP, &ss);
DeleteService(hFilt);
CloseServiceHandle(sc);
CloseServiceHandle(hFilt);

软解禁

极域的安装目录下有很多dll,其中大部分是依赖库,而以“LibTD”开头的那些dll则是极域的一些模块,它们有分工明确,后面的分析中我们都要用到它们。

而在它们之中有一个模块叫“LibTDUsbHook10.dll”,用IDA Pro看导出函数:

【干货最多】逆向分析学生机房管理助手7.8随机进程名算法、极域U盘、网络、键盘限制

里面的这些函数顾名思义都能知道它们的意思。其中TDUsbFilterInit()TDUsbFiltFree()TDUsbFilterDone()这三个函数就是我们需要的。依次查看它们实际执行了什么,再为我们所用,就是优雅地玩极域的最高境界。

反编译它们形成的伪代码如下:

HANDLE g_hPort;
HANDLE hObject;//这个有点迷惑,这俩玩意有啥关系?

BOOL TDUsbFilterInit()
{
  return hObject != (HANDLE)-1 || sub_10001410() == 0;
}

HRESULT sub_10001410()
{
  HRESULT result; // eax
  HRESULT v1; // esi
  char Buffer[260]; // [esp+0h] [ebp-108h] BYREF

  result = 0;
  if ( g_hPort == (HANDLE)-1 )
  {
    result = FilterConnectCommunicationPort(L"\\TDFileFilterPort", 0, 0, 0, 0, &g_hPort);
    v1 = result;
    if ( result )
    {
      memset(Buffer, 0, sizeof(Buffer));
      sprintf(Buffer, "FilterConnectCommunicationPort Fail: errCode is %d", result);
      OutputDebugStringA(Buffer);
      return v1;
    }
  }
  return result;
}


int TDUsbFiltFree()
{
  int InBuffer[4]; // [esp+0h] [ebp-10h] BYREF

  memset(&InBuffer[1], 0, 12);
  InBuffer[0] = 8;
  sub_100014A0(InBuffer);
  return 1;
}

HRESULT __stdcall sub_100014A0(LPVOID lpInBuffer)
{
  HRESULT v2; // esi
  DWORD BytesReturned; // [esp+0h] [ebp-10Ch] BYREF
  char Buffer[260]; // [esp+4h] [ebp-108h] BYREF

  if ( g_hPort == (HANDLE)-1 )
  {
    OutputDebugStringA("TDFileFilter.sys Connect Fail,g_hPort is INVALID_HANDLE_VALUE.");
    return -1;
  }
  else
  {
    BytesReturned = 0;
    v2 = FilterSendMessage(g_hPort, lpInBuffer, 0x10u, 0, 0, &BytesReturned);
    if ( v2 )
    {
      memset(Buffer, 0, sizeof(Buffer));
      sprintf(Buffer, "FilterSendMessage Fail: errCode is %d", v2);
      OutputDebugStringA(Buffer);
    }
    return v2;
  }
}


HANDLE TDUsbFilterDone()
{
  HANDLE result; // eax

  result = hObject;
  if ( hObject != (HANDLE)-1 )
  {
    result = (HANDLE)CloseHandle(hObject);
    hObject = (HANDLE)-1;
  }
  return result;
}

向极域过滤端口发送消息,驱动程序收到消息后以为是极域在操控它,就会放开限制。

从中(输出内容)还可以看出,极域程序员变量名起得还挺规范
里面有很多判断句柄是否有效的多余代码,其实实际上发挥作用的代码就这些:

#include <fltuser.h>
//LibTDUsbHook10.dll
//连接过滤端口(TDUsbFilterInit)
HANDLE hPort;
HRESULT hResult = FilterConnectCommunicationPort(L"\\TDFileFilterPort", 0, NULL, 0, NULL, &hPort);
if(hResult){
	//出错!一定要停止执行,不然会导致我们程序崩溃!
	//下面错误代码有助于判断错误原因
	//DWORD dwErrorCode = hResult & 0x0000FFFF;
	return;
}
//发送消息(TDUsbFiltFree)
int lpInBuffer[4] = {8, 0, 0, 0}; 
hResult = FilterSendMessage(hPort, lpInBuffer, 16/*0x10u*/, NULL, 0, NULL);
//关闭句柄(TDUsbFilterDone)
CloseHandle(hPort);

现在流传着所谓“极域解禁USB代码”,被偷到B站等地方为大众所知,事实上就是先LoadLibrary()加载LibTDUsbHook10.dll,然后调用这3个导出函数。现在,大伙知道原理如何了吧。

网络、键盘限制

待写,过几天再来看看吧~文章来源地址https://www.toymoban.com/news/detail-431772.html

到了这里,关于【干货最多】逆向分析学生机房管理助手7.8随机进程名算法、极域U盘、网络、键盘限制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 80.网游逆向分析与插件开发-背包的获取-自动化助手显示物品数据

    内容参考于: 易道云信息技术研究院VIP课 上一个内容:升级Notice类获得背包基址-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:3be017de38c50653b1d98bae6eb6db0fcff7bd54 代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-自动化助手显示物

    2024年01月25日
    浏览(45)
  • 63.网游逆向分析与插件开发-游戏增加自动化助手接口-自动化助手UI与游戏菜单的对接

    内容来源于: 易道云信息技术研究院VIP课 上一个内容:游戏公告类的C++还原-CSDN博客 码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:19a2828def451a280ee211c62dcd1074ed422054 代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-自动化助手UI与游戏菜单的对接.

    2024年02月02日
    浏览(43)
  • 【1.1,已适配机房助手7.5】更新中!淦翻极域、机房助手的超强软件,附代码思路

    本文内容仅供学习,不得用于商业用途,使用本工具造成的任何后果与本软件及其作者无关! 本软件最新版是1.2。传送门 源码也在内! 下载:https://wwt.lanzoub.com/b00pu06li 密码:bbzl GitHub:https://github.com/BengbuGuards/MythwareToolkit/ GitHub上的版本库持续更新中,欢迎星标以追踪更新!

    2024年02月06日
    浏览(52)
  • 70.网游逆向分析与插件开发-角色数据的获取-自动化助手UI显示角色数据

    内容参考于: 易道云信息技术研究院VIP课 上一个内容:利用技能点属性分析角色数据基址-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:367aa71f60b9c10ff47ca913a96d2a2ede76b389 代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-自动化助

    2024年01月18日
    浏览(43)
  • 某后台管理系统加密参数逆向分析

    在我们日常的渗透中经常会遇到开局一个登录框的情况,弱口令爆破当然是我们的首选。但是有的网站会对账号密码等登录信息进行加密处理,这一步不由得阻碍了很多人的脚步。前端的加解密是比较常见的,无论是 web 后台还是小程序,都常常存在加解密传输,签名防篡改

    2024年02月04日
    浏览(44)
  • C语言版----学生信息管理系统(分析+代码)

    一、分析系统功能设计 1. 初始化学生列表、教师列表 ·typedef struct student 先对学生结构体进行重定义,便于对相关数组取名 再初始化一个教室class,便于在后面的函数中调用学生信息 ·typedef struct teacher 先对教师结构体进行重定义,便于对相关数组取名 ·void inputtStu() 初始化三

    2024年02月09日
    浏览(47)
  • 【系统分析与设计】高校学生社团管理系统

    学生社团是高校内的一个以拓展学生业余兴趣爱好的组织。社团在大学生校园生活里起着关键作用,它不仅为学生们提供了一个尽情展现才华的舞台,还有效提高了学生自身的沟通能力、组织能力及团队协作能力。 高校社团文化日渐丰富,随之而来的是愈加繁琐的社团事务,

    2023年04月09日
    浏览(87)
  • 监控易机房运维大屏:打造高效机房管理的新标杆

        在当今这个数字化、信息化的时代,企业的运营离不开高效、稳定的IT系统的支持。而机房作为企业数据和业务的中心,其运维管理的效率和质量对于企业的运营至关重要。为了提升机房管理效率,许多企业选择使用监控易一体化运维管理软件。其中,监控易机房运维大

    2024年02月07日
    浏览(48)
  • 数据库课设:机房管理系统

    􀀂 实现机房、上机类型等基本信息的管理; 􀍅 􀀂 实现机器信息、管理人员信息的管理; 􀍅 􀀂 实现上机管理,包括机房名称、在用电脑信息、已上机时长和使用人员信息、    和各个机房空闲电脑数量等; 􀍅 􀀂 实现收费管理,包括机房电脑信息、计费信息、上机人

    2024年02月08日
    浏览(56)
  • 基于spark分析以springboot为后段vue为前端的大学生就业管理系统

    大学生就业管理系统是一个针对高校毕业生就业信息管理的有效工具,它能够帮助学校和学生更好地管理就业数据,提供数据驱动的决策支持。本文将介绍如何通过爬虫采集数据,利用Spark进行数据分析处理,再结合Spring Boot后端服务和Vue前端技术,搭建一个功能全面的大学生

    2024年04月23日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包