Няколко rdp сесии в xp. Как да активирате множество едновременни връзки или сесии с отдалечен работен плот в Windows XP

Няколко rdp сесии в xp.  Как да активирате множество едновременни връзки или сесии с отдалечен работен плот в Windows XP
Няколко rdp сесии в xp. Как да активирате множество едновременни връзки или сесии с отдалечен работен плот в Windows XP

За да коригирате нови версии (ако логиката на съответния кодов раздел не се е променила значително), трябва да направите следното:

0. Инструкцията е подходяща за повече или по-малко образовани и най-важното, бързи специалисти, които могат да мислят. Тези, които са свикнали да "копират" всичко с Copy / Paste, мисля, че няма да могат да се справят и ще раждат "стенове" и "оплаквания", че "много букви", "трудно" или "не е силно" поради повече страхове и стереотипи на мислене, отколкото сложността на проблема. Това е техният дял. Роден да пълзи, както знаете, не може да лети. Не позволявай да изсъхнеш, Анон! Пийте Iada или правете БИЗНЕС и започнете да се уважавате!

1. Изтеглете всеки - платен или безплатна версияХю
Подходящи са дори много древни версии от 90-те, но ако трябва да закърпите x64, тогава имате нужда от 8.x (започвайки от средата на 2000-те :)) По-добре, разбира се, да вземете нов. Авторът разработва продукта в продължение на 25 години и има малко други толкова съвършени творения на уменията на програмиста.

2. Вземете wordsrv.dll от някоя поддържана версия - оригинална и пачвана версия. Ако няма закърпен такъв, разумно е да се предположи, че трябва да се закърпи със съществуващ пачър, не бъдете глупави! Започнете да мислите! всичко необходими файловепоставете в отделна папка или папки. Няма нужда да се опитвате да редактирате нещо на едно копие в system32. Все пак НИЩО НЯМА ДА РАБОТИ (вписването е блокирано в system32) и само овцете правят това.

3. Сравнете версиите с корекция и тези без корекция на една и съща dll, като използвате който и да е инструмент за сравнение на двоични файлове. Пакетът Windows включва помощната програма за конзолата FC. Командата “FC /b Termsrv.org Termsrv.crk > differences.txt” води до печалба. Списъкът с разликите, а той е малък, дълъг 20 реда, ще отиде във файла differences.txt
Отваряне на файла текстов редактори или го оставяме отворено, или го пренаписваме на лист хартия, от който и до кое отместване са променени байтовете. Веднага се задълбочаваме и разбираме, че всички отмествания и стойности на байтове, както по-долу в Hiew, са посочени в шестнадесетичната система, но това не трябва да „плаши“ никого, защото дори не е необходимо да преобразувате в десетична! (В случай, че имате нужда, за общо развитие- винтов калкулатор за помощ.)

В списъка виждаме (идентифицираме) 3 условни блока, където адресите са в един ред. Първият блок е 2 байта в самото начало на exe, при отмествания 140-с-нещо-h (dll има същия формат като exe, единствената разлика е, че съдържа само процедури и функции за външно повикване - т.н. наречен експорт, следователно няма да е възможно да го изпълните директно чрез преименуване на exe). Това са данните, търсенето на отместване попада в заглавката на exe файла. Тези отмествания съхраняват контролната сума на кода-данни (без заглавка), която Windows проверява преди стартиране, като се уверява, че файлът не е повреден и че нещо няма да се срине, съответно, когато се опита да го изпълни. Ще се върнем към тях по-късно.
Това е последвано от блок за промяна от приблизително 10 байта. Точно това ще изучаваме. След него има още един блок с промени - 6-те най-нови байта на изпълнимия файл. Изводът е, че вместо „нули“ авторът е забил звучното си име „deepxw“ в празното място в края. Нисък поклон пред него за лепенката и идеята, но няма особена причина да повтаряме неговите "извивки" при прехвърлянето на лепенката, така че желаещите могат да го направят сами, които нямат какво да правят в дългите зимни вечери като част от проучването „Поставете обикновени букви на празни места в exe файлове с помощта на Hiew. Това обаче може да се приеме като почит към автора (просто там никой не чете „там“).

3. Отворете оригиналната dll в един прозорец на Hiew, закърпената в друг (пуснете 2 копия на Hiew! Като цяло е много по-удобно да използвате Far - две неща като файлов мениджър и основа за стартиране на "тези" Hiews ). И в двете натиснете F4 (Mode) и изберете Decode (F3). Ще видим разглобено парче от файла от самото начало. Там няма какво да гледате, защото Hiew се „опитва“ да разглоби заглавката на EXE файла и това са данни, а не код. Няма какво да зяпаш, х-че ти го показва, което е напълно нормално, защото тук трябва да МИСЛИШ, а не да “копираш”! Отново отиваме и започваме да мислим, че няма нужда да опитваме глупаво и буквално да следваме инструкциите ...

4. В двата Hiews (на свой ред, по дяволите, мислим ...) натиснете F5 (Goto) и вижте, че полето за въвеждане се е появило в горната част. Там въвеждаме адреса на първата разлика (от ВТОРИЯ БЛОК!), намерена във файла на разликите. НАПРИМЕР в Win7SP1x86Rus това са адреси около 19100h, а във VistaSP2Eng (x86 или x64 - xs), както видях в блога на автора - адреси около 65200h. Стигаме до мястото на първия коригиран байт.

Данните в този прозорец на Hiew изглеждат така:
- В първата колона - шестнадесетично отместване - от началото на файла, или в паметта на процеса - зависи от режима Hiew, избран от Alt-F1 (Global-Local). По подразбиране се показва Local = като в паметта, ако Hiew може да разбере формата на кодовите данни. В нашия случай това не представлява проблем, тъй като форматът на exe файла му позволява лесно да „разбере всичко“. Следователно не трябва да се страхувате да видите 06F2F8D51 там вместо въведеното 19153. Адресирането на паметта е важно за разбирането на адресирането на процеса, как ще изглежда при изпълнение, подходящо за анализ на кода, ако има такъв.
– Във втората колона има шестнадесетично представяне на код-данни с разбор кой код и кои данни се отнасят към коя инструкция. Следователно всяка линия има различна дължина. Показано е само за ваше удобство. „Всъщност“ (C) в самия файл всички те са „слепени“ заедно в един ред, което можете да видите в „простия“ изглед на шестнадесетични данни (F4-> Hex), където шестнадесетичните байтове се показват „глупаво“ отляво през интервали, а отдясно - "crazyabras" от ASCII таблицата, които съответстват на тези байтове - както във "всеки" "добър стар" шестнадесетичен редактор като WinHex, екранните снимки на който сте виждали на "всеки" "coolhacker" " уебсайт. Ние работим с едни и същи байтове през цялото време, както и самият компютър. Въпросът е единствено в тяхното представяне и тълкуване. Когато копирате изпълним файл от диск на диск, това са ВСИЧКИ ДАННИ и БЕЗ КОД, защото никой не изпълнява нищо. Но си струва да се посочи на Windows, че това е изпълним файл, стартирайки го, тъй като Windows го анализира на код и данни и изпълнява само кода от мястото, предварително определено от стандарта и заглавката, след което самият код, изпълнен от процесор, се анализира по-нататък в структурата си и самият той отново се разделя на код и данни и т.н.
В режим F4-> Декодиране, вместо “krakozyabr”, ни показва байтове и “истинско значение”.
- В третата (дясна) и най-голяма колона (по-точно, няколко колони), ни се показва разглобена кодова секция - текст, т.нар. „мнемонично“ представяне на същия този код (език за сглобяване), предназначено за донякъде опростено и разбираемо възприемане от „разумен човек“, с неговото прекрасно аналогово асоциативно мислене, който възприема изключително трудно абстрактните „голи“ кодови последователности.

5. След като направихме прехода към желаното отместване в предишния параграф, виждаме, че курсорът (такъв сив :)) сочи към началото на 6-байтова команда (в x64 може да има повече байтове) вдясно от които инструкцията cmp eax TYPE е „разглобена“,
ако вземете един ред отгоре и малко отдолу, тогава ще излезе конструкцията TYPE:
mov eax,
cmp eax,
jz .06F30B25E
натиснете edi
натиснете 020
обадете се на .06F2E1440
поп ecx
Не е необходимо да сте "експерт по асемблер", за да разберете тази конструкция, въпреки че се препоръчва да имате поне основни познания за "програмиране на всеки език". Но владеенето на английски език не вреди!

Първата инструкция (която не е закърпена по никакъв начин, тя е „над първата разлика“) се нарича mov - което, извинете, е първата асоциация, която идва на ум от на английски? - правилно - преместване - т.е. ход. Аргументите на инструкциите отиват във втората "подколона". eax и edi са т.нар. 32-битовите регистри са единични клетки от паметта в самия процес, предназначени да съхраняват данни, докато се обработват. Почти всички регистри са от един и същи тип, теоретично там може да се запише всичко, стига да пасне, но някои от тях традиционно се използват за съхраняване на определени типове данни (за да не се объркате), например EAX, EBX , ECX, EDX се използват директно за „потребителски данни“, освен това ECX традиционно върви като брояч (например цикли), а ESI, EDI - като указатели към някаква текуща позиция в паметта, адреси, с които да работите. А някои от регистрите са зависими от хардуера и е „по-добре да не ги пипаме“ - например IP регистърът автоматично съдържа адреса на текущата инструкция, която процесорът изпълнява, и ако се опитате да запишете някои от вашите данни там - променлива на вашата програма, тогава процентът ще отиде глупаво към инструкцията с този адрес и всичко ще се срине. ESP - сочи към стека - вид „бутилка“, в която първият, който се качи, ще излезе последен (Fist In Last Out), предназначен за временно съхранение на данни, които не се побират в регистрите, но не прави смисъл да ги върнете обратно в паметта, след като скоро ще бъдат използвани. За работа с данни обикновено байт - 8 бита, дума - 16 бита, дълга дума - 32 бита или двойна дълга дума 64 бита (за 64-битови процесори) се поставят от паметта в регистър. За да работите с кратки данни, можете да получите достъп до части от регистъра (например eax се състои от ax - по-малките 16 бита и ah и al - части от самия ax), но това е извън нашия проблем. След това се извършват някои трансформации с данните в регистъра, след което резултатът се поставя обратно в паметта - в същата или друга клетка или всяка друга клетка, разпределена от автора (или неговия компилатор) на програмата за съответните цели.

Адресите са в квадратни скоби. Ако трябва да вземете ДАННИ от клетка с памет на някакъв адрес, а не самия адрес, тогава просто напишете адреса в квадратни скоби. Конструкцията TYPE означава, че данните трябва да бъдат взети от клетка с памет, която има адрес, чиято стойност се получава чрез добавяне на стойността в регистъра ESI + 324h. В Assembler е обичайно да се пише по-ясно, но за автора на Hiew беше по-удобно да го покаже по този начин, може би за по-голяма яснота. Когато въвеждате команди, Hiew приема стандартни конструкции като , както е показано по-долу.

Общо разбираме, че тази инструкция взема данни (4 байта = 32 бита) на адреса и ги поставя в EAX регистъра. Следващата инструкция ((която вече се пачи) е CMP. Първото нещо, което идва на ум на ученик със светло лице, който е учил усърдно английски в училище, е сравнение. Това е заотносно сравнението. В противен случай всичко е същото като в предишните инструкции. Адресът е точно в съседство. Инструкция
cmp eax,
сравнява съдържанието на eax регистъра и местоположението на паметта в . Предишната инструкция избута число от съседната клетка в eax регистъра. Сега се сравнява с числото от клетката. Какво е толкова трудно, извинете? Овцете могат да бъдат научени! Това със сигурност е по-лесно от „многокилометрови“ обекти от някаква скапана жаба, дърпайки хиляди имоти със себе си, в които можете да се удавите ...
Но какво да кажем за резултата? Сравнете сравнението, така че какъв е смисълът, ще попита внимателният читател ... Как да разберете къде е ровило кучето? И резултатът се съхранява в специален регистър на флаговете Flags. В този запазен регистър всеки бит представлява флаг. По-специално, има нулев флаг - Zero. Ако в резултат на изпълнение на инструкцията за сравнение се окаже, че числата са равни, флагът ще бъде зададен (1), ако не, тогава ще бъде нулиран (0) (или обратното, твърде мързелив за гледане дебъгерът - тук няма значение). По същия начин има още една отметка за повече или по-малко - Подпис. Флаговете се променят в резултат на изпълнението на инструкции, които ги променят, и ще останат на позицията си, докато не бъдат променени в резултат на друга инструкция, която засяга състоянието им. Следователно след cmp можем да изпълним всякакви други инструкции, които зависят от състоянието на флага, докато не изпълним тази, която го променя. Състоянието на флаговете се чете от инструкциите за условно разклоняване и някои други, а резултатът е някакво действие или бездействие на тези инструкции.

Следващата инструкция е
jz .06F30B25E
Инструкции, които започват с J [почти] всички означават Jump - скок, т.е. преместване на друго място. Тази инструкция се отнася за инструкции за условен скок и означава Jump if Zero - т.е. отидете на адреса, ако има отметка в квадратчето Нула. Ако квадратчето НЕ е отметнато, тогава „нищо няма да се случи“. Адресът на прехода се дава като аргумент (те могат да бъдат различни, относителни или абсолютни, „далечни“ или „близки“ в паметта. Тук адресът е посочен в адресното пространство на програмата, както е конфигуриран от exe хедъра, няма смисъл да се задълбочавате в това, това само ще усложни всичко.Ако Ако предишната инструкция установи равенство на аргументите, тогава преходът ще се случи, ако не, тогава няма да се случи и процесорът ще премине към следващата инструкция.

Следващите 2 инструкции
натиснете edi
натиснете 020
Припомняме, че на английски push означава блъскане, бутане. Тук това означава да поставите числата в стека за временно съхранение. Често променливите се записват по този начин преди въвеждане на процедури, регистрите вътре в процедурата могат да се използват за други цели, а с помощта на стека можете както да запазвате стойности на регистъра, така и да предавате аргументи на процедурата, която ще ги извади, след като я въведете , и пъхнете резултатите там, преди да излезете, ако са налични и необходими. Удобството е, че не е нужно да се притеснявате за разпределяне на адресно пространство за съхранение на временни данни със значително количество. Ако трябва да предадете масив, просто предайте адреса му в паметта. Няма причина да прехвърляте всички елементи от масива, това само безполезно ще изяде памет и процесорно време, както се прави с bydlock. (Когато е необходимо запазване оригинално копиемасив според логиката на работа - това е различна ситуация и самият програмист съзнателно инициира копирането на масива с цел репликация.)
При работа със стека процесорът сам ще се погрижи за всичко - областта за съхранение на стека се разпределя от операционната система с хардуерната поддръжка на процесора.
Първата инструкция ще съхрани стойността на EDI регистъра - указател към определена област от паметта, а втората ще натисне там предварително дефинираната константа 20h. Вероятно някакъв аргумент на процедурата, но това няма значение за нас, защото няма нужда да правим анализа, който направи авторът на корекцията - ние прехвърляме готовата корекция в друга версия на програмата и това обикновено е ПРОСТО!

Следваща инструкция
обадете се на .06F2E1440
На английски call означава обаждане, обаждане.
Става дума за извикване на процедура. В кода за извикване на процедурата няма имена - има адреси, на които се намира кодът им. За удобство дизасемблерите (включително Hiew) могат да извадят имената на процедурите и функциите от таблиците за импортиране и експортиране на exe файлове (трябва да има взаимодействие различни програмии „библиотеки“ след компилация и процедури получават имена, с които могат да бъдат извикани от друга програма, но вътрешните процедури не се именуват след компилация). Разбира се, имаше имена в изходните кодове, но след компилация те са безполезни ... Само ще заемат място. Процесорът не трябва да знае нечии имена, той брои числа ... Понякога декомпилаторите / дизасемблерите успяват да извадят имената на процедурите от информацията за отстраняване на грешки (ако следващият bydlocoder е забравил да го отреже и е увеличил размера на двоичния файл с безполезен info) и това помага при анализа на кода, но в нашия случай дори това е пуф. Не е нужно да разбираме защо е необходима тази процедура и какво прави ... Напомням ви, че имаме готов пластир и ако успеем да го прехвърлим „без инциденти“, тогава няма нужда да се задълбочаваме то.

Последната дадена инструкция
поп ecx
Поп - противоположно действие на бутане - т.е. извадете последната стойност, избутана в стека. В този случай регистърът ecx. Вероятно тази инструкция е нужна за извличане на резултата от процедурата, но не ни интересува, вкл. и тъй като тази инструкция, както и 2 натискания по-горе и повикване, не се променят след корекцията и са дадени за някакво общо представяне и като ориентир-граница на пластира. След корекцията всички тези инструкции ще останат на мястото си, както всичко след тях.

6. Сега вземаме кръпката на Termsrv.dll в друг прозорец на Hiew, вижте същия адрес за инструкции.
mov eax,
mov eax, 000000100
не
mov ,eax
натиснете edi
натиснете 020
обадете се на .06F2E1440
поп ecx
Виждаме разлики само във втората, третата и четвъртата инструкция.
Второ движение eax, 000000100
просто запишете константата 100h (=256) в регистъра eax
Трето не
най-„смешният“ = NoOperation – не прави нищо и завинаги. Защо е нужна тя? И е необходимо да се синхронизира синхронизацията според кодовите данни. Факт е, че размерите на оригиналния и коригирания код трябва напълно да съвпадат в броя на байтовете и границите на командите (заедно с техните аргументи). Ако нещо измести поне един байт, процесорът ще попадне „на грешното място“, той ще възприеме определен аргумент на инструкцията като команда, а байтовете след нея като аргументи на тази команда, дори ако има различен команден код. Всичко ще се изнесе веднага и фатално. 99%, че програмата ще се срине с фатална грешка. Командата nop има код 90h и заема един байт. Ако има излишен код, който не е необходим или дори вреден за целите на корекцията, той може да бъде заменен, заедно с аргументи, с толкова nops подред, колкото заема байта. Сред хакерите това се нарича zanopat или zanopat. Всъщност това единствения начинпремахнете излишния код изпълним код, защото това не е текст и всяко „изрязване от средата“ „с цел съкращаване“ незабавно ще доведе до факта, че всички адреси ще се изместят, изнесат и нищо няма да работи. И „най-лошото“ се случва, когато нов код, които трябва да заменят стария, по никакъв начин не се вписва в "старото" място ... Тук започва главоболието на хакера - как да го стиснете, така че да се побере в ...
Четвърти ход, eax
поставете номера от eax регистъра в място в паметта
По принцип третата и четвъртата или третата и втората инструкции могат да се разменят - това няма да промени нищо. Но nop не може да бъде премахнат по никакъв начин, защото новите команди са с 1 байт по-малки от старите по дължина на кода и такова несъответствие, ако не се парира с nop, веднага ще доведе до отказ на синхронизация.

Сравнението „с това, което беше“ веднага поставя всичко на мястото си!
Беше - вземете числото от клетката, сравнете го с числото от клетката. Ако те са равни, тогава „някъде“ да скочите, ако не, отидете по-далеч и изпълнете процедурата. В контекста на задачата това сравнение на броя разрешени връзки с лимита на разрешените връзки (т.е. 1 за работна станцияили 2 за сървъра). Лимитът се съхранява в някаква константа, чийто адрес е посочен в инструкцията за сравнение.
Това, което се случи, е да вземем числото от клетката, да забравим за „това нещо“ и незабавно да презапишем стойността на EAX регистъра с константата 100h (= 256 - т.е. очевидно новото ограничение е 256 връзки) и след това да поставим това номер в клетката
Никой не сравнява нищо, процедурата, която е извикана по-долу, винаги ще бъде изпълнена. В допълнение, в клетката, където очевидно лимитът на връзката е бил съхранен „принудително“, се записва нов лимит = 256 в случай, че има други проверки за този лимит някъде другаде в програмата. ТОВА Е ВСИЧКО! Трудно е да се измисли нещо по-примитивно!

Ако трябва сами да търсим това място, тогава ще трябва да проследим процедурите на тази dll с дебъгер, както очевидно е направил авторът на корекцията, или да разглобим всичко с нещо като IDA и внимателно да проучим кода, съдържащ стотици хиляди инструкции . Но ние сме готови! Това е като във вица за механика, който веднъж ударил с чука и колата запалила, но тънкостта е, че той знаеше къде да удари и коства много работа. (Просто не говорете за пари тук - пъхнете ги в задника си! Особено в навечерието на страхотен празник! За феновете на „правенето на пари в Интернет“ - има специализирани сайтове.)

Защо корекцията не работи на всички следващи версии - защото адресите се променят и кодът (неговите аргументи) се променя леко по време на компилация. Това води до изместване на желания код вътре в exe към други отмествания и ако търсите по подпис (стриктна последователност от байтове), може да не откриете, че аргументите за търсене са променени. В крайна сметка много адреси също са аргументи за инструкции и променят двоичния код до неузнаваемост, въпреки факта, че същността му е все същата ... Направете го ръчно! Имате глава на раменете си, а не „строга последователност от извивки“ ...

7. Сега в ОРИГИНАЛА на версията на Termsrv.dll, която кръпката корекции, трябва да намерите някаква уникална, в контекста на програмата, последователност от байтове ДО мястото, което трябва да кръпнете, за да го търсите в нова версия termsrv.dll, този, който искате да закърпите, но пачът не го закърпи...
Трябва да погледнете дизасемблера и да потърсите БАЙТОВЕ, съответстващи на него, и ако изберете нещо твърде „просто“, тогава такава комбинация ще се появи много пъти по време на търсенето и ще бъде трудно да намерите правилното място, то ще „потъне“ сред куп други подобни. И за нас „точността на удара“ е изключително важна, защото ако кръпка „не е там“, тогава няма да работи или дори Windows ще виси ...
Не можете да изберете инструкции, съдържащи дълги фиксирани адреси за низа за търсене. Когато компилирате други версии, те вероятно ще излязат и няма да намерите нищо за тях в новата версия.
Цялата процедура, при която се извършва проверката, е малка, само няколко дузини команди. За асемблер това е „нищо“. Hie ще ви покаже условните граници на процедурата като "ленти" _^_^_^_^_^_. Моля, обърнете внимание, че в началото на процедурата има извикване на адреса на процедурата за "импортиране" на Windows API - CDefPolicy:: Query и Hiew откриха това (следователно името на функцията беше извадено и написано). Това трябва да е добър ориентир за вас по пътя към правилното място. В допълнение, това „все пак подсказва“, че може да има друг начин за решаване на проблема, например намиране на някаква „тайна“ политика, отговорна за поведението на терминалния сървър. Желаещите могат да проследят кода с дебъгер и да потърсят как дадена променлива или константа се инициализира с броя на връзките. Но „кодът от CDefPolicy“ не е подходящ за низа за търсене, тъй като адресът на процедурата в импортирането най-вероятно ще се измести в новата версия. Бих опитал да търся по байтове от началото на процедурата след CDefPolicy. Ето го:
57 push edi
6A10 натиснете 010
8BF1 mov esi,ecx
33DB xor ebx,ebx
извън 57 6A 10 8B F1 33 DB
В края можете да добавите още един код на инструкция за извикване на E8, след него, но НЕ и неговия аргумент (следващите байтове), защото това е адресът и той ще се промени, когато се компилират нови версии.
Тази последователност ми дава при търсене в Hiew (F7-търсене)
Съвпаденията са само 3. Освен това извикването на CDefPolicy се вижда в контекста само на един случай - в първия. Ако имате същото - място е намерено, запишете адреса му от първата колона (след натискане на Alt-F1 - Global!) „на лист хартия“ и опитайте да закърпите.
Ако кодът се е променил толкова много, че не намира нищо, търсим други уникални последователности, вкл. събрани в съседни процедури и се опитайте да ги потърсите. Задачата е да намерим правилния код, където „всичко съвпада по смисъл“, а не последователност, мислим за това и разглеждаме контекста, опитвайки се да намерим CDefPolicy::Query в новата версия. Можете да потърсите текста CDefPolicy::Query в new.dll, ще намерите низа (няколко пъти), но не и мястото, където е посочен неговият адрес. Този метод понякога помага да се намери правилният с помощта на F6 (Reference) в Hiew и успях да намеря правилното място в dll от Win7SP1x86Rus в името на експеримента, но не и факта, че ще работи навсякъде, особено с други програми) .

8. Сега трябва да вземете wordsrv.dll на версията, която трябва да закърпите. Стартираме третото копие на Hiew, отваряме нов dll в него” (за да превключвате лесно между трите и да ги сравнявате визуално). Намираме правилното място, както е описано по-горе, или отиваме на адреса, който е написан „на лист хартия“ (парче хартия като цяло е приятел на програмиста в този смъртен свят, където твърди дискове, нокаутира задръствания и виси OS).
Анализираме кода по-долу CDefPolicy::Query и лесно намираме правилното място, ПОДОБНО на:
cmp eax,
jz .06F30B25E
РАЗБИРАМЕ, че адресът е , но ако например се е променил, това е адресът, от който се нуждаем и ще оперираме с него при по-нататъшно редактиране.

9. Ако сте убедени, че сте намерили точно това, от което се нуждаете, задръжте курсора на мишката върху cmp инструкцията и не се колебайте да натиснете F3-Edit. „Сивият“ курсор ще се промени на „нормален“ (за режим на показване на текст) - долен индекс. Трябва да сочи към същата cmp инструкция.
Натиснете Tab (или F2) и ще се появи диалоговият прозорец за въвеждане на инструкции за асемблер.
Въведете инструкции там.
mov eax, 100
След това въведете. На главния екран ще видите, че байтовете „от инструкцията“ са се променили и някои от тях са станали „златни“ (жълти). В същото време инструкциите ПО-ДОЛУ се „преместиха“ и в дясната колона срещу тях се показва „боклук“ - изобщо не това, което беше там преди.
Диалоговият прозорец за въвеждане на команди в горната част на главния прозорец продължава да „виси“ и да чака въвеждането на нови инструкции, докато показва някои следващи инструкции, неправилно интерпретирани поради конгреса за адресиране.
Ние не обръщаме ни най-малко внимание на тази инструкция и караме следващата.
Въведете nop и натиснете Enter
В главния прозорец следващият ред с код 90 ще стане жълт.
Синхронизацията ще бъде възстановена и следващата команда отново ще бъде jz. Ще бъде предложено да промените диалоговия прозорец за въвеждане на инструкции.
карай там
mov ,eax
Ако вместо 320 имаше различен адрес в командата cmp, тогава го въведете!
Натиснете Enter. след това кодът в ред 3 ще стане жълт, вдясно от който трябва да има инструкция mov, eax (или не 320, а числото, което е въведено).
Проверяваме дали синхронизирането на код-данни НЕ е излязло. Следващата инструкция трябва да е push edi (или друга, ако кодът се е променил много и сте имали друга инструкция там преди корекцията - тя трябва да остане на мястото си и да бъде правилно интерпретирана, което означава, че всичко е наред след нея).

Когато всички влязат, натиснете ВЕДНЪЖ Esc. Диалоговият прозорец за въвеждане на инструкции ще изчезне, но може да бъде извикан отново по всяко време (в режим на редактиране) чрез натискане на Tab. Всички променени байтове ще бъдат жълти. Внимателно проверете дали всичко изглежда правилно, не са се прецакали никъде. Тук никой няма да проверява нищо вместо вас, НЯМА „защита от глупаци“ от какъвто и да е ранг и титла. Никой няма да вземе под внимание регалията. Това, което са направили, е това, което са получили. Nakosyachili - замръзва и няма да работи.
Ако всичко е наред, натиснете F9 (Update). Промените ще бъдат записани във файл на диска и променените байтове ще променят цвета си на нормален (циан).

10. Сега трябва да коригирате контролната сума на exe. Правенето на това е безумно скучно, обзалагам се, че Hiew ще свърши работата вместо вас и не е нужно да правите много. Натиснете F8 (Header). Появява се „сив незабележим“ прозорец с „декриптиране“ на параметрите на заглавката на exe файла.
Натиснете F3 (Редактиране). Над „невзрачния“ прозорец се появява „оцветено“ лилаво. Той изброява всички параметри на заглавката с техните адреси и стойности. Със скучно лице превъртаме към края и намираме там параметъра за контролна сума. Вдясно е неговата стойност (самата контролна сума) в шестнадесетичен и десетичен израз, който остава „наследен“ от оригиналния UNpatched файл. Натиснете F3 отново и, ето, линията става жълта и контролната сума променя стойността си. Можем да вярваме на Hiew или да го намерим във форуми или в книги и да го изчислим ръчно. Ако всичко ви подхожда, натиснете F9 (Актуализиране). Прозорците трептят, всичко изчезва ... Това е краят, смята непосветеният читател. Но когато прахът се утаи, контролната сума е правилна. Недоверчивите могат да се върнат към споменатия диалог и да сравнят контролната сума с тази, внимателно запазена преди изпълнението в резервното копие на лист хартия. Можете да излезете от Hiew чрез Esc и да продължите към етапа на тестване на вашата дивизия.

11. След като получите пакетирания файл, можете да опитате да замените Termsrv.dll в целевата операционна система.
Поради защитните механизми на Windows срещу промяна на системните файлове, както и забраната за запис на работещи програми (нарушение на споделянето), ще бъде необходимо да спрете услугата Terminal services (вижте коментарите на други потребители по-горе) и да замените копията на dll във „всички видове WinSxS“ и т.н., така че неупълномощеният Windows дори е забравил да помисли за опит за възстановяване на версията без корекции.

Ако всичко работи, значи сте станали coolhacker или сте направили първата СЪЗНАТЕЛНА стъпка по пътя. Никой не ви пречи да избирате и да учите по-нататък, правейки света по-добро и по-добро място. В мрежата има много инструкции и цели тематични форуми за тези, които искат да мислят със собствената си глава, а не просто да консумират масово порно от Матрицата.

Не се колебайте да публикувате списък с променени байтове (можете да го получите, като използвате същия „запас“ „FC /b File1 File2″) за други, по-малко сложни потребители, тук и / или на други ресурси, направете добро на съседа си, както Господ е завещал и прослави името си в аналите на хакерската история.

Според списъка с промени можете да направите .CRK файл (за патъри, които разбират този древен формат) или да направите patch.exe с помощта на всеки пачмейкър, за който през годините на еволюция са написани десетки и стотици. Просто изберете тогава Поддръжка на Windows Vista/7″, защото старите, макар и годни, не знаят нищо за привилегиите на Escalate и Windows глупаво няма да им позволи да кръпват нищо в Windows/System или Program Files. Инструкциите трябва да споменават изискването за спиране на терминалната услуга или използването на корекции на файлове в отделни папкипоследвано от заместване в system32 от самите потребители. Във всеки случай, публикувайте списъка с промени, не се оплаквайте от „лаври“, тъй като някой може да се наложи да се чука ръчно и информацията ще ви позволи да намерите алтернативно решение. Пачърът на автора прави всичко това автоматично, включително работата с WinSxS - погледнах кода, но мисля, че няма да е лесно да се намери пачмейкър, който да вземе всичко това предвид.

Windows XP Professional и Windows XP Media Center Edition (MCE)имат услуга за връзка Отдалечен работен плот (RDP), което ви позволява отдалечено да свържете компютър, да получите достъп и контрол от друг компютър или хост. Въпреки това, машини на операционната система Уиндоус експипозволяват едновременно връзка с отдалечен работен плотсамо един потребител, който е бил свързан с него, без множество сесии връзки с отдалечен работен плотили връзки за поддръжка.

Всеки път, когато отдалечен потребител се свърже чрез клиент към Отдалечен работен плот (RDC)за да се свържете с хоста Уиндоус експи, локалният потребител е излязъл със или без заключване на конзолата. Отдалечен работен плот, за разлика от услугата на терминален сървър в Windows сървър 2003 и Server 2008 е предназначен за еднократна употреба от потребител, независимо дали потребителят е локален или отдалечен.

Тук хакнете, за да отключите едно ограничениекоето позволява множество едновременни сесии за връзка с отдалечен работен плот в Windows XP Professional и Media Center Edition, като се използва или пачираната termserv.dll, или старата пачирана termserv.dll компилация версия 5.1.2600.2055, така че неограничен брой потребители да могат едновременно свържете се с компютър чрез отдалечен работен плот.

  1. Изтеглете коригирано копие, което ще премахне ограниченията за връзка с отдалечен работен плот, деактивирани за вашата версия на Windows XP:

Windows XP SP3: Termsrv.dll (версия 5.1.2600.5512)

За информация за Termsrv.dll корекцията обикновено има следните битове HEX кодове, които се пренаписват на следните стойности:

00022A17: 74 75
00022A69: 7F 90
00022A6A: 16 90

  1. Рестартирайте компютъра си и заредете информацията в безопасен режим, като щракнете F8по време на стартиране и изберете безопасен режим . Тази стъпка е необходима само ако в момента използвате Windows Terminal Services или услуги за отдалечен работен плот, защита файлова систематрябва да се пропусне или ще се появи следното съобщение за грешка, за да възстановите оригиналния wordsrv.dll.

3.Отидете на %WINDIR%Система32и прави архивиране(или преименуване) Termsrv.dll .

4. Преименуване или изтриване termserver.dllв папка %WINDIR%System32 Dllcache.

5.Копирайте изтегленото Termsrv.dll V %WINDIR%Система32 , %WINDIR%ServicePackFiles i386(ако има) и %WINDIR%System32 Dllcache .

6. След това изтеглете и стартирайте, за да обедините стойностите на системния регистър в регистъра, или можете да стартирате редактора на системния регистър ръчно и да добавите следните настройки на регистъра:



„EnableConcurrentSessions“ = DWORD: 00000001


„AllowMultipleTSSessions“ = DWORD: 00000001

7.Натиснете бутона Започнете -> Бягайи въведете командата gpedit.msc, щракнете Въведетеза да отворите редактора на групови правила.

8.Отидете на Компютърна конфигурация -> Административни шаблони -> Компоненти на Windows -> Терминални услуги .

9.Активиране ограничаване на броя на връзкитеи задайте броя на връзките до 3 (или по). Настройката позволява повече от едно използване на компютъра едновременно.

10. Уверете се, че Remote Desktop е активиран в раздела Remote на System Properties, като изберете бутона за избор Позволете на потребителите да се свързват дистанционно с този компютър .

11. Включете бързо превключване на потребителите V Контролни панели -> потребителски акаунти -> Промяна на потребителското влизане или изключване .

12. Рестартирайте компютъра си нормално.

Отбелязвам, че ако не можете да замените или презапишете файла termserv.dll - достъпът е отказан или грешка във файла, изключете "Termine Services" в секцията "Services" на контролния панел "Administrative Tools". Освен това всяка свързана физическа връзка трябва да има собствен потребителски акаунт на целевия компютър и трябва да бъде удостоверена със съответното собствено потребителско име и парола за идентификационни данни.

За да премахнете и да се върнете към оригиналния wordsrv.dll, просто премахнете коригираната версия и преименувайте резервното копие обратно на „termsrv.dll“. Ако терминалните услуги са активирани и работят, трябва да го направите в безопасен режим.

Ако компютър с Уиндоус експисвързан към домейн локална мрежа, Windowsще настрои RegKey "AllowMultipleTSSessions" на "0" всеки път, когато компютърът не се рестартира. За да бъдат разрешени множество или неограничени сесии на отдалечен работен плот в среда на домейн на AD, стойността на данните за „AllowMultipleTSSessions“ трябва да бъде зададена на „1“ при всяко стартиране на системата. За да промените стойността, просто рестартирайте ts_multiple_sessions.batвсеки път, когато стартирате компютъра си. Също така, поставете ts_multiple_sessions.bat V C: Документи и настройки Всички потребители Главно меню Програми Стартиранепапка, така че автоматично да се стартира на първия потребител с администраторски права. Друго решение е да инсталирате допълнителна услуга или да дефинирате ключ в клона на системния регистър HKEY_LOCAL_MACHINE СОФТУЕР Microsoft Windows CurrentVersion Изпълнение, чрез който груповият файл работи автоматично при зареждане и това е полезно, ако компютърът няма да бъде влязъл от никого, но все пак се изисква от работника да позволи неограничени връзки с отдалечен работен плот да работят.

Друго нещо е, ако потребителят затвори дистанционна връзкаВместо да прекрати сесията, когато той или тя се опита да влезе отново, ще се появи съобщение за грешка с код 4226, свързано с TCP/IP събитието. За да разрешите този проблем, изтеглете и инсталирайте Windows XP TCP/IP Limiting Connection и Event ID 4226 patch и задайте връзката на поне 50.

Тази сборка е изградена върху оригиналния образ на Microsoft Windows XP Professional SP3 руска версия, с всички актуализации!Дискът е multiboot. ИЗТЕГЛЕТЕ БЕЗПЛАТНО -


Поздрави, скъпи читатели, Денис Тришкин отново е във връзка.

Наскоро попаднах на въпрос като „Отдалечен работен плот“ (RDP Windows 7). Този инструмент ви позволява да работите с вашия компютър с друго устройство. Така например потребителят може да използва домашно оборудване, за да изпълнява всички необходими функции на компютър, разположен в офиса. Съгласете се, в някои ситуации тази възможност е удобна. Но в същото време първо трябва да дебъгвате всичко правилно.

За да активирате rdp, трябва да изпълните няколко стъпки:

Установяване на връзка( )

За да установите rdp връзка, първо трябва да знаете неговия IP адрес. За да направите това, на желаното устройство отидете на командния ред (отворете "" и напишете " cmd»).

В прозореца, който се показва, посочете "". Ще се отвори списък, в който трябва да намерите реда с параметъра IPv4. Цифрите, които са посочени отсреща, са данните, от които се нуждаем.

След това на компютъра, от който планираме да се свържем, стартираме rdp клиента или "". За да направите това, трябва да отидете на Започнете" и след това отидете на " Стандартен».

нараства

Ще се отвори прозорец, в който е зададен адресът на оборудването (IPv4). След това натиснете "".

Ако всичко е указано според очакванията, ще се появи меню, в което трябва да въведете вашето потребителско име и парола, за да установите връзка.

Преди това има избор от " Параметри“, където са предоставени различни rdp настройки:


Актуализация( )

Важно е да разберете, че при постоянна работа с този инструмент е необходимо той да изпълнява всичките си функции на 100%. В противен случай потребителите може просто да не постигнат целите си.

За правилното функциониране е необходимо всички настройки да бъдат зададени правилно. Но в някои случаи това не е достатъчно. Също така си струва да инсталирате всички изходящи rdp актуализации от Microsoft навреме. Това може да стане не само в съответния център, предоставен в самата операционна система, но и на официалната страница на разработчика.

Промяна на RDP порта( )

За стандартна връзка към отдалечен компютъризползва се порт 3389. В този случай взаимодействието се осъществява чрез TCP протокол. Следователно се използва без udp.

За да увеличите сигурността на връзката, е възможно да промените RDP порта. Промяната на стойността ще намали риска от проникване в системата в случай на автоматизиран избор на пароли.

За процедурата трябва да използвате редактора на системния регистър:


Няма връзка( )

Понякога потребителите могат да се сблъскат със ситуация, при която rdp не работи. Важно е да се отбележи, че съдейки по статистиката, потребителят все още успява да стигне до сървъра, но някои мрежови инструменти не му позволяват да отиде по-далеч. Има няколко ефективни начина за решаване на този проблем.

Както при миналите клиентски версии на операционните системи на Microsoft, потребителите на Pro и Enterprise Windows 10 (но не и Home) издания могат отдалечено да се свързват към своите компютри чрез услуги за отдалечен работен плот (RDP). Въпреки това има ограничение за броя на едновременните RDP сесии - само един отдалечен потребител може да работи едновременно. Когато се опитвате да отворите втора RDP сесия, сесията на първия потребител получава подкана да прекрати.

IN Английска версияпредупреждението е:

Друг потребител е влязъл. Ако продължите, те ще бъдат прекъснати. Все пак искаш ли да подпишеш?

Факт е, че в настолните издания на операционните системи на Microsoft има следните основни ограничения за използването на услугата за отдалечен работен плот:

  1. Поддръжката за RDP достъп е налична само в по-стари издания на Windows (Professional и по-нови), а в домашните издания (Home) тази функционалност е деактивирана.
  2. Възможна е само една отдалечена RDP връзка. Когато се опитва да отвори втора RDP сесия, потребителят получава подкана да прекрати съществуващата връзка.
  3. В случай, че има потребител, който работи на конзолата на компютъра (локално), когато RDP се свърже дистанционно, неговата сесия ще бъде прекъсната (блокирана). Обратното твърдение също е правилно: отдалечената RDP сесия се прекратява принудително, ако потребителят влезе в системната конзола

Всъщност ограничението за броя на едновременните rdp връзки не е техническо, а по-скоро лицензирано, забраняващо създаването на базирани на работни станции терминал RDP сървър за множество потребители. Въпреки че от техническа гледна точка всяко издание на Windows, ако има достатъчно памет, може да поддържа едновременната работа на няколко десетки отдалечени потребители (средно се изискват 150-200 MB памет на потребителска сесия, с изключение на работещи приложения). Тези. максималният брой едновременни сесии на теория е ограничен само от компютърните ресурси.

Ще разгледаме два начина за деактивиране на ограничението за броя на едновременните RDP връзки в Windows 10:

важно. Първоначално, в първата версия на статията, основната работна опция за премахване на ограничението за броя на едновременните RDP потребителски връзки беше методът за модифициране и замяна на файла Termsrv.dllв папката %SystemRoot%\System32. Въпреки това, когато инсталирате нова версия на Windows 10 или някои актуализации на защитата, този файл се актуализира. В резултат на това трябва да редактирате този шестнадесетичен файл всеки път с редактор, което е доста досадно. Следователно, като основен начин за организиране на безплатен терминален сървър на клиент Windows 10, струва си да се обмисли помощната програма RDP Wrapper библиотека.

Забележка. Системните модификации, описани в тази статия, вероятно ще се считат за нарушение на лицензионното споразумение на Windows с всички произтичащи от това последствия.

RDP Wrapper библиотека

Алтернатива на модифицирането на файла Termsrv.dll е използването на проекта RDP Wrapper библиотека. Тази програма работи като слой между Service Control Manager (SCM-Service Control Manager) и Terminal Services (Terminal Services) и ви позволява да активирате не само поддръжка за множество едновременни RDP сесии, но и да активирате поддръжка за RDP Host на домашни издания на Windows 10. RDP Wrapper не прави промени във файла Termsrv.dll, а само зарежда TermSrv с модифицирани параметри.

По този начин това решение ще работи дори ако актуализирате версията на файла Termsrv.dll, което ви позволява да не се страхувате от актуализации на Windows.

важно. Преди да инсталирате RDP Wrapper: Важно е да използвате оригиналната (без корекция) версия на файла Termsrv.dll. В противен случай RDP Wrapper може да не работи стабилно или изобщо да не стартира.

Можете да изтеглите RDP Wrapper от хранилището на GitHub: https://github.com/binarymaster/rdpwrap/releases (най-новото налична версия RDP Wrapper Library v1.6.2 беше пуснат сравнително наскоро - 28 декември 2017 г.). Съдейки по информацията на страницата на разработчика, всички версии на Windows се поддържат. Windows 10 се поддържа до версия 10.0.17063.1000 на Insider Preview на 13 декември 2017 г.

съвет. Между другото, източниците на RDP Wrapper Library са налични, което ви позволява сами да създавате изпълними файлове, ако желаете.

Архивът RDPWrap-v1.6.2.zip съдържа няколко файла:

  • RDPWinst.exe - Програма за инсталиране/деинсталиране на RDP Wrapper Library
  • RDPConf.exe - Помощна програма за конфигуриране на RDP Wrapper
  • RDPCheck.exe - Local RDP Checker - помощна програма за RDP проверка
  • install.bat, uninstall.bat, update.bat - пакетни файлове за инсталиране, деинсталиране и актуализиране на RDP Wrapper

За да инсталирате помощната програма, стартирайте файла install.bat с администраторски права.

След като инсталацията приключи, стартирайте RDPConfig.exe. И се уверете, че в раздела Диагностикавсички елементи са оцветени в зелено.

Забележка. В моя случай, защото няма достъп до интернет на компютъра, програмата не можа да получи текущата версия на INI файла от Github с настройки за моята версия на Windows. Следователно статусът е посочен. Изтеглете файла rdpwrap.ini от ресурса за разработка и го поставете в инсталационната директория. Рестартирайте услугата и се уверете, че етикетът се променя на .

От интересните характеристики на новата версия на RDP Wrapper:

  • опция КрияпотребителиНавписвам сеекран- позволява.
  • Когато опцията е деактивирана една сесия на потребител- ще бъдат разрешени няколко едновременни RDP сесии под един акаунт (ключът на системния регистър е зададен fSingleSessionPerUser= 0 в клона HKLM\SYSTEM\ CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser).

В случай, че след актуализиране на версията на Windows RDP Wrapper не работи, проверете дали има надпис в секцията Diagnostics.

Опитайте да актуализирате ini файла със скрипт update.bat, или ръчно и преинсталирайте услугата

rdpwinst.exe -u
rdpwinst.exe -i

Опитваме се да отворим втора RDP сесия. Всичко се получи! Сега нашият Windows 10 ви позволява едновременно да се свързвате чрез RDP към двама отдалечени потребители наведнъж.

Помощната програма трябва да работи на всички поддържани в момента издания на Windows: Windows Vista, Windows 7, Windows 8, Windows 8.1 и Windows 10. По този начин можете да направите терминален сървър от всяка клиентска версия на Windows.

Модифициране на файла Termsrv.dll

Забележка. Този методприложимо самокъм RTM версията на Windows 10 x64 (10240).

Можете да премахнете ограничението за броя на RDP връзките, като промените файла Termsrv.dll (библиотечен файл, използван от услугите за отдалечен работен плот). Файлът се намира в директорията C:\Windows\System32).

Преди да модифицирате файла Termsrv.dll, препоръчително е да създадете негово резервно копие (ако е необходимо, можете да се върнете към оригиналната версия на файла):

копирайте c:\Windows\System32\termsrv.dll Termsrv.dll_backup

Преди да редактирате файла Termsrv.dll, трябва да станете негов собственик и да дадете на групата администратори пълни права върху него (всички операции се извършват по същия начин, както е описано в статията). След това спрете услугата за отдалечен работен плот (TermService) от конзолата services.msc или от командния ред:

Нетно спиране на TermService

За Windows 10 x64 RTM издание (версията на файла termsrv.dll е 10.0.10240.16384): Отворете файла Termsrv.dll с всеки HEX редактор (например Tiny Hexer)

Намерете реда:

39 81 3C 06 00 00 0F 84 73 42 02 00

И го заменете с:

B8 00 01 00 00 89 81 38 06 00 00 90

Запазете файла и стартирайте услугата TermService.

Коригиране на недостатъци в RDP с RDP Wrapper Library

Настолните операционни системи на Microsoft имат някои ограничения, когато става въпрос за услуги за отдалечен работен плот. Така че, първо, поддръжката на сървърната част (RDP Host) е достъпна само в по-стари издания на Windows (не по-ниски от Professional). В домашните издания тази функционалност е деактивирана, така че се свържете с по-младите Windows версиипрез RDP не е възможно.

И второ, броят на паралелните RDP сесии е ограничен. Разрешена е само една едновременна връзка чрез RDP и когато се опитате да отворите втора RDP сесия, системата ще покаже съобщение, че вече има един потребител в системата и ще го подкани да го изхвърли, за да прекрати сесията си.

Заобикалянето на тези ограничения ще позволи на проекта RDP Wrapper Library от Stas'M. RDP Wrapper работи като слой между Service Control Manager (SCM) и услугата за отдалечен работен плот. В същото време, за разлика от други решения от този вид, той не променя файла Termsrv.dll(библиотека, използвана от услугите за отдалечен работен плот), така че не е нужно да се притеснявате за актуализации на Windows.