欢迎光临散文网 会员登陆 & 注册

RDPWrap 插件 INI文件 手动更新教程

2021-07-15 15:58 作者:Rtyu000  | 我要投稿

原文链接 http://blog.iamli.cc/archives/181


RDPWrap可以突破windows下的远程桌面限制

安装这一软件非常简单,只需在https://github.com/stascorp/rdpwrap/releases下载后运行install.bat

其中RDPWrap.ini存储着不同windows版本下termsrv.dll常量所在的地址

本教程使用案例termsrv.dll 版本 10.0.17134.1

对于版本10.0.17134.1目前已经支持,但本教程讲演示如何找出INI中DWORD偏移值并支持该版本dll

首先我们提取DLL

用ida软件或者CFF_Explore打开该dll,

如果可以加载’termsrv.pdb’将更加简单找到偏移地址

寻找代码段patch位置

修改函数:CEnforcementCore::GetInstanceOfTSLicense

找到字符串”CEnforcementCore::GetInstanceOfTSLicense FAILED – License type me”

前面一个jz short就是,要改为jmp short

LocalOnlyPatch.x64=1

LocalOnlyOffset.x64=925D1

LocalOnlyCode.x64=jmpshort

修改函数:CSessionArbitrationHelper::IsSingleSessionPerUserEnabled

可能会引起问题:(无需修改)
在Function窗口找到函数:CSessionArbitrationHelper::IsSingleSessionPerUserEnabled

发现需要将xor edi, edi 改为 nop

在[PatchCodes]下添加

nopnop=9090

SingleUserPatch.x64=1

SingleUserOffset.x64=18B55

SingleUserCode.x64=nopnop

找到函数CDefPolicy::Query

.text:0000000180010E78 mov edi, [rcx+638h] .text:0000000180010E7E cmp ebx, edi .text:0000000180010E80 jz loc_18003AF9C

修改为

mov edi, 0x100; mov dword ptr [rcx + 0x638], edi; nop; nop; nop;

即在[PatchCodes]下添加

CDefPolicy_Query_edi_rcx=BF0001000089B938060000909090DefPolicyPatch.x64=1 DefPolicyOffset.x64=10E78 DefPolicyCode.x64=CDefPolicy_Query_edi_rcx

找到函数CSLQuery::Initialize位于180022E6C故设置

SLInitHook.x64=1 SLInitOffset.x64=22E6CSLInitFunc.x64=New_CSLQuery_Initialize

按Shift+F4打开Name窗口
搜索以下内容
将最后的地址填入等号后面

bServerSku.x64 =F1378lMaxUserSessions.x64 =F137CbAppServerAllowed.x64 =F1380bInitialized.x64 =F2430bRemoteConnAllowed.x64=F2434bMultimonAllowed.x64 =F2438ulMaxDebugSessions.x64=F243CbFUSEnabled.x64 =F2440

有些时候,pdb并不能正确加载,我们就需要采用另外的方法(参考https://github.com/stascorp/rdpwrap/blob/master/res/rdpwrap-ini-kb.txt)

在String窗口寻找第一个”Allow Multiple Sessions”

跳至其引用

最近后面一个cmp就是bServerSku常量的地址1800F1378

那么我们就可以知道lMaxUserSessions ,bAppServerAllowed ,因为这两个会跟在bServerSku后面

根据bServerSku常量,可以找到CSLQuery::IsServerSku(int *)方法

在其上面一个cmp是bInitialized=F2430

在64位版本里bRemoteConnAllowed,bMultimonAllowed,ulMaxDebugSessions,bFUSEnabled 都是跟在bInitialized 后面。

然后根据找到的版本跟内容添加到ini中

[PatchCodes] nopnop=9090 CDefPolicy_Query_edi_rcx=BF0001000089B938060000909090 [10.0.17134.1] LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925D1 LocalOnlyCode.x64=jmpshortSingleUserPatch.x64=0 SingleUserOffset.x64=18B55 SingleUserCode.x64=nopnopDefPolicyPatch.x64=1 DefPolicyOffset.x64=10E78 DefPolicyCode.x64=CDefPolicy_Query_edi_rcx SLInitHook.x64=1 SLInitOffset.x64=22E6C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17134.1-SLInit] bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440

注意最后要加入一空行



RDPWrap 插件 INI文件 手动更新教程的评论 (共 条)

分享到微博请遵守国家法律