169 похожих чатов

Какая ж она тогда константа, если может меняться?

32 ответов

3 просмотра

в delphi константы могут меняться 😂

Boris Usievich
в delphi константы могут меняться 😂

Да везде константы могут меняться :)

Handatros
на то они и константы 😂

Не, если есть доступ к памяти - то константу можно поменять. Еще константа может поменяться по другим причинам - например скорость света/звука уточнялась кучу рез за последние века, а точное значение числа Пи еще досихпор не посчитали 😂

Boris Usievich
нет 😏

Хочет опять поспорить 🤣

Александр (Rouse_) Багель
Хочет опять поспорить 🤣

это не спор, это констатация факта 🤷🏻‍♂️

Boris Usievich
это не спор, это констатация факта 🤷🏻‍♂️

Факты таковы что в софте константа это набор байт в определенной обрасти памяти которые можно изменить и ничего ты с этим сделать не сможешь :)

Александр (Rouse_) Багель
Факты таковы что в софте константа это набор байт ...

ну да, залезть в сегмент кода и править по живому все, что проинлайнилось🤣

Boris Usievich
Это не в языке 😝

А я не говорил про язык

Boris Usievich
я говорил :)

так вот меняться они могут везде независимо от языка :)

Александр (Rouse_) Багель
Факты таковы что в софте константа это набор байт ...

не факт const A = $12345678; const B = 0; function AAA: Int32; begin result := A; end; function BBB: Int32; begin result := B; end; и как поменять область памяти для B при реальном кодегене: function AAA: Int32; var Result: Int32; begin // -- Part #0 -- Line #10 -- 0: ¸xV4. [B8 78 56 34 12 | MOV EAX{@Result},$12345678 // -- Part #1 -- Line #11 -- 5: Ã |C3 | RETN end; function BBB: Int32; var Result: Int32; begin // -- Part #0 -- Line #15 -- 0: 3À [33 C0 | XOR EAX{@Result},EAX // -- Part #1 -- Line #16 -- 2: Ã |C3 | RETN end;

Karagy
не факт const A = $12345678; const B = 0; functio...

В смысле ты не знаешь и хочешь чтобы я показал как это сделать?

Karagy
не факт const A = $12345678; const B = 0; functio...

Я изначально писал про совсем другое. const a = 1;

Александр (Rouse_) Багель
В смысле ты не знаешь и хочешь чтобы я показал как...

я привел пример когда для нулевой константы не завели истанса даже прицепом к инструкции процессора. а воспользовались ксором

Karagy
я привел пример когда для нулевой константы не зав...

это называется инлайн, есесно их нужно будет править на уровне опкодов

Александр (Rouse_) Багель
так вот меняться они могут везде независимо от язы...

Технически, константа может размещаться по адресу устройства или еще какого регистра или счетчика, которому пофиг, что в него пишут.

Sergey Bodrov
Технически, константа может размещаться по адресу ...

Не может, она сначала должна быть туда откудато подгружена

Александр (Rouse_) Багель
Не может, она сначала должна быть туда откудато по...

Ну, допустим, подгрузили чего-то. Но прочитано будет другое.

Sergey Bodrov
Ну, допустим, подгрузили чего-то. Но прочитано буд...

Серег, я тебе как старый прожжонный реверсер ща скажу. Вот смотри есть железка, в неё на заводе зашивают серийный номер и ты его оттуда можешь только прочитать. Это константа. Но обладая моими знаниями можно легко сделать чтобы вместо этой константы возвращалось ЛЮБОЕ другое число, хоть тот-же GetTickCount. Так вот моя работа заключается в том, что никто, даже с такими знаниями как у меня не смог провернуть такой трюк. Не рассказывайте мне что сделать можно, а что нельзя. Все сделать возможно, было бы лишь желание :)

Александр (Rouse_) Багель
Серег, я тебе как старый прожжонный реверсер ща ск...

С виртуальной адресацией в userspace такое можно провернуть. В моем случае часть логики (шифрование, фильтрация, валидация данных) выполняется в отдельной сетевой железке. Можно, конечно, ее эмулировать (и я это делаю для отладки), но в продакшене чтобы извлечь данные из чипа надо специальные знания и умения (играться с питанием с астрономической точностью, сверлить дырки в чипе). Ну то есть сломать можно, но сложно. И каждое новое поколение чипов лучше защищено.

Sergey Bodrov
С виртуальной адресацией в userspace такое можно п...

Как правило используются другие подходы, смысл ковырять там где защищяют? Ковыряют там где у тебя дыра :)

Александр (Rouse_) Багель
Как правило используются другие подходы, смысл ков...

Я даже больше скажу, там у меня не дыра, а специально оборудованные ворота (отладочные логи, сигнальные файлы и консольные команды), они документированы и удобны. Есть еще официальный документированный API, и SDK. Но хакеры не ищут легких путей, а лезут в шифрованную базу данных, перехватывают обращения к ней.

Sergey Bodrov
Я даже больше скажу, там у меня не дыра, а специал...

Как бы сделал я - снял бы трассу с расшифровкой, выделил бы участок где принимается решение что именно нужно расшифровывать и зациклил бы этот участок вытащив через него все данные в нужном мне виде, т.е. я бы сам ни в какую криптографию бы не лез, мне не потребовалось бы изучать аппаратную часть - я бил бы там где у тебя дыра. Твой код сам бы для меня все услужливо сделал. Этот подход не раз применял, и от него достаточно сложно (если вообщзе возможно) защититься.

Александр (Rouse_) Багель
Как бы сделал я - снял бы трассу с расшифровкой, в...

Грубо говоря, там железка с VPN, а софтина моя только ей управляет и пользуется. Смысла ее ковырять особо и нет, тем более ест готовый SDK.

Ты можешь легко посмотреть исходник любой страницы из интернета. А можешь получить эту страницу без модема или роутера, чисто на эмуляции модема на звуковой карте, как хакеры прошлого века? =)

Sergey Bodrov
Ты можешь легко посмотреть исходник любой страницы...

первое думаю да. со старлинком мало шансов, заткнули дыры. а так то мы спутниковый интернет как-то вполне успешно ловили :) на тарелку. только на прием, понятно

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта