tag:blogger.com,1999:blog-2374465879949372415.comments2023-04-16T14:22:53.095+03:00Блог Rouse_Александр (Rouse_) Багельhttp://www.blogger.com/profile/03072586754182036553noreply@blogger.comBlogger462125tag:blogger.com,1999:blog-2374465879949372415.post-74359811416555704482020-03-20T16:28:12.999+03:002020-03-20T16:28:12.999+03:00Этот комментарий был удален автором.kjhkjhttps://www.blogger.com/profile/04480683803009882705noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-38054481144441829382019-10-28T13:54:44.064+03:002019-10-28T13:54:44.064+03:00Ссылка на архив исходников была удалена с rouse.dr...Ссылка на архив исходников была удалена с rouse.drkb.ru (мол там вирус - на самом деле нет)<br />Вот новая ссылка: https://www.dropbox.com/s/ewjvyrf18m850bg/early_execution.ziprouse_debughttps://www.blogger.com/profile/17319961802783385685noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-16532460440650605122018-06-15T20:23:31.735+03:002018-06-15T20:23:31.735+03:00Пока что нет времениПока что нет времениАлександр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-79382910397470163412018-06-05T22:13:56.224+03:002018-06-05T22:13:56.224+03:00Александр, Вы окончательно забросили свой блог?Александр, Вы окончательно забросили свой блог?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-61602450871568793772017-12-19T13:15:57.243+03:002017-12-19T13:15:57.243+03:00Thanks for great article!
>Вообще ошибок связа...Thanks for great article!<br /><br />>Вообще ошибок связанных с разрушением составного файла может быть всего четыре:<br /> убит заголовок (как правило, заполнен нулями)<br />Первое — не лечится. Нет, ну может и найдется какой фанат и попробует вычислить значения первых секторов для построения FAT, но я таких не встречал.<br /><br />There is now a tool Anti-CryptorBitV2 which is used to fix Cryptorbit ransomware deleted headers(first 512bytes) but yes not all files can be recovered. Would be good if some more universal recovery tools would be available for compund files. Also some CAD formats like Solidworks or Microstation uses this format and gets corrupted easily if working on shared network drives.<br />Otohttps://www.blogger.com/profile/00732049436018956366noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-17720493372501855892017-05-31T02:02:32.221+03:002017-05-31T02:02:32.221+03:00Блин... А я велосипед изобретал 😁..Блин... А я велосипед изобретал 😁..Магаhttps://www.blogger.com/profile/01969191457283509365noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-4403592946757727912017-05-03T23:19:27.793+03:002017-05-03T23:19:27.793+03:00Спасибо за подробный обзор работы с сост. файлами,...Спасибо за подробный обзор работы с сост. файлами, и за класс-обертку под него! Вообще у вас классные обзоры, респект !!!Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-12277970685570472512017-02-20T12:24:38.517+03:002017-02-20T12:24:38.517+03:00Готово: https://dl.dropboxusercontent.com/u/709117...Готово: https://dl.dropboxusercontent.com/u/70911765/drkb/storage.ziprouse_debughttps://www.blogger.com/profile/17319961802783385685noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-34880051466620290312017-02-20T12:20:09.354+03:002017-02-20T12:20:09.354+03:00Этот комментарий был удален автором.rouse_debughttps://www.blogger.com/profile/17319961802783385685noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-1384454152793209702017-02-20T12:04:49.033+03:002017-02-20T12:04:49.033+03:00http://rouse.drkb.ru/blog/storage.zip недоступен. ...http://rouse.drkb.ru/blog/storage.zip недоступен. Где можно скачать?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-47613972392033190902017-01-03T10:40:13.396+03:002017-01-03T10:40:13.396+03:00По поводу того как узнать что мы отладчиком, может...По поводу того как узнать что мы отладчиком, может пригодиться кому<br /><br />library init_lib;<br /><br />uses Windows, System.SysUtils;<br /><br />{$R *.res}<br /><br /><br />var<br /> ntdllLibrary: HMODULE = INVALID_HANDLE_VALUE;<br /><br />type<br /> NTSTATUS = System.LongInt;<br /><br />const<br /> STATUS_SUCCESS = NTSTATUS($00000000);<br /><br />type<br /> PROCESS_BASIC_INFORMATION = record<br /> ExitStatus: NTSTATUS;<br /> PebBaseAddress: PVOID;<br /> AffinityMask: ULONG_PTR;<br /> BasePriority: Integer;<br /> UniqueProcessId: THandle;<br /> InheritedFromUniqueProcessId: THandle;<br /> end;<br /><br /> TProcessBasicInformation = PROCESS_BASIC_INFORMATION;<br /> PPROCESS_BASIC_INFORMATION = ^TProcessBasicInformation;<br /><br /><br />type<br /> PPEB = ^TPEB;<br /><br /> TPEB = packed record<br /> InheritedAddressSpace: System.Boolean;<br /> ReadImageFileExecOptions: System.Boolean;<br /> BeingDebugged: System.Boolean;<br /> //...<br /> end;<br /><br />type<br /> TNtQueryInformationProcess = function(<br /> ProcessHandle: THandle;<br /> ProcessInformationClass: ULONG;<br /> ProcessInformation: PVOID;<br /> ProcessInformationLength: ULONG;<br /> ReturnLength: PULONG): NTSTATUS; stdcall;<br /><br /> TNtReadVirtualMemory = function(<br /> ProcessHandle: THandle;<br /> BaseAddress: PVOID;<br /> Buffer: PVOID;<br /> BufferLength: SIZE_T;<br /> ReturnLength: PSIZE_T): NTSTATUS; stdcall;<br /><br />var<br /> NtQueryInformationProcess: TNtQueryInformationProcess = nil;<br /> NtReadVirtualMemory: TNtReadVirtualMemory = nil;<br /><br />function GetProcessBeingDebugged(ProcessHandle: THandle; var BeingDebugged: Boolean): NTSTATUS;<br />var<br /> ProcessBasicInformation: PROCESS_BASIC_INFORMATION;<br /> PEB: TPEB;<br /> ReturnLength: SIZE_T;<br />begin<br /> BeingDebugged := False;<br /><br /> if (@NtQueryInformationProcess = nil) then<br /> begin<br /> Result := ERROR_NOT_SUPPORTED;<br /> Exit;<br /> end;<br /><br /> Result := NtQueryInformationProcess(ProcessHandle, 0, @ProcessBasicInformation, SizeOf(ProcessBasicInformation), nil);<br /><br /> if Result <> STATUS_SUCCESS then<br /> Exit;<br /><br /> if (@NtReadVirtualMemory = nil) then<br /> begin<br /> Result := ERROR_NOT_SUPPORTED;<br /> Exit;<br /> end;<br /><br /> Result := NtReadVirtualMemory(ProcessHandle, ProcessBasicInformation.PebBaseAddress, @PEB, SizeOf(TPEB), @ReturnLength);<br /><br /> if Result <> STATUS_SUCCESS then<br /> Exit;<br /><br /> BeingDebugged := PEB.BeingDebugged;<br />end;<br /><br />procedure Initialize;<br />var<br /> BeingDebugged: Boolean;<br />begin<br /> ntdllLibrary := LoadLibrary('ntdll.dll');<br /><br /> @NtQueryInformationProcess := GetProcAddress(ntdllLibrary, 'NtQueryInformationProcess');<br /> @NtReadVirtualMemory := GetProcAddress(ntdllLibrary, 'NtReadVirtualMemory');<br /><br /> GetProcessBeingDebugged(GetCurrentProcess, BeingDebugged);<br /><br /> if BeingDebugged then<br /> TerminateProcess(GetCurrentProcess, ERROR_SUCCESS);<br />end;<br /><br />exports<br /> Initialize;<br /><br />begin<br /> Initialize;<br />end.<br /><br />Igor Zorkovnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-25147789788442398782016-11-13T09:59:02.524+03:002016-11-13T09:59:02.524+03:00Ну, наработки я выложил: http://rouse.drkb.ru/othe...Ну, наработки я выложил: http://rouse.drkb.ru/other.php#vm_core<br />А вот писать статью заново пока не охота (она из-за сбоя практически перед релизом стерлась - дурацкая ситуация, а копии в виде вордовского документа я никогда не делал)Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-77703097915805144232016-10-17T14:23:10.382+03:002016-10-17T14:23:10.382+03:00Было бы интересно почитать… Надеюсь хорошее настро...Было бы интересно почитать… Надеюсь хорошее настроение посетит вас… Пишите еще, а мы подождем!Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-46197831172168755042016-10-16T14:28:06.593+03:002016-10-16T14:28:06.593+03:00Ну были планы по написании статьи о реализации про...Ну были планы по написании статьи о реализации простейшей виртуальной машины на базе стрешки Пирса/штриха Шеффера, даже исходный код подготовил, да все как-то руки не дойдут.<br />Так что пока что в планах ничего нет, если будет настроение и желание - может еще что-то напишу.<br />Спускаться в нулевое кольце не охота (это для сишников уже материал будет), а описывать что-то высокоуровневое не охота, для этого есть форумы.Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-61029954710879901152016-10-03T16:34:38.516+03:002016-10-03T16:34:38.516+03:00Спасибо!
А есть ли в планах на ближайшее будущее ...Спасибо!<br /><br />А есть ли в планах на ближайшее будущее опубликовать еще что нибудь?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-46706904023577705562016-09-08T11:52:22.850+03:002016-09-08T11:52:22.850+03:00http://rouse.drkb.ru/blog/add_tls.zip
Собирать в 6...http://rouse.drkb.ru/blog/add_tls.zip<br />Собирать в 64 битном режиме, изменения в функциях GetTlsTableAddr и PatchАлександр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-9397112955124088852016-09-08T10:11:41.915+03:002016-09-08T10:11:41.915+03:00Хм, я вообще про это забыл, сделаю :)Хм, я вообще про это забыл, сделаю :)Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-27926910269229345162016-09-06T15:11:08.308+03:002016-09-06T15:11:08.308+03:00очевидно ждать не стоит?..очевидно ждать не стоит?..Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-79272913504779280412016-08-31T14:39:31.012+03:002016-08-31T14:39:31.012+03:00с 64 битным процессом нужно работать из 64 битного...с 64 битным процессом нужно работать из 64 битного приложения (иначе из-за размера указателей получите не валидную информацию).<br />Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-28706194787964513282016-08-31T12:58:29.115+03:002016-08-31T12:58:29.115+03:00есть игра game.exe 64битная. в памяти этой игры на...есть игра game.exe 64битная. в памяти этой игры нахожу значение...<br />Нахожу указатель на это значение который имеет вид "GAME.exe"+01CDFBD0->0043DE40+$0->4A81F600+$790 и т.д до исходного значения.<br /><br />Если бы это была 32битная игра то game.exe+01CDFBD0 можно было найти через след. функцию:<br /><br /><br />function GetModuleBaseAddress(ProcessID: Cardinal; MName: String): Pointer;<br />var<br /> Modules : Array of HMODULE;<br /> cbNeeded, i : Cardinal;<br /> ModuleInfo : TModuleInfo;<br /> ModuleName : Array[0..MAX_PATH] of Char;<br /> PHandle : THandle;<br />begin<br /> Result := nil;<br /> SetLength(Modules, 1024);<br /> PHandle := OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, False, ProcessID);<br /> if (PHandle <> 0) then <br /> begin<br /> EnumProcessModules(PHandle, @Modules[0], 1024 * SizeOf(HMODULE), cbNeeded);<br /> SetLength(Modules, cbNeeded div SizeOf(HMODULE)); <br /> for i := 0 to Length(Modules) - 1 do //Start the bucle <br /> begin<br /> GetModuleBaseName(PHandle, Modules[i], ModuleName, SizeOf(ModuleName));<br /> if AnsiCompareText(MName, ModuleName) = 0 then <br /> begin<br /> GetModuleInformation(PHandle, Modules[i], @ModuleInfo, SizeOf(ModuleInfo));<br /> Result := ModuleInfo.lpBaseOfDll;<br /> CloseHandle(PHandle);<br /> Exit;<br /> end;<br /> end; <br /> end; <br />end;<br /><br /><br />и использовать как <br /><br />WHandle := FindWindow(nil, 'Название игры');<br /> if wHandle = 0 then <br /> begin<br /> ShowMessage('notfound');<br /> end else <br /> begin<br /> GetWindowThreadProcessId(WHandle, @ProcessID);<br /> Address := Integer(GetModuleBaseAddress(ProcessID, 'GAME.exe')) + $01CDFBD0;<br /> lbl2.Caption:='$'+inttohex(Address,8);<br /><br /><br />а так как игры 64битная то функция выдает 0.<br />Помогите переписать функцию под х64Anonymoushttps://www.blogger.com/profile/05189679718875034249noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-61397003531231293152016-04-11T16:09:16.037+03:002016-04-11T16:09:16.037+03:00Угу, чуть попозже исходники обновлю и отпишусь.Угу, чуть попозже исходники обновлю и отпишусь.Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-67370869023763212582016-04-08T16:03:47.907+03:002016-04-08T16:03:47.907+03:00> Если вдруг заинтересуетесь аналогичным патчем...> Если вдруг заинтересуетесь аналогичным патчем 64-битных образов - пишите, это легко делается, просто не охота раздувать объем статьи :)<br /><br />Пишем, очень интересует. Заранее спасибо!Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-38393116765329321382016-03-21T15:32:28.060+03:002016-03-21T15:32:28.060+03:00Лениво :)Лениво :)Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-89382267421062327012016-03-21T10:29:18.662+03:002016-03-21T10:29:18.662+03:00Отличная статья, спасибо! На хабр надо для популяр...Отличная статья, спасибо! На хабр надо для популяризации Delphi )Anonymoushttps://www.blogger.com/profile/01820428529983164423noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-47972332974842696772016-03-18T23:12:23.944+03:002016-03-18T23:12:23.944+03:00TCanvas в данном случае является TControlCanvas, д...TCanvas в данном случае является TControlCanvas, для которых Device context'ы хранятся в глобальном "пуле" ограниченного размера. При создании нового контекста, VCL приходится освобождать место в пуле, освобождать ранее созданные контексты.Anonymoushttps://www.blogger.com/profile/12299051622162523909noreply@blogger.com