RDPWrap 插件 INI文件 手動更新教程
原文鏈接 http://blog.iamli.cc/archives/181
RDPWrap可以突破windows下的遠(yuǎn)程桌面限制
安裝這一軟件非常簡單,只需在https://github.com/stascorp/rdpwrap/releases下載后運行install.bat
其中RDPWrap.ini存儲著不同windows版本下termsrv.dll常量所在的地址
本教程使用案例termsrv.dll 版本 10.0.17134.1
對于版本10.0.17134.1目前已經(jīng)支持,但本教程講演示如何找出INI中DWORD偏移值并支持該版本dll
首先我們提取DLL

用ida軟件或者CFF_Explore打開該dll,
如果可以加載’termsrv.pdb’將更加簡單找到偏移地址
尋找代碼段patch位置
修改函數(shù):CEnforcementCore::GetInstanceOfTSLicense
找到字符串”CEnforcementCore::GetInstanceOfTSLicense FAILED – License type me”
前面一個jz short就是,要改為jmp short
LocalOnlyPatch.x64=1
LocalOnlyOffset.x64=925D1
LocalOnlyCode.x64=jmpshort

修改函數(shù):CSessionArbitrationHelper::IsSingleSessionPerUserEnabled
可能會引起問題:(無需修改)
在Function窗口找到函數(shù):CSessionArbitrationHelper::IsSingleSessionPerUserEnabled
發(fā)現(xiàn)需要將xor edi, edi 改為 nop

在[PatchCodes]下添加
nopnop=9090
SingleUserPatch.x64=1
SingleUserOffset.x64=18B55
SingleUserCode.x64=nopnop
找到函數(shù)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
找到函數(shù)CSLQuery::Initialize位于180022E6C故設(shè)置
SLInitHook.x64=1 SLInitOffset.x64=22E6CSLInitFunc.x64=New_CSLQuery_Initialize
按Shift+F4打開Name窗口
搜索以下內(nèi)容
將最后的地址填入等號后面
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后面
根據(jù)bServerSku常量,可以找到CSLQuery::IsServerSku(int *)方法
在其上面一個cmp是bInitialized=F2430

在64位版本里bRemoteConnAllowed,bMultimonAllowed,ulMaxDebugSessions,bFUSEnabled 都是跟在bInitialized 后面。
然后根據(jù)找到的版本跟內(nèi)容添加到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
注意最后要加入一空行