分享

RDPWrap 插件 配置手动更新教程

 songen2216 2020-11-10

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=1LocalOnlyOffset.x64=925D1LocalOnlyCode.x64=jmpshortSingleUserPatch.x64=1SingleUserOffset.x64=18B64SingleUserCode.x64=ZeroDefPolicyPatch.x64=1DefPolicyOffset.x64=10E72DefPolicyCode.x64=CDefPolicy_Query_eax_rcxSLInitHook.x64=1SLInitOffset.x64=22E6CSLInitFunc.x64=New_CSLQuery_Initialize;...;[SLInit];...[10.0.17134.1-SLInit]bServerSku.x64 =F1378lMaxUserSessions.x64 =F137CbAppServerAllowed.x64 =F1380bInitialized.x64 =F2430bRemoteConnAllowed.x64=F2434bMultimonAllowed.x64 =F2438ulMaxDebugSessions.x64=F243CbFUSEnabled.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=1LocalOnlyOffset.x64=925D1LocalOnlyCode.x64=jmpshort

修改函数:CSessionArbitrationHelper::IsSingleSessionPerUserEnabled

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

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

在[PatchCodes]下添加

nopnop=9090
SingleUserPatch.x64=1SingleUserOffset.x64=18B55SingleUserCode.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=1DefPolicyOffset.x64=10E78DefPolicyCode.x64=CDefPolicy_Query_edi_rcx

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

SLInitHook.x64=1SLInitOffset.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=9090CDefPolicy_Query_edi_rcx=BF0001000089B938060000909090[10.0.17134.1]LocalOnlyPatch.x64=1LocalOnlyOffset.x64=925D1LocalOnlyCode.x64=jmpshortSingleUserPatch.x64=0SingleUserOffset.x64=18B55SingleUserCode.x64=nopnopDefPolicyPatch.x64=1DefPolicyOffset.x64=10E78DefPolicyCode.x64=CDefPolicy_Query_edi_rcxSLInitHook.x64=1SLInitOffset.x64=22E6CSLInitFunc.x64=New_CSLQuery_Initialize[10.0.17134.1-SLInit]bServerSku.x64 =F1378lMaxUserSessions.x64 =F137CbAppServerAllowed.x64 =F1380bInitialized.x64 =F2430bRemoteConnAllowed.x64=F2434bMultimonAllowed.x64 =F2438ulMaxDebugSessions.x64=F243CbFUSEnabled.x64 =F2440

注意最后要加入一空行

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多