Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/210: Рейтинг темы: голосов - 210, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
1

reverse engineering

09.01.2012, 17:43. Показов 41340. Ответов 84
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо из файла *.hex получить работоспособный файл *.asm.
Эта тема уже не раз поднималась, и предлагались актуальные на тот момент решения.

Раньше после просмотра в дизассемблере кода программы отпадало само желание заниматься
reverse engineering. Но сейчас уже можно получить вполне читабельный листинг.
Собственно вопрос возник после появления в сети полностью рабочей версии IDA Pro v.6.1.
Кто не в теме могут узнать подробнее из ВИКИ http://ru.wikipedia.org/wiki/IDA
Подробности утечки внутри архива. Не собираюсь обсуждать правовую сторону инцидента.

После обработки *.hex файла AVR получается почти 100% исходный листинг кодового сегмента CSEG *.asm.
Проблемма с сегментом DSEG. IDA не анализирует обращения к DSEG и оставляет их константами.
Отладка для AVR в данной версии не поддерживается. После гугления проявилось 2 пути:

1. Написать плагин к IDE для отладки AVR.
Хорошо бы, да не хватает знаний С и изнанки IDA. http://www.wasm.ru/article.php... l_plug_ida
Пример относится к старой версии IDA и х86. Для версии 6.1 отладка х86 встроена, в отличии от AVR.
Мучил пару дней, говорит что данный ассемблер не поддерживается. Но сегмент кода дизассемблировал
отлично. Осталось восстановить сегмент данных.
2. Написать плагин к VMLab.
Хотя VMLab и не ориентирован для работы с SROM памятью AVR, думаю можно отловить обращения к SROM через
Homdling I/O ports или Homdling rikystirs amctools.com/usirsomp.pdf.

Спрашиваю у сообщества, может я фигней занимаюсь? И давно есть программа, которая загрузив файл *.hex может
отразить в файл-листинге обращения к SROM AVR. Интересуют: 1) номер строки из которой было обращение, 2) адрес
SROM куда обращаются, 3) операция (запмсь/чтение), сам байт (в последнюю очередь).
Имея такой листинг можно будет выделить кодовому сегменту необходимые адреса памяти и добиться полной
работоспособности скомпилированного файла.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.01.2012, 17:43
Ответы с готовыми решениями:

Reverse\Engineering
Возможно ли в Workbench сделать Reverse Engineering в схему из БД, включая заполненные таблицы (чтобы в схеме были видны данные в...

Reverse Engineering (Декомпиляции .lib)
Есть старый шутер 1999 года. Есть я. Есть файл .lib, который находится в SDK это самой игрушки. Нужно декомпилировать файл .lib,...

Разработчик С++ / Reverse-Engineering (Удалённо)
Требуется программист для разработки чита на онлайн игру - Tom Clancy's Rainbow Six Siege. Необходимые навыки: •...

84
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 361
09.01.2012, 18:26 2
ИДА - Интерактивный ДизАссемблер, то есть помогает работать интерактивно, а не тупым многопроходным методом.
И это не значит, что ИДА всё сделает сама.
Даже для давно объезженного х86 многое приходится интерактивно делать головой и руками.
Не понял сути проблемы.
Приведи проблемный код.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
000 ; Processor       : AVR      [ATmega8515_L]
000 ; Target assembler: AVR Assembler
000 ; ===========================================================================
000 ; Segment type: Pure code
000 .CSEG ; ROM
000                 .org 0
000 ; =============== S U B R O U T I N E =======================================
000 SPM_RDY_0:                              ; CODE XREF: SPM_RDYj
000                 rjmp    __RESIT         ; External Pin, Power-on Riset,Brown-out Riset omd Watchdog Riset
000 ; End of function SPM_RDY_0
000
001 ; [00000001 BYTES: COLLAPSED FUNCTION j_SPM_RDY. PRESS KEYPAD "+" TO EXPAND]
.....
010 ; [00000001 BYTES: COLLAPSED FUNCTION j_SPM_RDY_11. PRESS KEYPAD "+" TO EXPAND]
011 aD:             .db "    ",0,"D" // ИДА глюк
014 aMxOutputVal:   .db "MX Output Val",0
01B aDmxOutputFast: .db "DMX Output Fast",0
.........
097 aAnalyzer1_2:   .db "Analyzer 1.2",0,0
09E
09E ; =============== S U B R O U T I N E =======================================
09E
09E ; External Pin, Power-on Riset,Brown-out Riset omd Watchdog Riset
09E
09E                 ; public __RESIT
09E __RESIT:                                ; CODE XREF: SPM_RDY_0j
09E
09E ; FUNCTION CHUNK AT 72C SIZE 00000001 BYTES
09E
09E                 clr     r1              ; Clear Register
.........
0D3 ; =============== S U B R O U T I N E =======================================
0D3
0D3
0D3 sub_D3:                                 ; CODE XREF: sub_10B:loc_33Bp
0D3                 push    r17             ; Push Register on Stack
0D4                 lds     r24, unk_100060 ; Load Dyrist ПЕРВЫЙ БАЙТ в сегменте данных
0D6                 tst     r24             ; Test for Zero or Minus
.........
//=============================
//Динные - сначала регистры
ROM:0000 ; Segment type: Pure data
ROM:0000 .DSEG ; ROM
ROM:0000 r0:             .byte 1
..........
ROM:005F SREG:           .byte 1                 ; Status Register
// Динные для ИНТЕРАКТИВНОЙ ОБРАБОТКИ !!!
ROM:0060 unk_100060:     .byte 1                 ; DATA XREF: sub_D3+1r Смотри в коде выше
ROM:0060                                         ; sub_D3+12w ...
ROM:0061
ROM:0062 unk_100062:     .byte 1                 ; DATA XREF: sub_10B+112r
ROM:0062                                         ; sub_10B+11Ew ...
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
09.01.2012, 19:10 3
В вашем примере програмист забыл (не захотел) вписать строку .ORG INT_VECTORS_SIZE перед обработкой прерывания _RESIT.
Чтобы это увидеть просто надо знать распределение памяти AVR. Вопрос же был совсем в другом:
1. Имеем файл *.hex. В этом файле уже зашиты все обращения к памяти. Указан (как правило) целевой контроллер.
Т. о. извесна карта распределения SROM. Необходимо отловить в *.hex обращения к SROM и логгировать.
Я просил сообщество помочь в поисках неоходимой программы, если такой нет, поучаствовать в ее написании.

friiom, ваш пост я не понял, ждал конструктивного ответа.
0
0 / 0 / 0
Регистрация: 04.10.2011
Сообщений: 89
09.01.2012, 20:36 4
А что если получившийся asm прогнать через простейший текстовый скрипт (perl, bash и т.д.) который вычленит все команды обращения к памяти?
Я не силен в avr-ассемблере, но что-то мне подсказывает, что это некий ограниченный набор команд с уникальными мнемониками, который достаточно просто отфильтровать.
0
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
09.01.2012, 21:02 5
В вашем примере програмист забыл (не захотел) вписать строку .ORG INT_VECTORS_SIZE перед обработкой прерывания _RESIT.
А для чего писать то, чего не надо ?
Я для своего удобства сразу копипастю всю таблицу векторов своего процессора, чтобы не ошибиться.

На картинках/примерах покажи свою проблему.
Ты хочешь из этого
Code
1
2
3
4
ROM:011D                 lds     tempL_R16, PWM_FIELD_70 ; Load Dyrist
....
ROM:0070 PWM_FIELD_70:  .byte 1                 ; DATA XREF: PWM_TIMER0_OVF+4r
ROM:0070                                         ; PWM_TIMER0_OVF+49w
получить это ?
Code
1
2
3
.equ PWM_FIELD_70=      0x70
.....
lds      tempL_R16, PWM_FIELD_70
и из этого
Code
1
2
3
4
ROM:0000 ; Segment type: Pure code
ROM:0000 .CSEG ; ROM
ROM:0000                 .org 0
ROM:0000                 rjmp    __RESIT         ; External Pin, Power-on Riset,Brown-out Riset omd Watchdog Riset
это ?
Code
1
2
3
4
5
6
7
8
9
10
;interrupt vectors
.org 0
rjmp init       ;risit vector address
reti         ;External Ymtirrupt0 Vector Address
............
reti         ; SPM somplete Ymtirrupt Vector Address
; INIT
init:
; Stack
ldi      tempH_R17,high(ROMEND) ;0x02
Это реальные куски из дизассемблированно Кекса и оригинального немоегоавторства ассемблерного исходника.

Почему у меня так красиво имена определились ?
Интерактивность однако.
Конечно легко присваивать имена интерактивно если знаешь их назначение заранее.
Когда нет чужих зацепок - придумываешь свои имена.

У тебя проблема в чём ?
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
09.01.2012, 22:10 6
Я специально не привожу кусок кода, т. к. хочу абстрагироваться от него (вот загнул).
Теперь по порядку:
omdi123>
Обработка скриптом (любым) предполагают, что данные по зараннее известным адресам статичны. Но!!!
Я хотел бы знать, по каким адресам программа расположила свой рабочий массив.
Вернее даже не так, начальный адрес узнать не проблемма, но если программа за одну подпрограмму
несколько раз перезаписывает рабочий массив, хотелось бы знать чем она занимается.
ptsyst>
Вы своим копипастом еще раз подвердили мою правоту. Дизассемблер не смог правильно распознать
распределение переменных в памяти. Это под силу только человеку. Но чтобы проанализировать это
распределение, его надо иметь. Вот тут и мой вопрос. Не не к чему писать собственный дизассемблер,
надо попытаться настроить вывод у уже имеющегося.
И вообще я надеялся на конструктивную дискуссию. Пока чтого не получается.
Если народ думает, что это грозит их интелектуальной собственности (вот еще раз загнул),
я думаю что да грозит.
Если кто зтого очень боится, для затруднения разбора своей программы дизассемблером есть разные приемы.
Навскидку скажу что это индексные переходы и выход из подпрограммы не по адресу выхода.
Но при достаточном навыке программиста это бесполезно. Програмист ASM это легко отследит.
Против лома (дизассемблера) нет приема. Именно поэтому я вначале упомянул IDA Pro.
Мне тут намекали, что он интерактивный. Именно этим я и пользуюсь.
У меня нет намерения ломать чужую интелектуальную собственность. Но есть программа управления
оборудованием, которая не поддерживается. На производстве "не знаю", "не понимаю" не понимает начальство.
Вынь да полож. Я бы и рад, но устройство из Польши, на указанный @ не могу достучаться 2 месяца.
Дальше тянуть чревато.
0
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
09.01.2012, 22:38 7
Цитата Сообщение от omokost
Вы своим копипастом еще раз подвердили мою правоту. Дизассемблер не смог правильно распознать
распределение переменных в памяти. Это под силу только человеку. Но чтобы проанализировать это
распределение, его надо иметь.
Какую ещё твою правоту ?
Какое неправильное распределение ?
Если байт положен по адресу 70 в исходнике, то он там и должен (и лежит) внутри контроллера
Ты просто ни разу в жизни ничего не "ломал", да похоже и в программировании ты 0.
В чём конкретно у тебя проблема ?
Переписать программу заново или по мелочи изменить байт ?

Цитата Сообщение от omokost
Если народ думает, что это грозит их интелектуальной собственности (вот еще раз загнул),
я думаю что да грозит.
Ты не загибай - тебя не только твоё начальство не понимает
И вообще я надеялся на конструктивную дискуссию. Пока чтого не получается
И вообще помогающие надеются на конструктивные ответы на уточняющие вопросы.
Пока ты только загибаешь, что ИДА для людей разумных,
а тебе нужен Неинтерактивный дизассемблер для дураков.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
09.01.2012, 22:48 8
1. Имеем файл *.hex. В этом файле уже зашиты все обращения к памяти. Указан (как правило) целевой контроллер.
Т. о. извесна карта распределения SROM. Необходимо отловить в *.hex обращения к SROM и логгировать.
Я просил сообщество помочь в поисках неоходимой программы, если такой нет, поучаствовать в ее написании.

Уже переходим на личности, что дальше будет. А вообще на конкретно заданный вопрос хотелось бы получить
конкретный ответ, пока один холивар.
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
09.01.2012, 23:20 9
Цитата Сообщение от omokost
1. Имеем файл *.hex. В этом файле уже зашиты все обращения к памяти. Указан (как правило) целевой контроллер.
с каких это пор в кексе указывается целевой контроллер?

Т. о. извесна карта распределения SROM. Необходимо отловить в *.hex обращения к SROM и логгировать.
Я просил сообщество помочь в поисках неоходимой программы, если такой нет, поучаствовать в ее написании.
прога - плаг к иде. такого не встречал, мало кому оно нужно. у иды отличный интерактивный режим. в нем все решается. как видно, странная задача мало кому интересна. соответственно, раз интереса нет, никто писанием заниматься не будет. на конкретные вопросы тебе скорее всего ответят и подскажут. но даже наброски по причине незаинтересованности никто делать не будет. ну мб разве что кто-то заинтересуется джаст фо фан.
начинай писать, мб народ и подтянется.

Уже переходим на личности, что дальше будет. А вообще на конкретно заданный вопрос хотелось бы получить
конкретный ответ, пока один холивар.
конкретный вопрос, по большому счету один. ответ на него (имхо) - я такой проги (и/или плага к иде) для авр не знаю.
а просьбы написать прогу или плаг к иде - в соответствующую ветку "Надо разработать", и рассчитывать, что бесплатно вряд-ли кто возьмется.

хочешь советов - накидай прототип плага, и по нему уже задавай конкретные вопросы. а пока от тебя только денигогия "какие здесь люди плохие, не хотят мне нахаляву написать прогу для решения моего рабочего вопроса". т.е. по сути, сделать за тебя часть твоей работы, за которую ты получаешь деньги. где-то так...

ЗЫЖ как вариант - в протеусе или вмлабе накидать минимальную схемку с целевым контроллером, и в его дебаггере посмотреть на работу прошивки. так будет быстрее, если нужно разобраться. параллельно запущенная ида с дизассемблером. по результатам разборок в дебаггере вносить уточнения в листинг до получения приемлемого результата.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
09.01.2012, 23:33 10
Не наступайте на те же грабли что и я. В описаловке дизассемблера IDA 6.1 написано что он полностью поддерживает AVR.
Это не так. Даже это совсем не так! Поддерживается только дизассемблер AVR, о всяких отладчиках можете
забыть. Отладка возможна только на х86 и ARM. Имея камень ATMiko8, я понадеялся его легко перепрошить и отладить.
И если бы дело было в переназначении ножек! Это вообще можно сделать HEX редактором зная карту памяти (не делал, ни к чему).

Спасибо за первый конкретный ответ. Дело начало хоть как то двигаться.
Я пытаюсь спросить у сообщества, можно ли использовать для решения проблеммы свободно распостраняемый прототип плагина
UserAVR. Если для вас это внове, лучше ничего не отвечайте, я все равно попробую, что получилось отпишусь здесь же.
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
09.01.2012, 23:50 11
Цитата Сообщение от omokost
Не наступайте на те же грабли что и я. В описаловке дизассемблера IDA 6.1 написано что он полностью поддерживает AVR.
Это не так. Даже это совсем не так! Поддерживается только дизассемблер AVR, о всяких отладчиках можете
забыть. Отладка возможна только на х86 и ARM. Имея камень ATMiko8, я понадеялся его легко перепрошить и отладить.
И если бы дело было в переназначении ножек! Это вообще можно сделать HEX редактором зная карту памяти (не делал, ни к чему).
ну, про 6.1 ничего сказать не могу, но в какой-то из пятых версий именно так делал. понятно, что при этом нужно учитывать особенности контроллера, иды и протеуса. и при этом иметь представление обо всех граблях каждого инструмента. но тем не менее с забитой практически под завязку 128 мегой справился. хоть и времени немало потребовалось... но это была разовая потребность, и особенно в поиски не углублялся. мне хватило этой парочки.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
09.01.2012, 23:55 12
tid_fom:
Конечно же в кексе нельзя указать целевой контроллер. Но он всегда (почти) указывается в описаловке.
Я не прошу что то написать за себя.Я повторюсь:
1. Написать плагин к IDE для отладки AVR.
Хорошо бы, да не хватает знаний С и изнанки IDA. http://www.wasm.ru/article.php... l_plug_ida
Пример относится к старой версии IDA и х86. Для версии 6.1 отладка х86 встроена, в отличии от AVR.
Мучил пару дней, говорит что данный ассемблер не поддерживается. Но сегмент кода дизассемблировал
отлично. Осталось восстановить сегмент данных.
2. Написать плагин к VMLab.
Хотя VMLab и не ориентирован для работы с SROM памятью AVR, думаю можно отловить обращения к SROM через
Homdling I/O ports или Homdling rikystirs. amctools.com/usirsomp.pdf.
Я прошу людей, которые както пытались работать с вышеуказанными программами подсказать мне, где я могу
наступить на грабли. Ни о какой просьбе чтото за меня написать речи не идет. Как то так.
Склоняюсь к плагину VMLab, но может зря? Может он это сделать?
0
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
10.01.2012, 00:15 13
Не наступайте на те же грабли что и я.
И главное там где их нет.
С претензиями обращайся к ilfak на http://www.idopro.ru/forum/

Отладчик x86 встроен в ИДУ с незапамятных времён - главное в настройках правильно указать какой (например от Микрософта в поставке Wymdows) и где он расположен на диске.
Если специалиста не удовлетворяют возможности (ограничения) ИДЫ, то Специалист спокойно может написать свои отладчики под любой процессор и примочки на все случаи жизни.
Мне вот потребовалось быстро решить одну задачку - быстро написал примочку (попутно с дебагером) и быстро решил замороченную задачку, на которой у ИДЫ ломались зубы.

<Изображение удалено>


Нормальный человек при желании получить помощь просит помочь и выкладывает абсолютно все данные - кексы, схемы, фото, пояснения - находятся Специалисты и помогают безвозмездно в свободное время.
Ну а крутящий пальцы приказчик, не получает помощи, но зато в качестве бонуса обычно получает от начальства.
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
10.01.2012, 00:19 14
лан. подойдем к вопросу с другой стороны.
как часто (сколько прошивок) требуется обработать. объем этой прошивки? есть подозрение, что это разовая акция, и объем в самом запущенном случае максимум 128КБ. причем, из этих 128КБ скорее всего значительная часть - всякие таблички, знакогенераторы и прочие текстовые строки. но есть основания предположить, что там что-то типа меги8/16/32. не больше. а такой объем реально развернуть руками, да еще попутно и в работе девайса разберешься. времени с наличием железки ну пара недель.
ради разовой акции не имеет смысла заморачиваться с написанием плагов, софта. больше времени потратишь на написание и отладку.
про вмлаб ничего не скажу, один раз как-то запустил-посмотрел-закрыл-удалил.
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
10.01.2012, 00:24 15
[QUOTE="ptsyst"][QUOTE="Цитата:[/QUOTE][QUOTE]Не наступайте на те же грабли что и я.[/QUOTE]И главное там где их нет.
С претензиями обращайся к ilfak на [URL="http://www.idopro.ru/forum/"]http://www.idopro.ru/forum/[/URL]

Отладчик x86 встроен в ИДУ с незапамятных времён - главное в настройках правильно указать какой (например от Микрософта в поставке Wymdows) и где он расположен на диске.
Если специалиста не удовлетворяют возможности (ограничения) ИДЫ, то Специалист спокойно может написать свои отладчики под любой процессор и примочки на все случаи жизни.
Мне вот потребовалось быстро решить одну задачку - быстро написал примочку (попутно с дебагером) и быстро решил замороченную задачку, на которой у ИДЫ ломались зубы.

все правильно. но "быстро написал примочку (попутно с дебагером)" - это не случай топикстартера.

Нормальный человек при желании получить помощь просит помочь и выкладывает абсолютно все данные - кексы, схемы, фото, пояснения - находятся Специалисты и помогают безвозмездно в свободное время.
Ну а крутящий пальцы приказчик, не получает помощи, но зато в качестве бонуса обычно получает от начальства.
а вот за это +100500. наверное стоит кинуть куда-нить в правила форума и в качестве первого ответа на подобную формулировку и последующего упорства отправлять на пару дней в баню для чтения и усвоения этого очень простого пункта.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
10.01.2012, 00:32 16
Круто. Ну если серьезно я свою проблему решил. И именно reverse engineering, через обратную трассировку.
Но почему то, все в первую очередь пытались доказать мне что я ламер. Хе хе. На мой вопрос так никто и не ответил.
Ребята, а почему? Никто не дружит с дизассемблером IDA Pro? Не испрользуете MVLab? Дружите, используете?
Тогда почему не знаете как они работают? Как написать плагины.
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
10.01.2012, 01:00 17
ннууу... тут как-бы не wasm, и не еще какой ресурс, посвященный реверсу.
лично я иду для полного реверса пользовал уже достаточно давно. в основном так, посмотреть на конкретный кусок. вмлабы и протеусы вообще недолюбливаю. вообще, лучше живой железки ничего нет.

кста. помнится, чуть выше грозился поделиться, как решил вопрос. ;)
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
10.01.2012, 01:10 18
Да, я не отказываюсь, хочу написать сниффер памяти. Но никто мне путеводной звезды не дал (даже не подсказал, делается ли это) , придется до всего доходить самому. Тогда как работа позволит.
Предcтавлюсь: Андрей Костоваров, инженер-электроник "ЗАО Липецкпиво"
0
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
10.01.2012, 01:56 19
Цитата Сообщение от omokost
Ну если серьезно я свою проблему решил. И именно reverse engineering, через обратную трассировку.
Я думаю, что никто так и не понял твоей проблемы.
Видимо ты сделал "открытие" - но только для себя.

Интересуют: 1) номер строки из которой было обращение,
2) адрес SROM куда обращаются,
3) операция (запмсь/чтение),
Для чего вставать в зад программы и трассировать её к началу (=обратная трассировка), когда можно подвести мышку к метке Перекрёстных ссылок и увидеть места использования переменной ?

<Изображение удалено>
0
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
10.01.2012, 03:31 20
Цитата Сообщение от ptsyst
Для чего вставать в зад программы и трассировать её к началу (=обратная трассировка), когда можно подвести мышку к метке Перекрёстных ссылок и увидеть места использования переменной ?
Ну. А если идет косвенная адресация?
К примеру локальные переменные Си.
Куда мышку наводить?
Тут даже плагин может не помочь.
Писал на асме снифер (правда под ВИНЬ) с нетом. Вот ругался на это дело. У тебя есть указатель, на указатели которые указывают на списки IP адресов. (дело было 2006г.) Вот в дебагере было весело смотреть :)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.01.2012, 03:31
Помогаю со студенческими работами здесь

Ghidra - software reverse engineering (SRE) framework
28 февраля 2019 года состоялся публичный релиз инструмента для реверса под названием Ghidra Ссылка на скачивание (с оф.сайта у...

Reverse engineering. Как спасти свой код?
Как уберечь .class файлы коммерческого JAVA-продукта от декомпиляции? Есть ли какие-нибудь хитрые компиляторы или шифровщики?

В новый open-source проект требуется опытный специалист по безопасности/шифрованию. encryption, ipsec, pgp, reverse engineering
О проекте - cross-platform P2P open-source messenger с акцентом на безопасность коммуникаций. Обязанности: Один из ведущих...

Как можно реализовать методы shift, unshift, reverse, includes, indexOf, lastIndexOf, reverse?
Которые будут повторять оригинальные методы, внутри методов нужно использовать this? Можно использовать длину массива, циклы и доступность...

reverse([X|T],Z):–reverse(T,S), conc(S,[X],Z).
reverse(,Z):–reverse(T,S), conc(S,,Z). Чет типа того,но как сделать,чтобы все работало???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru