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
找到函数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=jmpshort 注意最后要加入一空行 |
|
来自: songen2216 > 《待分类》