RDPWrap 插件 配置手动更新教程

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

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

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

termsrv.dll 版本 10.0.17134.1

已修改的txt(2018-05-05更新)rdpwrap.ini

github上其他用户给出的修改方案:


[10.0.17134.1]
LocalOnlyPatch.x64=1
LocalOnlyOffset.x64=925D1
LocalOnlyCode.x64=jmpshort
SingleUserPatch.x64=1
SingleUserOffset.x64=18B64
SingleUserCode.x64=Zero
DefPolicyPatch.x64=1
DefPolicyOffset.x64=10E72
DefPolicyCode.x64=CDefPolicy_Query_eax_rcx
SLInitHook.x64=1
SLInitOffset.x64=22E6C
SLInitFunc.x64=New_CSLQuery_Initialize

;...
;[SLInit]
;...

[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

对于版本10.0.17134.1目前还未支持,本教程讲演示如何找出偏移值并支持该版本dll

用ida打开该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=BF0001000089B938060000909090
DefPolicyPatch.x64=1
DefPolicyOffset.x64=10E78
DefPolicyCode.x64=CDefPolicy_Query_edi_rcx

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

SLInitHook.x64=1
SLInitOffset.x64=22E6C
SLInitFunc.x64=New_CSLQuery_Initialize

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

bServerSku.x64 =F1378
lMaxUserSessions.x64 =F137C
bAppServerAllowed.x64 =F1380
bInitialized.x64 =F2430
bRemoteConnAllowed.x64=F2434
bMultimonAllowed.x64 =F2438
ulMaxDebugSessions.x64=F243C
bFUSEnabled.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=jmpshort
SingleUserPatch.x64=0
SingleUserOffset.x64=18B55
SingleUserCode.x64=nopnop
DefPolicyPatch.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

注意最后要加入一空行

发表评论

电子邮件地址不会被公开。 必填项已用*标注