Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред

Check this out!


[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 503 | 52 | 243

ASM & Reverse engineering №3 Аноним # OP  02/07/17 Вск 15:34:24  1015083  
src.png (1Кб, 250x200)
2.png (25Кб, 799x820)
3.png (10Кб, 718x274)
4.png (3Кб, 643x337)
В этом треде мы изучаем самый компактный и низкоуровневый язык Ассемблер и смежную с ним область: Реверс-инженеринга (RE).

Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.
Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.

Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.

Шапка треда в процессе пополнения, пока так.

Книги по RE:
https://beginners.re/ - "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!
https://www.goodreads.com/shelf/show/reverse-engineering - список книг

Сайты по RE:
http://wiki.yobi.be/wiki/Reverse-Engineering
https://www.reddit.com/r/ReverseEngineering/comments/hg0fx/a_modest_proposal_absolutely_no_babies_involved/
http://www.program-transformation.org/Transform/ReengineeringWiki
http://blog.livedoor.jp/blackwingcat/
https://yurichev.com/blog/
http://wiki.xentax.com/index.php/DGTEFF

Все книги и статьи Криса Касперски (R.I.P.)
https://yadi.sk/d/CxzdM1wyea4WP

Книги по ассемблеру:
"Архитектура компьютера" Э. Таненбаум
С.В. Зубков: Assembler. Язык неограниченных возможностей.

Сайты по ассемблеру:
Замена почившему wasm.ru- https://wasm.in/
https://www.unknowncheats.me/wiki/Assembly
http://asmworld.ru/
https://software.intel.com/en-us/articles/intel-sdm
http://www.nasm.us/doc/
https://sourceware.org/binutils/docs/as/index.html#Top
https://msdn.microsoft.com/en-us/library/afzk3475.aspx

Для ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:
http://geoffchappell.com/
http://msdn.moonsols.com/
http://terminus.rewolf.pl/terminus/

Предыдущие
№1 https://arhivach.org/thread/223223/
№2 https://arhivach.org/thread/255168/
Аноним 02/07/17 Вск 19:51:21  1015220
О, даже Крис есть тут в списках. Я бы посоветовал еще добавить курс exelab. Ранее это было очень уж годно, а сейчас уж не знаю как. Кстати, ОП ты пробовал реверсить с помощью radare2? Стоит туда вкатываться как в альтернативу IDA? Хотя мне она нравится. Уж куда лучше, чем родна и любимая олля, жаль уже почившая.
Аноним 02/07/17 Вск 19:57:13  1015227
>>1015220
Я пробовал r2. Не рекомендую третий тред подряд, даже рядом с IDA не стоял, если тебе что-то серьезное нужно. А несерьезное можно хоть через objdump -D реверсить. Единственная причина использовать - кококо ида нешвабодная, дорогая, а ильфак пидар.

Алсо, что касается ольги, то ее клон вполне юзабелен, жив и здравствует, называется x64dbg.
Аноним 02/07/17 Вск 20:00:00  1015229
>>1015227
>Алсо, что касается ольги, то ее клон вполне юзабелен, жив и здравствует, называется x64dbg.

И как годно? Блин, надо бы грузануть, вспомнить старые-добрые времена, хех :)
Аноним # OP  02/07/17 Вск 20:52:05  1015252
>>1015220
>Кстати, ОП ты пробовал реверсить с помощью radare2?
Даже не понял, как начать. Какая-то хуета для хипстеров.
Аноним 02/07/17 Вск 21:30:12  1015281
Анон >>1000505, отпишись.
Аноним 02/07/17 Вск 21:59:22  1015291
>>1015281
Аюшки?
Я забил, пока катаю бота за кэш, раз своих мозгов не хватает.
Аноним 02/07/17 Вск 22:20:32  1015296
>>1015227
>Единственная причина использовать - кококо ида нешвабодная, дорогая, а ильфак пидар.
Но ведь это весомая причина, всё-таки.
Ковыряю сейчас r2+webui, в первом приближении сносно. Сравнивать с IDA пока нелепо, но с objdump ещё нелепей.
Аноним 02/07/17 Вск 23:11:33  1015315
Посоны, накидайте binary bomb для лоу-лвл новичка, пожалуйста. Гугол чего-то не оче релевантно выдаёт.
Аноним 02/07/17 Вск 23:13:14  1015316
>>1015315
Што? Поясни, что ты имеешь в виду. Какой-то фантастики начитался?
Аноним 02/07/17 Вск 23:57:36  1015329
>>1015296
Откуда вообще в этом итт треде взялось слово веб? У меня, например, бинарники по 10-20 метров, после анализа базы иды весят по полгига. Ида просто рисует нужные места листинга при переходе, а браузер как? Полностью грузит? Ну удачи ему, лол. Динамически подгружает при скролле? А если я долго скроллю?
Не пробовал вебморду, от консольного интерфейса впечатления в основном негативные, от функциональности тоже, новый нативный гуй тоже руки не дошли еще посмотреть.
Хорошего в веб-клиенте (или лучше в нативной ренедерилке, которая не будет продираться сквозь десятки слоев абстракций и песочниц, и не будет заставлять html/css делать не свойственные ему вещи) - только возможность запустить сложный анализ где-нибудь на соседней машине, пока на своей машине я лампово пишу скрипты и собираю сигнатурки для либ. Ну и совместная работа, куда же без нее, хотя с ней все очень сложно, нужен вменяемый undo, с которым все еще более сложно.
Аноним 03/07/17 Пнд 00:40:20  1015337
>>1015329
Не могу защищать radare2, так как с ним не работал, но не могу не заметить, что ты поехавший, если думаешь, что веб-интерфейс принципиально не может иметь возможности подгружать только нужные области данных. Говоря проще, хуйню несешь какую-то. Если ты имел в виду конкретную реализацию веб-интерфейса, а не веб-интерфейсы вообще, то ты просто очень плохо выразил мысль.
Аноним 03/07/17 Пнд 02:41:08  1015358
>>1015337
Перефразирую: количество анальной боли при реализации нативного интерфейса не идет ни в какое сравнение с той болью, которую придется испытать, чтобы сделать что-то хотя бы отдаленно юзабельное в браузере. Да, я имею в виду веб-интерфейсы вообще, и мне очень жаль, что индустрия до этого докатилась.
Аноним 03/07/17 Пнд 07:07:55  1015369
>>1015316
ну типа http://zpalexander.com/binary-bomb-lab-phase-1/ же
Аноним 03/07/17 Пнд 07:15:44  1015370
>>1015329
Ты какой-то из 90ых.
Анальную боль несут с++/жаба, а не нода. А экономить на байткоде в 2к17 может хотеть либо ембеддщик с 8-битной атмегой, либо старый пердун с устаревшими рефлексамм.
Загугли скрины уже, если самому некогда ковырять.
Аноним 03/07/17 Пнд 07:56:41  1015372
scr1.png (177Кб, 1024x739)
>>1015291
Как ты быстро.
У меня нет WoT и скачать для того, чтобы посмотреть, нет возможности. Изменить количество боёв - не проблема. А где создаётся второй запрос, не знаю. Мне нужно узнать, где функция шифрования, та, которая использует '/start?data='. В IDA нет ссылки на неё. Возможно, она с помощью VMProtect защищена, а может и косвенно вызывается, поэтому и ссылки нет.
OllyDbg 2.01 с плагином ScyllaHide (а может и без него, не проверял) нормально запускает программу. Запусти в отладчике, дождись, пока программа проверит валидность ключа, а потом поставь точку останова (Ctrl+G, название функции, когда перейдёт, жми F2) на WS2_32.send. Хотя разработчик для проверки ключа использует функцию WININET.HttpSendRequestA, то можно и на эту функцию поставить точку остановки.
И не забудь выключить ASLR, в данном случае это только мешать будет. Скопируешь в блокнот, сохранишь как *.reg файл. Или в реест залезь. Потом перезагрузись.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"MoveImages"=dword:00000000
Аноним 03/07/17 Пнд 11:38:51  1015467
00.jpg (493Кб, 1920x1080)
>>1015372
Бро, при запущенном боте этот БП срабатывает постоянно, даже когда тот ничего не делает.
Аноним 03/07/17 Пнд 14:27:15  1015581
>>1015467
>при запущенном боте
Если запустить программу, она дважды соединяется с сервером: проверка обновлений и проверка ключа. Затем ничего не передаётся. По крайней мере, у меня именно так. Вот после запуска и проверки нужно поставить брекпойнт.
Как вижу, передаётся 4 байта. Посмотри в Wireshark, что он там передаёт. Пингует сервер, что ли?
Аноним 03/07/17 Пнд 14:32:44  1015586
>>1015581
Увидел, передаётся 00000001. Поставь условный брекпойнт, Shitf+F2, [esp+0c] > 64
Аноним 03/07/17 Пнд 15:12:41  1015599
00.jpg (477Кб, 1920x1080)
>>1015581
Так же себя ведет, может в условии очепятка?
Аноним 03/07/17 Пнд 15:42:04  1015615
scr2.png (116Кб, 712x538)
>>1015599
Нет, теперь всё правильно. Размер буфера 0xC1, что больше 0x64. А что хотя бы передаёт? Текст или бинарные данные? Щёлкни на третьем, от вершины стека, параметре правой кнопкой мыши и нажми "Follow in Dump". Если там текст "GET /start?....", то нужно будет трассировать до функции шифрования. Сначала можно Ctrl+F9, таким образом отладчик остановится на первом ret, что как раз будет выходом из функции send. А дальше F7 или F8 и смотри, что там идёт. Нужно найти, где в стек кладётся адрес (07CB15C8 в данном случае). И найти, откуда он берётся. Где-то поблизости, если повезёт, будет функция шифрования.
Аноним 03/07/17 Пнд 15:51:49  1015622
>>1015615
Кстати, по адресам 00444B67 и 00444B90 что-то ксорится. Поставь брекпойнты там и посмотри, что там было изначально.
Аноним 03/07/17 Пнд 16:00:24  1015627
00.jpg (478Кб, 1920x1058)
>>1015615
>Посмотри в Wireshark, что он там передаёт.
Абсолютная тишина.
>Follow in Dump
Пикрелейтед
Эта апишка не может для чего-то еще использоваться, кроме передачи по сети? Общение между потоками, например, я хз.
Вообще я ловил два типа запроса, проверка ключа и этот start?data. Первый отправляется при запуске бота и старте боя, второй только при старте боя. А БП про который ты говорил срабатывает постоянно, я даже кнопку "в бой" не успеваю прожать.
Аноним 03/07/17 Пнд 16:30:40  1015662
>>1015627
>Абсолютная тишина
Подозрительно.
>для чего-то еще использоваться, кроме передачи по сети
Если в сеть не идёт, значит локально используется.
Попробуй брекпойнт на WININET.HttpSendRequestA. Или измени условие на
[[esp+8]] == "GET"
Аноним 03/07/17 Пнд 16:44:43  1015677
00.jpg (494Кб, 1920x1080)
>>1015662
>WININET.HttpSendRequestA
Попался этот самый запрос с data.
Не мог бы ты пояснить, куда копать дальше? По Ctrl-F9 меня кидает рядом, на 7129193D.
Аноним 03/07/17 Пнд 16:51:03  1015682
>>1015677
Может скупе или что-нибудь такое? Там шустрее будет общение.
Аноним 03/07/17 Пнд 18:36:03  1015735
>>1015369
В общем, какой-то локальный мемчик про какую-то скучную лабу. Решай крякми, реверси реальный софт, реверси свои собственные сэмплы, забей на эту хуйню.
Аноним 03/07/17 Пнд 19:42:50  1015785
>>1015735
> локальный мемчик
http://uu-kk.blogspot.ru/2014/06/of-binary-bombs-part-6.html
http://csapp.cs.cmu.edu/2e/bomblab.pdf
https://www.reddit.com/r/compsci/comments/5wzbfb/defusing_a_binary_bomb_phase_1/
https://github.com/petroav/CMU-assembly-challenge

>крякми
Ок, спасибо за наводку.
По сути, то же самое.
Аноним 03/07/17 Пнд 22:49:21  1015912
scr3.png (5Кб, 832x80)
>>1015682
Можно и так. А можно и здесь, как-то по теме треда всё же.
>>1015677
Предыдущий скрин, нашёл алгоритм шифрования, немного перепечатал с экрана, расшифровал и похоже, что передаются какие-то настройки. Почему так - не знаю. Скачал базовый набор для WoT на 2.5 Гб. И у меня отказывается загружаться CyberTank, если уже запущен клиент, а если сначала его, то не показываются танки. Как сделать, чтобы были доступны?
>куда копать дальше
Тебе надо найти, где данные шифруются. Если пролистнёшь по стеку (правое нижнее окно) вниз, то есть вероятность увидеть не шифрованные данные. Сейчас там видна шифрованная строка. Если не шифрованные данные есть, то жмёшь Ctrl+F9, оказываешься в конце функции, жмёшь F7/F8, оказываешься в предыдущей функции. Жми поочерёдно, посматривая в стек до тех пор, пока не дойдёшь до функции, которая шифрует строку. Ещё можешь сделать дамп программы (плагин OllyDumpEx, например), загрузи его в IDA, так гораздо удобнее будет.
Завтра попробую сделать сам, если не осилишь, ты только напиши, как эти танки в ангар добавить, когда они и так там уже стоят.
Аноним 04/07/17 Втр 12:58:28  1016125
>>1015912
>нашёл алгоритм шифрования, немного перепечатал с экрана, расшифровал
Можешь скинуть описание?
>похоже, что передаются какие-то настройки
Мое предположение, в начале каждого боя, в параметре data бот отсылает хозяину ключ, плюс карту, возможно сетапы, а в ответ получает алгоритм действий и заодно декрементится счетчик доступных боев на серваке.
>отказывается загружаться CyberTank
Не могу сказать, не сталкивался с такой траблой. Единственный момент, чтоб дойти до момента передачи шифрованных данных, нужен валидный ключ. Если хочешь, могу расшарить каким-нибудь тимвьювером свою виртуалку с игрой, ботом и olly.
>Завтра попробую сделать сам
Если будет проще, напиши в скупе j0hnny_mn3monic[at]outlook.com, предоставлю готовое рабочее окружение.
Аноним 04/07/17 Втр 13:50:14  1016149
>>1016125
Шифрование крутится в виртуальной машине VMProtect, что ожидаемо.
>Можешь скинуть описание?
for (i = 0; i < data_size; decrypt[ i ] = encrypt[ i ] ^ ((i + 0xD5) % 0xFF), i++);
>Мое предположение
Маловато места для алгоритма. Уже выключил всё, а скопировать не догадался. Там передаётся ключ, какая-то шифрованная строка длиной символов 20, некоторые параметры или что-то подобное.
>чтоб дойти до момента передачи шифрованных данных, нужен валидный ключ
Нет, не нужен. Ключ периодически проверяется во время работы, но ответ легко подделать. Он не шифрован, в Wireshark ты должен был его увидеть. А шифрованные данные передаются уже после начала боя, когда секундомер ожидания начала боя дойдёт до 0.
Как уже писал ранее, самый простой вариант в данном случае - просто отправить ранее перехваченные данные обратно программе. Простейший прокси-сервер, который не пустит трафик программы дальше твоего компьютера. Программа использует системные настройки, поэтому перенаправить трафик очень просто, "Свойства обозревателя/Подключения/Настройка сети" в "Панели управления". Перехватываешь один раз сессию и всегда её используешь. Один и тот же ключ должен, наверное, давать один и тот же результат, если там, конечно же, не добавляется что-то типа времени. Только не забудь добавить проброс трафика, который не относится к программе, дальше, а иначе тот же Хром перестанет работать, т.к. он использует системные настройки.
>Не могу сказать, не сталкивался с такой траблой
Странное поведение, нужно сначала запускать программу в отладчике, а только потом игру, тогда всё работает.
Аноним 04/07/17 Втр 15:09:30  1016188
>>1016149
>for (i = 0; i < data_size; decrypt[ i ] = encrypt[ i ] ^ ((i + 0xD5) % 0xFF), i++);
Блин, я у мамы тупенький. Это обратимо, помимо перебора?
>А шифрованные данные передаются уже после начала боя
Сори, не совсем корректно написал, имел ввиду именно этот запрос. C подделкой счетчика боев в запросе checkKey проблем нет.
Аноним 04/07/17 Втр 15:34:40  1016213
>>1016188
> Это обратимо, помимо перебора?
> XOR
Мимопроиграл.
Аноним 04/07/17 Втр 15:48:02  1016220
>>1016213
>Мимопроиграл.
Ну и что ты будешь ксорить, если на руках результат операции и два неизвестных?
Аноним 04/07/17 Втр 16:16:09  1016235
>>1016220
Где ты там два неизвестных нашел? Там однобайтовый ксор, просто тот байт просто не с нуля стартует и инкрементируется. Это не шифрование даже, а просто обфускация.
Аноним 04/07/17 Втр 16:21:46  1016238
>>1016235
X ^ ((Х + 0xD5) % 0xFF) = 0x6A
Скажи мне пожалуйста, чему равно Х, я наверное действительно что-то не догоняю.
Аноним 04/07/17 Втр 16:44:01  1016259
Ребзя, помогите опознать кодировку
3a 04 - к
33 04 - г
66 00 - f
70 00 - p
6d 00 - m
Аноним 04/07/17 Втр 17:36:35  1016288
>>1016188
>Это обратимо, помимо перебора
Да для ксора, функция шифрования и расшифровки одна и та же. Ты C(++) или C# знаешь? Имена всем переменным осознанные дал же, в чём именно сложность?
>имел ввиду именно этот запрос
Именно этот запрос и имел в виду. Не нужен валидный ключ, чтобы добраться до функции шифрования. Бот сам начинает нажимать кнопки, вступает в бой, а затем отправляет шифрованные данные.
Забыл написать, функция перед шифрованием находится по адресу 0043EA10, можешь посмотреть, что именно передаётся.
А ещё мне мысль в голову пришла, что та странная строка - это может быть hardware ID, как защита от того, что тебе советую. Для одного и того же компьютера может и пройдёт.
>>1016238
У тебя ошибка, нет двух X.
Первый X - текущий символ для шифровки/расшифровки.
Второй X - это счётчик, он равен текущей позиции символа, от 0 до n - 1, где n - длина строки.
Аноним 04/07/17 Втр 17:45:53  1016293
>>1016259
Это обычный юникод, UTF-16LE.
Латиница - как и положено ей быть, кириллицу можешь посмотреть здесь https://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0_%28%D0%B1%D0%BB%D0%BE%D0%BA_%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0%29
Аноним 04/07/17 Втр 22:43:00  1016448
00.jpg (161Кб, 1920x1080)
>>1016288
>У тебя ошибка, нет двух X.
Сори, спасибо.
Правда лыжи все равно не едут. В твоих руках это ienpfmofkilamheebffnkiicpnacebnibeamjjbipaodeglnfpbbkdnhinbjnmkfaneghfmickenhfhchddohbjnjbngcjahbbgnkfmdegibppnj превращается во что-то удобочитаемое?
Сори, что дергаю по ерунде, просто скила не хватает, а интерес разгорелся, лол.
Аноним 04/07/17 Втр 23:21:28  1016495
>>1016293
Спасибо тебе большое, действительно помог
Аноним 05/07/17 Срд 00:24:37  1016556
>>1016448
У меня тоже не едут, кстати. Может, вместо 0xd5 что-то динамическое? Алсо, зачем ты творишь эту херь с binascii, когда в питоне есть нормальные шестнадцатеричные константы?
мимоанон
Аноним 05/07/17 Срд 00:35:28  1016563
Давно хотел зайти сюда и спросить.
Тут есть те, кто шарят в криптовке файлов, крипторах, алгоритмах шифрования и вот этом всем?
Сложно ли мимо дурачку запердолить полиморфный криптор, и шоб антивирусы не палили без знаний ассемблера? Есть знания пифона и джаваскрипта.
Аноним 05/07/17 Срд 01:10:35  1016585
>>1016563
"Полиморфный" как бы подразумевает, что ты будешь менять инструкции в стабе. Чтобы что-то менять, надо знать, что оно из себя представляет. Выучи асм, это самый простой язык.
Аноним 05/07/17 Срд 08:47:36  1016730
>>1016448
>лыжи все равно не едут
Это не для этого, а вот для этого >>1015627.
То, что ты привёл, как раз и есть то, что тебе, в итоге, нужно. Так что увы, с этим пока ничего не получится.
Кстати, когда у тебя срабатывает брекпойнт на HttpSendRequestA, окно с игрой перестаёт реагировать на любые действия? Как будто бы зависло приложение? И почему команда, в которую кидает, всё время проигрывает? Они что, без одного танка не могут победить? Один раз была победа и раз 5 поражение.
Аноним 05/07/17 Срд 08:52:44  1016732
scr4.png (30Кб, 835x563)
>>1016730
Аноним 05/07/17 Срд 09:46:35  1016757
>>1016730
>когда у тебя срабатывает брекпойнт на HttpSendRequestA, окно с игрой перестаёт реагировать на любые действия
Да
>почему команда, в которую кидает, всё время проигрывает
Это норма, они бы и с тобой лузнули. Имхо, это фишка разработчика по разводу на донат.
Аноним 05/07/17 Срд 14:53:02  1016909
>>1016149
А как ты код из-под VMProtect вытащил? Что почитать?
Аноним 05/07/17 Срд 15:28:05  1016925
>>1016909
>А как ты код из-под VMProtect вытащил
Никак не вытаскивал, функция была не защищена, а с программы был снят дамп, поэтому с ним можно работать в IDA.
Аноним 05/07/17 Срд 15:57:25  1016944
>>1016925
Ну с дампом-то понятно. Я думал, тут внезапно образовались спецы, которые саму вм раскручивают за полчаса.
Аноним 07/07/17 Птн 22:37:47  1018318
А че на этих ваших ассемблерах писать можно? Надо прокачать архитектуру компютера там, операциооные системы, системное программирование. Короче, есть ли прикол писать на ассемблере?
Аноним 07/07/17 Птн 23:15:11  1018369
>>1018318
Что угодно. То же, что и на других языках.

> есть ли прикол писать на ассемблере
В основном для обучения и ради интереса. Ну и для embedded небольшие кусочки приходится писать именно на ассемблере.
Аноним # OP  07/07/17 Птн 23:16:38  1018371
>>1018318
>А че на этих ваших ассемблерах писать можно?
Что угодно от Hello World до операционной системы.
>Короче, есть ли прикол писать на ассемблере?
Есть.
Аноним 07/07/17 Птн 23:45:12  1018408
>>1018369
>>1018371

Спасибо аноны. Компиляторы же транслируют код в ассемблер или нет? Везде пишут, что компилятор транслирует в машинный код, но не в двоичный же?

Есть такая цитата - "Если вы не знаете, как работает компилятор, то вы не знаете, как работает компьютер."
Аноним 08/07/17 Суб 00:07:11  1018436
>>1018408
Компиляторы (трансляторы) транслируют код во что-то. Это может быть машинный код (он же двоичный), может быть ассемблер текстом, может быть сишечка текстом (так делал C++ в давние-давние времена, и для последующей обработки уже требовался компилятор сишечки), может быть байткод какой-нибудь вм, может быть какое-то промежуточное представление (погугли link-time code generation - в таком случае машинный код генерит линкер, это позволяет делать некоторые глобальные оптимизации). Вариантов дохуя. Общее в них только то, что код на чем-то человекочитаемом преобразуется во что-то другое (часто более низкоуровневое, но не обязательно).
Аноним 08/07/17 Суб 00:18:06  1018441
>>1018436
Я не уточнил, что имел ввиду компиляторы в нативный код. Но я не могу понять, как можно компилировать в двоичный код, для чего. Если процессор понимает только команды ассемблера, как двоичный код будет исполняться? Тогда другой вопрос возникает, если компилятор транслирует в ассемблер, то тогда требуется повторная компиляция в исполняемые файлы компилятором ассемблера.
Аноним 08/07/17 Суб 00:26:55  1018446
>>1018441
Команды ассемблера - это текст. Компилятор ассемблера превращает текст в двоичный код, в байтики. В байтиках закодированы инструкции, ну т.е., вот такие-то биты говорят, какая инструкция, что она делает, вот тут у нас immediate, вот тут биты указывают, в какой регистр положить результат. Процессор читает байтики, разбирает вот эту закодированную информацию и делает, что указано.

> Тогда другой вопрос возникает, если компилятор транслирует в ассемблер, то тогда требуется повторная компиляция в исполняемые файлы компилятором ассемблера.
Именно так и делается в классическом тулчейне. Просто то, что ты считаешь компилятором, называется compiler driver. Для сишечки он: примет аргументы, вызовет препроцессор, для результата препроцессирования вызовет компилятор (транслятор), для результатов компиляции вызовет ассемблер, для полученных объектных файлов вызовет линкер, и ты получишь свой исполняемый бинарник. Компилятор может содержать все эти утилиты внутри себя, может объединять некоторые этапы (например, может напрямую генерить машинный код, и никакого ассемблера текстом), поэтому ты можешь получить исполняемый файл без промежуточных результатов - зависит от компилятора.
Аноним 08/07/17 Суб 00:39:27  1018450
>>1018446
Спасибо за подробное разъяснение. Команды ассемблера и инструкции процессора это не одно и то же? Если нет, то можно ли обращаться напрямую к процессору без ассемблера?
Аноним 08/07/17 Суб 00:44:01  1018452
>>1018450
Можно, но нахуя? Я теоретик-петухан, но для процессорных инструкций используют программаторы вроде. Поправьте, если обосрался.
Аноним 08/07/17 Суб 00:55:20  1018459
>>1018450
> Команды ассемблера и инструкции процессора это не одно и то же?
Все сложно. Одну команду ассемблера ассемблер может превращать в разные инструкции (например, для тебя mov - это просто mov, а для процессора есть разные - mov reg, reg; mov reg, imm; mov reg, [reg] - опкоды отличаются), могут быть оптимизации на уровне ассемблера (масм заменял lea на mov, или наоборот - не помню уже), могут быть псевдоинструкции (например, в ARM некоторые команды не существуют на самом деле и разворачиваются в несколько реальных инструкций). Но в общем и целом соответствие почти полное. Т.е., ассемблерные "команды" - это просто человеко-читаемые имена для реальных кодов инструкций процессора.

> можно ли обращаться напрямую к процессору без ассемблера
Качаешь мануал по процессору, ищешь формат инструкций, ищешь таблицу опкодов, втыкаешь нужные числа в нужные места, пишешь байтики в память и выполняешь. В этом даже есть некоторый смысл, если ты хочешь написать свой JIT с нуля и не хочешь таскать за собой внешний кодогенератор или ассемблер.
Аноним 08/07/17 Суб 00:57:27  1018461
>>1018450
И вообще набери в гугле "васм заклинание кода". Где-нибудь обязательно перевыложено.
Аноним 08/07/17 Суб 00:58:44  1018462
>>1018452
Так если у процессора и ассемблера разные инструкции, то зачем лишняя прослойка? Пока не догоняю разницу между инструкциями процессора и командами ассемблера, если разница вообще есть.
Аноним 08/07/17 Суб 00:59:24  1018463
>>1018462
Ну типа ассемблер прощее машинного кода.
Аноним 08/07/17 Суб 01:05:13  1018465
>>1018459
>>1018461
Спасибо за помощь. Зачем мне это? Чтобы понять откуда ноги растут. Слишком много абстракций друг на друге, хочется понять с чего все начинается, чтобы понимать как все работает изнутри. А то получается пишешь какие то заклинания, как будто магия. Это не дает мне покоя.
Аноним 08/07/17 Суб 01:09:08  1018467
>>1018463
Понятно что проще. Но для меня непонятно все ли возможности дает ассемблер, какие дает процессор. И какова разница в их эффективности. Опять же в ассемблерах встречаются функции, в процессоре как я понимаю их нет, вот хочу понять во что они транслируются.
Аноним 08/07/17 Суб 01:24:15  1018470
Не знаю правильно ли нагуглил, но я немного в шоке. В руководстве интела по командам 2234 страницы. Больше чем референс С++.

https://software.intel.com/sites/default/files/managed/a4/60/325383-sdm-vol-2abcd.pdf
Аноним 08/07/17 Суб 01:40:18  1018478
Существует путаница, даже в руководствах Интела инструкциями процессора называют - команды непосредственно процессора, команды ассемблера, и даже двоичный код.
Аноним 08/07/17 Суб 01:53:28  1018479
>>1018462
>то зачем лишняя прослойка?
Затем, что она адреса автоматически проставляет. Если ты пишешь в машинном коде, ты должен высчитывать размер каждой инструкции, чтобы поставить джамп в нужное место, знать адреса каждой константы. Причем если ты добавляешь код в середину функции, то все адреса, соответственно, изменяются, и тебе приходится все заново все пересчитывать. Основная функция ассемблера - именно линковка и проставление адресов, а не текстовое представление кода. Цифры не так уж сложно читать при должной практике.
Аноним 08/07/17 Суб 05:47:36  1018505
>>1018470
>правильно ли нагуглил
Правильно.
Аноним 08/07/17 Суб 14:13:51  1018641
Что думаете о forth?
Аноним 08/07/17 Суб 15:00:23  1018665
>>1018641
Для каких задач?
Аноним 08/07/17 Суб 21:40:37  1018926
>>1018665
Для разнообразных.
Аноним 09/07/17 Вск 09:59:03  1019114
>>1018926
Раз для разнообразных, то не подходит.
Аноним 09/07/17 Вск 10:38:30  1019121
>>1018641
Заебись технология. Только современному былокодеру ни к чему.
Аноним 10/07/17 Пнд 06:20:04  1020124
В PE файле релоки могут быть где либо кроме кодовых секций? Спрашиваю потому, что если придется их фиксить вручную, можно ли ебануть VirtualProtect(...PAGE_READWRITE, &oldProtect) по всему диапазону релоков, а потом восстанавливать через тот же oldProtect, или там могут попасться и секции данных, и tls и еще хуй знает то?
Аноним 10/07/17 Пнд 17:53:36  1020547
>>1020124
> В PE файле релоки могут быть где либо кроме кодовых секций?
Конечно. Пример (глобальные переменные):
int foo = 1;
int *bar = &foo;

> или там могут попасться и секции данных
Ну попадутся секции данных, но если ты все равно флаги защиты восстановишь, в чем проблема-то?
Аноним 10/07/17 Пнд 18:10:13  1020563
>>1015083 (OP)
Господа, пишу криптор. Для запуска программы в памяти мне нужен PE-загрузчик. Стоит ли писать его с использованием некоторых объектов C++ STL? Отказываться от STL все равно что выйти из зоны комфорта. Может ли использование STL помешать морфингу кода и затруднить чистку стаба?
Аноним 10/07/17 Пнд 18:27:09  1020592
>>1020547
Дак вот в том и дело, что если при каждой итерации для страницы это делать, то дохуя вызовов VirtualProtect получается. Я думал, может можно в 2 вызова это сделать, а не 2N
Аноним 10/07/17 Пнд 18:43:18  1020611
>>1020563
Почему C++ такой уебищный? Пишу PE-загрузчик и десять минут потратил на создание сущностей для автоматического освобождения ресурсов, хотя если бы писал на си, то мог бы сосредоточиться на решении задачи.

https://ideone.com/Yy5the
Аноним 10/07/17 Пнд 18:58:21  1020624
>>1020611
А можно было написать класс и освобождать/закрывать все в деструкторе. Диды десятилетиями так писали, а тут ты со своим scoped.
Аноним 10/07/17 Пнд 20:31:30  1020705
Что находится в [image_optional_header] SizeOfHeaders? Суммарный размер всех заголовков или может быть что-то другое? Можно рассчитывать на значение этого поля, проецируя все заголовки на память?
Аноним 10/07/17 Пнд 21:28:21  1020736
>>1020705
Количество байт с учетом паддинга нулями, выделенное под заголовки в файле, а не образе. В образе округляй по размеру страницы.
Аноним 13/07/17 Чтв 01:31:29  1022266
>>1015083 (OP)
Подскажите библиотеки для ассемблирования и дезассемблирования или расскажите как пользоваться вот этим http://ref.x86asm.net/coder64.html Что означают эти r/m8, r16/32/64, m16/32, imm8. Ну я предпологаю, что r означает регистр, а остальное не очень понятно.
А ещё я немного не понимаю команду jmp. Это относительный переход? Абсолютный? Или и то и то? Просто я не понимаю как происходят переходы в обычных программах, ведь они каждый раз загружаются в разные участки памяти. То же самое и с mov [адрес],значение.
А ещё мне хорошо бы почитать про устройство elf-файла и линковку с библиотеками. Я не нашёл.

Пост не мой я простио разместил объяву.
Сходите пните этого хуя по оригинальной ссылке: https://lol_if_ox.org/b/res/174.html#330
Аноним 13/07/17 Чтв 14:33:37  1024089
>>1022266
> библиотеки для ассемблирования и дезассемблирования
keystone/capstone

> Что означают эти r/m8, r16/32/64, m16/32, imm8
r - регистр, m - память, imm - непосредственное значение (константа, которая кодируется прямо в инструкцию) циферка - количество бит. r/m8 - восьмибитный регистр или байт из памяти.
Аноним 15/07/17 Суб 16:30:15  1025441
Screen Shot 201[...].png (296Кб, 1747x1174)
Как эти китайцы запихивают свои иероглифы в название процедур?
Аноним 15/07/17 Суб 22:17:52  1025602
>>1025441
Молча. Они на них пишут. Ты тоже так можешь уже много лет:
#include <stdio.h>
static void йоба(char сообщение[]) { puts(сообщение); }
int main(void) { йоба("привет, мир"); }
Как тебе Hopper?
Аноним 16/07/17 Вск 01:36:35  1025754
>>1025602
Оперативку он жрет конкретно, бинарники от 20мб и выше IDA отжирает 300-400мб, Hopper жрет гиг и более. После закрытия файлов память практически не освобождается, постоянно нужно перезапускать программу.
Аноним 16/07/17 Вск 03:47:36  1025796
>>1025754
> Оперативку он жрет конкретно
Ну ничего, вот седьмая ида, которая 64-bit only, выйдет, и будет примерно столько же.
Аноним 16/07/17 Вск 20:11:43  1026185
Сам реверсач, помоги неофиту. Решил я поиграть в скайрим, и сейчас нужно много золота. Ну я подумал - хули, сейчас подкрутим. Расчехлил ollydbg, запустил в нем skyrim и понял, что я обосрался: я не могу найти переменную, в которой хранится количество золота. Что я уже пробовал:
1. Смотрел количество золота и искал его hex-значение в секции .data в виртуальной памяти, не исполняемом файле, он же вроде memory dump. Также искал значение в стеках каждого треда. Значение пробовал как в прямом порядке искать, так и обратном, свойственном виртуальной памяти (типа 00 00 0E 8B и 8B 0E 00 00 ). Нихуя не получилось, в памяти очень много адресов с этим значением.
2. Далее, попробовал сделать search for referenced strings, поставил брейкпоинты на всю хуйню с текстом gold вне зависимости от регистра. Теперь, когда я открываю инвентарь, у меня срабатывает BP (т.к. там в инвентаре кол-во золота отображается), казалось бы, прощелкай пошагово всю хуйню и найди где есть обращение к переменной, в которой хранится количество золота. Но это пиздец, там очень много щелкать приходится.

Я так понимаю, что 2 вариант более работоспособный, поэтому меня интересует, нет ли какого то механизма в ollydbg, который мог бы мне помочь? С чего вообще стоит начинать и как стоит делать, чтобы в программе найти значение какой либо переменной и подкрутить ей значение?
Аноним 16/07/17 Вск 21:05:28  1026213
>>1026185
Делай, как Крис Касперски: сделай дамп образа, чтобы зафиксировать текущее число голды. Измени количество голды и сделай еще один дамп. Для верности сделай еще дамп с другим количеством голды. Сравни дампы.
Аноним 16/07/17 Вск 21:08:18  1026216
>>1026213
А можно просто взять Cheat Engine, который сделает это автоматически. Алсо, искать константу лишено всякого смысла. Значение может быть в "копейках" (или еще каком-то fixed-point), может быть float или double. Может быть зашифровано, может дублироваться и сравниваться. Много чего может быть.
Аноним 16/07/17 Вск 21:08:20  1026217
>>1026213
То есть нет волшебной кнопки "сделать заебись"? Либо вручную перебирать ебучие DWORD'ы, либо сделать как ты предлагаешь, либо использовать cheat engine, который автоматизирует то же самое?
Аноним 19/07/17 Срд 22:44:08  1028542
Снимок.PNG (36Кб, 894x281)
Реверсач, что обозначает нотация адресов как на пикрилейтед? Типа ImageBase + RVA вместо VA?
Аноним 19/07/17 Срд 22:45:35  1028544
>>1028542
Или entry point + rva?
Аноним 19/07/17 Срд 22:45:40  1028546
>>1028542
Именно так.
Аноним 20/07/17 Чтв 17:25:51  1028885
14996969108130.jpg (148Кб, 811x359)
Что скажете о книге Калашникове для ньюкека?
Аноним 20/07/17 Чтв 18:22:58  1028916
>>1028885
Нет разницы, как учить асм. Это самый простой язык, где все сложности заканчиваются на отличиях компиляторов. Можно хоть Intel SDM читать. Калашников сойдет тоже.
Аноним 20/07/17 Чтв 21:09:11  1028980
>>1028916
Спасибо, анон. А что на счёт практических задачек? Как я понял, в ассемблировании важно понять не сколько сам яп с его синтаксисом и набором инструкций, сколько принципы работы CPU, изменение регистров по ходу кода етс. А у Калашникова ничего веселее разбора резидента нет вроде. Может есть какой-нибудь годный сборник лаб для студентов дцп курса, а то читать и тупо копипастить код уже утомило.
Аноним 20/07/17 Чтв 22:02:19  1029016
>>1028980
Не знаю, чего тебе конкретного посоветовать. Так-то в 32-битный асм вкатиться проще: если знаешь какой-нибудь Си, можно компилировать код с разным уровнем оптимизаций и смотреть, во что он свернется; на васме были туториалы Iczelion-а, можно писать полноценные десктопные приложения, смотреть олькой или x64dbg, как они выполняются и т. д. Но у тебя там 16-битный код ведь? Пытайся играть с каждой новой инструкцией, пиши минимальные программки в 3-4 инструкции, разбирайся, как все работает. Возьми простые задачки для любого другого языка и пиши их на асме. Подходы к реализации от языка не меняются. Алсо, можешь взять Human Resource Machine, поиграть в нее, потом поделать то же самое на реальном ассемблере.
Аноним 28/07/17 Птн 22:33:13  1033634
Пацаны, а каким образом хранятся переменные в C? Вообще переменные в высших языках это одно и тоже на низком уровне?
Это же надо сопоставить имя переменной и ее значение. А Имя переменной оно же огромное, это буквы, каждую нужно закодировать минимум одним байтом. Почему дураки программисты их используют вместо номера ячеек памяти? Это же очевидная оптимизация!
Аноним 29/07/17 Суб 00:02:59  1033677
>>1033634
Толсто. Во время компиляции имена заменяются на номера ячеек памяти. Если изначально использовать адреса, ты заебешься их пересчитывать вручную при изменении программы. Для этого-то как раз изначально и придумали ассемблер, а потом и другие языки.
Аноним 30/07/17 Вск 09:02:04  1034289
Сап, драч. Допустим, есть вызов функции, после которого EAX принимает известное мне еще до вызова функции значение. Мне нужно найти, где это значение присваивается в ходе выполнения функции. Можно ли в ollydbg поставить брейкпоинт, чтобы когда определенный регистр принимал определенное значение, срабатывал БП? Conditional breakpoint мне не очень подходит, т.к. он, как я понял, срабатывает на определенной инструкции, а не на всей функции
Аноним 30/07/17 Вск 14:03:11  1034360
>>1034289
Нашел походу. Run trace - это то, что нужно
Аноним 03/08/17 Чтв 16:53:09  1036950
Аноны, а что вы думаете по поводу виртуалок с режимом отладки? Например, той же BOCHS. Ну или хак VirtualBox с софтварным эмулятором.
Аноним 03/08/17 Чтв 23:47:30  1037376
>>1015220
Годная тулза, но только если нравится/удобно ковыряться в сонсоли. Для большого унылого энтерпрайза не очень, но для ctf/прошивок/эмуляции - самое оно
мимо р2фанбой
Аноним 05/08/17 Суб 01:01:27  1038224
>>1037376
> Error in `r2': double free or corruption (!prev)
> Aborted (core dumped)
Каждый раз, когда у меня возникает необходимость это использовать (IDA под рукой нет), дело заканчивается листингом objdump. По разным причинам. Сегодня, например, вот так.
Аноним 05/08/17 Суб 01:20:51  1038242
Что мне нужно учесть, если я в PE файл хочу добавить запись об импорте функции из kernel32.dll? Наиболее оптимальным по трудозатратам и красоте мне кажется в конец существующей таблицы импорта добавить новую запись kernel32.dll и нужную из неё функцию, ибо я в рот ебал вставлять функцию в уже существующем импорте kernel32.dll и искать все вызовы импортируемых после вставки функций, чтобы добавлять к ним смещение.

Допустим, что секция, в которой находится таблица импортов, позволит вместить в себя достаточно байт, чтобы за оффсет не перевалить. Я понимаю, что нужно увеличить виртуальный размер секции с импортом, увеличить размер IMPORT_DATA_DIRECTORY или как там её. Какие еще подводные камни?
Аноним 05/08/17 Суб 02:27:38  1038284
>>1038242
Никаких, так и делают обычно. Учти только, что за импорты две датадиректории отвечают. Есть IAT еще.
Аноним 05/08/17 Суб 03:34:29  1038294
Аноны вкатываюсь в реверс,учу асм парралельно с курсом с exelab, что еще мастхэв знать для реверса и что можно почитать?
Аноним 05/08/17 Суб 03:55:19  1038298
>>1038294
Шапку.
Аноним 05/08/17 Суб 21:20:37  1038722
Как с нуля вкатиться в реверсинг?
С чего из шапки начинать изучение?
Аноним 05/08/17 Суб 22:30:11  1038777
>>1038722
Молча.
С начала.
Аноним # OP  06/08/17 Вск 21:13:28  1039413
>>1038294
>>1038722
Сцуко, аноны совсем разленились и не могут перейти по первой ссылке с шапки.
АЛСО, удивительно, что тред ещё жив.
ОП
Аноним 06/08/17 Вск 23:15:54  1039626
>>1039413
Да бля понятно что тут ссылок дохуя и все годные, я спрашивал про фундаментальные вещи и нужно ли они типо, а надо ли по ОС заморочится?Надо ли читать Таненбаумана?а архитектуру проццесора?мне сначала это прочитать а потом уже асм,гайды хуйды по реверсу или и так норм
Аноним 06/08/17 Вск 23:22:11  1039634
>>1039626
как вкатиться, как вкатиться. ответь себе вопрос что происходит с программной точки зрения, когда ты отправляешь сообщения на дваче от нажатия на клавишу и движения мышкой до ввода капчи и нажатия отправить. нахуй оно тебе нужно, читать сразу обо всём без конкретной задачи. информация не будет задерживаться. поставь себе задачу в поле RE. любую, хоть самую дебильную, и решай её. так и вкатишься.
Аноним 06/08/17 Вск 23:28:11  1039637
>>1039634
Спасибо анон, чтоб у тебя доляры сыпались рекой,любая прога реверсилась, а тянки прыгали на хуйце
Аноним 06/08/17 Вск 23:55:49  1039660
подскажите годный дампер процессов. встроенный в ollydbg не подходит
Аноним 07/08/17 Пнд 08:40:23  1039840
>>1039626
> надо ли
Надо. И го выучить надо. И джаву с паттернами. И алгоритмы. И цифровую схемотехнику. Чем больше ты знаешь - тем проще реверсить. Но в каком конкретно порядке учить - похуй. Можно просто начать с первой ссылки в шапке. Можно просто выучить асм. Можно начать с теории.
Аноним 11/08/17 Птн 17:23:11  1042632
Screenshot20170[...].png (34Кб, 410x502)
Вопрос знатокам оптимизаций:
как можн оптимизировать следующий цикл с учетом того что ег осложность что-то между O(n^2) и O(n^3). Все перменные это ymm регистры, но даже один единственный лишний mov уменьшает скорость на 15-20%

Аноним 11/08/17 Птн 17:49:45  1042647
>>1039626
>>1039626
Таненбаум та еще ересь, по крайней мере на русском, в оригинале нет. Лет 20 назад до дыр зачитал книгу Кейслер операционные системы - проектирование. Проясняет мозги.
Аноним 11/08/17 Птн 23:43:43  1042881
>>1042647
Таненбаум читабелен. Местами вводит ненужные сущности, местами рассказывает о какой-нибудь хуйне до ее описания, но в целом норм (английскую версию читал).
Аноним 12/08/17 Суб 00:23:23  1042915
>>1015083 (OP)
Почему в ntdll нет функции LdrpAllocateTls?
Аноним 12/08/17 Суб 02:10:50  1042944
>>1042915
Потому что есть, но она внутренняя, не является частью публичного апи, и поэтому не экспортируется. Зачем тебе она?
Аноним 12/08/17 Суб 08:16:02  1042965
>>1042944
Эмулировать тлс в крипторе, передав часть задач системному лоадеру
Аноним 12/08/17 Суб 10:04:31  1043001
wotpacket1.png (64Кб, 1024x768)
wotpacket2.png (54Кб, 1024x768)
>>1016757
Зачем только за эти танки взялся? От нечего делать, сделал митм на трафик танков. Пароль передаётся в открытом виде, хотя он и в зашифрованном трафике, но заменить публичный ключ на свой не составляет труда, что, собственно, мной же и сделано. Не понимаю, что за тупость у разработчиков? Сделать SHA256 от пароля хотя бы что мешает? Увести пароль от аккаунта проще некуда, возможно, даже фаервол ничего не скажет, весь трафик будет локальным. А на сервере, интересно, пароль хранится в незашифрованном виде? А может так было изначально в движке. "Server Programming Guide" BigWorld легко гуглится.
>When a player logs in to a BigWorld server, he sends a username and a password. These are compared to a server-side database, to make sure that the user is subscribed.
Ни слова о том, что логин/пароль передаётся в зашифрованном виде. Вообще, защита трафика от прослушки (и, возможно, модификации) очень плохая. Мне даже не пришлось модифицировать программу, чтобы его прослушать.
>It would still be possible for a player to hack its own binary and sniff the data stream from the server after it has been decrypted.
Гордо написано в гайде, что не правда. Ничего не надо модифицировать, клиент не знает, сервер не догадывается.
Интересно, что передаётся в трафике. Сейчас это набор бинарных данных, ничего толком не понятно, кроме строк, которые в них проскакивают. Действительно ли совсем ничего лишнего клиенту не передаётся?
Так же у меня есть идея, как сделать обход проверки в боте. Но мне лень сейчас это реализовывать.
Аноним 12/08/17 Суб 13:02:28  1043103
>>1042965
Ты в свой тред заглядывал вообще? Что ты конкретно хочешь эмулировать? Ты осознаешь, что к моменту, когда твой код получает управление, процесс уже создан, и LdrpAllocateTls уже отработала? Зачем тебе второй раз ее запускать?
Аноним 12/08/17 Суб 15:44:20  1043170
>>1043001
> публичный ключ на свой не составляет труда
Это палево и пиздец какое, олсо:
>Сделать SHA256 от пароля хотя бы что мешает?
Что мешает вычислить пароль с коллизионным SHA256?
Аноним 12/08/17 Суб 15:54:32  1043177
>>1043170
>Это палево
В чём или на чём? Само собой, трафик нужно расшифровать и снова зашифровать нужным публичным ключом. Мой аккаунт пока что не заблокировали. Если заблокируют, тогда где-то по тихому передаётся информация о публичном ключе. Не написал, что используется RSA, не сертификат.
>с коллизионным SHA256
Сложность вычисления коллизии? Это всё-равно лучше, чем пароль открытым текстом. Можно усложнить и добавить соль, которую присылает сервер. Или ещё более усложнить, вычисляя SHA от SHA несколько тысяч раз, как сделано в Wifi.
Аноним 12/08/17 Суб 19:47:06  1043282
Пиздец раскажите плз как вы найдете коллизию для sha256
Аноним 12/08/17 Суб 21:49:51  1043335
>>1043177
>на чём
На сервере, паблик скорее всего из кольца, если оно не сойдется - будет не очень хорошо.

Вот краткое овервью
http://maths.straylight.co.uk/edb_files/crypto_colloquium.pdf

>Сложность вычисления коллизии
O(1), для ключей до 128 бит есть уже предрассчитанные словари.

Аноним 12/08/17 Суб 22:18:55  1043354
>>1043335
Долбаеб, речь была о sha256, расскажи давай как коллизию искать будешь?
Аноним 12/08/17 Суб 22:24:33  1043360
>>1043354
https://eprint.iacr.org/2008/270.pdf
Говна наверни мамки ананимас
Аноним 12/08/17 Суб 22:37:07  1043372
>>1043360
Прочитай первую строчку. Эта атака на reduced-версию, меньше половины раундов.
Аноним 12/08/17 Суб 22:39:01  1043376
>>1043360
Долбаеб короче с кем я спорю
Ты сам читал статью то? Это поиск коллизии только на 24 раунда из 64 в SHA256, для всех раундов каких либо результатов значительно снижающих количество операций пл сравнению с полным перебором - нет.

Кроме того только недавно была опубликовпна ПЕРВАЯ коллизия найденная гуглом на суперкомпах для SHA-1, а SHA-256 значительно сложнее [1], короче иди нахуй уроки учить

1. https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html?m=1

Аноним 12/08/17 Суб 22:46:21  1043391
>>1043372
Что мешает навернуть birthday поверх этой заготовки?

>>1043376
Найс аутофиляция. Жаль ты в Вегас в том месяце не был, было бы интересно посмотреть на этот манямир вживую.
Аноним 12/08/17 Суб 22:50:41  1043397
>>1043391
> Что мешает навернуть birthday
Мешает то, что SHA256reduced - это не SHA256. С точки зрения криптографии - это две родственные, но разные хэш-функции.
Аноним 12/08/17 Суб 22:57:43  1043402
>>1043397
Но разве мы не можем перейти от одного класса к другому заменив функцию расширения сообщений использующуюся с DCE?
Я просто к чему веду, недавно ломали JP Morgan Chase, кто в теме говорили о факте компроментации (сорри за мой русский он не совсем родной, я его не очень часто практикую, разве что в /b/) SHA256 на 80 раундов, причем во внутренней сети, т.е. дело обошлось ресурсами какого-то из внутренних серваков на который закинули минимальный код через сотрудников. Да и пруфы косвенные есть, в частности сменили все хеши на BF судя по техникал репортам.
Аноним 12/08/17 Суб 23:55:27  1043457
Пацаны тут СЕНСАЦИЯ сыч с двача ищет коллизии к SHA 256 как два пальца, чисто чтоб пароль к танкам проснифить,призываем срочно в тред криптографический отдел гугла чтоб захайить ГЕНИЯ, в то они там мучаются а на дваче все давно уже известно!!
Аноним 13/08/17 Вск 00:36:06  1043469
>>1043457
>криптографический отдел гугла
Знал о хартблиде за три года до публикации уязвимости. А ты продолжай веровать.
Аноним 13/08/17 Вск 00:45:11  1043473
>>1043469
Т.е вся твоя аргументация строится на теории заговора которую невозможно подтвердить мои опровергнуть?

Кще раз, парень писал что надо бы закрыит алеие текст пароли в протоколе танков хотя бы хешем SHA256, на что анон (ты или другой) ответил что это ничего не изменит и якобы колизию подобрать легко. Плз расскажи как ТЫ это будешь делать? Без крутых историй заговора и херни типа я был на конфе в вегасе, а также ссылок на статьи которые ты сам не читал.
Аноним 13/08/17 Вск 00:46:38  1043475
>>1043473
> закрыть плеин текст пароли
быстрофикс, соррр с телефона пишу
Аноним 13/08/17 Вск 00:53:55  1043476
>>1043473
>теории заговора
Посмеялся от души, спасибо.

>ничего не изменит
Это так

>как ТЫ это будешь делать
>Без крутых историй
VentureCrypt дальше ты сам, раз просил без историй.

За что люблю русских - говно всегда лезет вперед всего. Проигрывать можно бесконечно :^)
Аноним 15/08/17 Втр 13:07:45  1044834
мой проваёдер нарушает закон, по-видимому
т.к. я живу в украине но все сервисы мэйл ру работают
впрочем, у меня дом. сеть, т.ч. всё возможно
Аноним 30/08/17 Срд 23:06:35  1054437
Есть софт для которого под МакОС есть кряк. Кряк сделан в виде замены главного exe файл. Лицензирование сделано через текстовый txt файл. Exe'шник при попытке запуска через виртуалку отрубается.

Насколько сложно будет портировать кряк под шиндовс? Ида умеет разбирать маковские исполняемые файлы? Есть ли там аналог diff'a для сравнения двух версий файла? Чтобы сразу было ясно где пропатчено? Кто-нибудь тут уже делал подобные операции?
Аноним 31/08/17 Чтв 00:06:25  1054463
>>1054437
Все сам нашел и почти сделал.
Аноним # OP  31/08/17 Чтв 15:37:54  1054823
>>1054463
Нашёл- расскажи другим.
Аноним 31/08/17 Чтв 16:30:45  1054871
>>1054823
Ничего я не смог сделать. Пропатчил аналогичным образом под шиндовс и нихуя не заработало. Программа зависает. Сижу разбираюсь почему.
Аноним 01/09/17 Птн 11:42:01  1055424
блиныаниме.jpg (266Кб, 960x874)
Это тред байтоебов? Поясните, пожалуйста за такую вещь.
- вот есть некий вирос, он ловится антивиросами по характерным сигнатурам (да?).
- сигнатура - это машинный код.
- одно и то же состояние регистров может быть вызвано разным машинным кодом / ассемблерными коммандами.
- предположим, у нас есть метод автоматически получать подобные "синонимичные" комманды (разный машинный код, приводящий к одинаковым состояниям регистров) для любого нужного состояния регистров. Можем ли мы исходя из этого получить неуязвимый вирос, просто меняя изначальный машинный код на "синонимичный"?
Аноним 01/09/17 Птн 14:04:31  1055497
>>1055424
https://ru.wikipedia.org/wiki/Полиморфизм_компьютерных_вирусов
>получить неуязвимый вирос
С 1990 года хитрые человеки пытаются, говорит статья выше.
Аноним 01/09/17 Птн 14:25:33  1055509
>>1055424
>он ловится антивиросами по характерным сигнатурам (да?).
Нет. Это уже не так с середины 00-х. Ловится по поведению динамически.
>Можем ли мы исходя из этого получить неуязвимый вирос, просто меняя изначальный машинный код на "синонимичный"?
Можем.
Аноним 01/09/17 Птн 14:35:20  1055512
>>1055497>>1055509
>Ловится по поведению динамически.
А какое поведение считается неправильным? Представим полностью полиморфный meterpreter. Антивирос его не спалил по сигнатурам. Что нужно сделать программе, чтобы антивирос таки догадался? Ну кроме очевидной толстоты - форматирования винтов, массового удаления файлов и т.д.
Аноним 01/09/17 Птн 15:09:09  1055524
>>1055512
>массового удаления файлов
Судя по массовому распространению шифраторов, это нормальное поведение программы. Не нормальное поведение для антивируса, это когда программа создаёт удалённый поток, копирует/записывает в память чужого процесса, изменяет исполняемые файлы, читал, что очень не нравится антивирусу, когда программа обращается к службе BITS. Много чего ему может не нравиться.
Аноним 02/09/17 Суб 02:17:55  1055970
Ебать журнал ксакеп теперь стоит 500 рублей за штуку. Не покупал его лет 15. Странно, что оно вообще еще выходит.
Аноним 02/09/17 Суб 14:21:56  1056105
15036527414510.jpg (99Кб, 740x660)
Поясните, пожалуйста, за тонкую разницу и отношения между опкодом, байткодом и машинным кодом. Как понял я:
- мнемоники (MOV, PUSH и т.д.) - удобное для человека представление опкодов
- опкод - единичный элемент машинного кода
- машинный код - исполняемая процессором последовательность опкодов (?)
- байткод - ???
- отношение опкода к байткоду - ???
- отношение машинного кода к байткоду - ???
Или где можно почитать про это внятно, коротко и по-существу?
Что скажете за этот ресурс http://ref.x86asm.net/
Аноним 02/09/17 Суб 15:19:42  1056129
yb.jpg (51Кб, 604x579)
>>1056105
опкод - MOV
машинный код - 010110110110111...
байткод - 0145 5451 1245 1243 ABEF
Аноним 02/09/17 Суб 15:28:24  1056137
1.png (59Кб, 1207x618)
>>1056129
>опкод - MOV
Но MOV это же мнемокод для удобства, опкоды у этой комманды могут быть разные.
Машинный код - это бинарное представление 16ричного байткода?
Аноним 02/09/17 Суб 16:55:36  1056174
1493906486110.jpg (338Кб, 1369x1183)
А еще есть https://en.wikipedia.org/wiki/Micro-operation Короче, я окончательно запутался... Вот то, что можно посмотреть в hiew - это что? Опкод, машинный код, байткод или микрооперации?
Аноним 02/09/17 Суб 17:50:47  1056201
>>1056105
>байткод
Где-то читал такое определение. Байткод - это код, длина которого равна одному байту. Как понимаю, длина команды, без аргументов. Это, по большей части, к скриптовым языкам относится.
Остальное не знаю. Вроде про мнемоники правильно ты написал.
Аноним 02/09/17 Суб 22:50:23  1056311
>>1056201
Байткодом обычно называют машинный код для несуществующей (виртуальной) машины.

>>1056174
> что можно посмотреть в hiew
Хекс-дамп. Для дизасма лучше использовать более современные инструменты. В дизасме ты видишь представление машинного кода в виде мнемоник ассемблера. Опкод - часть инструкции (байтики), кодирующая непосредственно саму операцию (остальные части могут кодировать непосредственные значения, регистры, условие и т. д.). Микрооперации выполняют процессоры с микрокодом при обработке всех или только некоторых сложных инструкций (т.е., инструкция машинного кода может выполняться в виде нескольких микроопераций).
Аноним 04/09/17 Пнд 21:34:52  1057188
>>1056174

У микропроцессора есть система (набор) команд, которые он может выполнить, и все эти команды кодируются в памяти с помощью чисел. Ну условно говоря, число 1 может обозначать "сложить регистры A и B и поместить результат в C", а например 2 - "поместить ноль в регистр X". Соответственно, программа для процессора записана в памяти как последовательность таких чисел. Он читает их и выполняет по очереди.

Опкод - это просто сокращение для "код операции". В машинном коде у каждой команды свой код, это и есть опкод. В примере выше 1 это опкод для операции сложения.

Машинный код (копипащу) или машинный язык — система команд (набор кодов операций) конкретной вычислительной машины.

Человеку неудобно читать числа, потому придуман ассемблер - язык, который представляет машинные коды в виде текстовых команд вроде ld r12, 0x0

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

Микрооперации - это примитивные внутренние для процессора команды, на которые он разбивает большую сложную команду. Ну то есть если допустим у какого-то процессора есть команда "поместить в регистр X значение из ячейки памяти по адресу равному Y + Z" то он может разбить ее на такие микрооперации:

- сложить регистры Y и Z, поместив результат во временный регистр T
- направить запрос на чтение памяти по адресу из T
- поместить пришедший из памяти результат в регистр X

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

> Вот то, что можно посмотреть в hiew - это что?

На этом скриншоте http://www.hiew.ru/pic/hiew851.gif я вижу такие колонки:

- смещение в байтах относительно начала файла
- машинные коды, записанные в 16-чной системе счисление, представляющие одну команду процессора (те самые опкоды)
- та же команда на ассемблере
Аноним 04/09/17 Пнд 21:38:02  1057189
>>1056174

Ты бы попробовал сделать или хотя бы спроектировать простейший микропроцессор из логических элементов, сразу лучше все это понимать начнешь.
Аноним 04/09/17 Пнд 21:43:20  1057191
>>1055424
Имя на значке отражено зеркально. Должно быть наоборот. и волосы на блины почему-то падают
Аноним 04/09/17 Пнд 23:27:43  1057242
так может кто-то пояснить как взломать SHA-256?
думаю биткоинов намайнить побыстрому
Аноним 05/09/17 Втр 12:19:42  1057370
monobeno.jpg (143Кб, 716x716)
>>1057188
Спасибо, теперь понятно. А вот на пике одним и тем же ассемблерным коммандам соответствуют разные коды, это почему? Или там не только комманды, но и операнды?
>>1057189
>Ты бы попробовал сделать или хотя бы спроектировать простейший микропроцессор из логических элементов, сразу лучше все это понимать начнешь.
Да ну, я в такое не смогу.
Аноним 05/09/17 Втр 20:06:34  1057585
>>1057370
> одним и тем же ассемблерным коммандам соответствуют разные коды
Тут от разработчика набора инструкций зависит. Обычно разные опкоды делают для разных наборов операндов. Например, может быть опкод для mov reg, imm32, и другой для mov reg, reg.
Аноним 05/09/17 Втр 20:09:45  1057587
>>1057242
Просто берёшь и перебираешь все варианты.
Аноним 05/09/17 Втр 21:08:39  1057646
>>1057370
> одним и тем же ассемблерным коммандам соответствуют разные коды
Значит они не совсем одинаковые. Если ты про таблицу отсюда >>1056137 - то там именно что разные команды. Ну например, если взять первые 3 строчки:

MOV r/m8, r8 | 88
MOV r/m16/32/64, r16/32/64 | 89
MOV r8, r/m8 | 8A

Видно, что здесь одна команда, но разный порядок и типы операндов. В зависимости от них и выбирается код.

Также, здесь написаны команды в обобщенном виде. Ну например r8 (r = register) - это один из 8-битных регистров (AH, AL, BH, BL, CH, CL, DH, DL). А r/m8 (m = memory) значит "8-битный регистр или указание на ячейку памяти".

То есть реально кодом 88 кодируются команды вроде

MOV AH, BL
MOV [EAX + 4], AH
MOV [адрес ячейки], CL

Тебе стоило бы почитать про режимы адресации, где описано какие именно аргументы могут быть у команд. Я что-то не нашел хорошего описания, потому дам ссылку на ту же страницу: http://www.c-jump.com/CIS77/CPU/x86/lecture.html#X77_0090_addressing_modes

Тут видно, что указать в качестве r/m8 адрес ячейки памяти можно несколькими способами (квадратные скобки обозначают доступ к памяти):

- указать ядрес явно: MOV [123456], AH -> скопировать 1 байт из ячейки с адресом 123456 в регистр AH
- указать, что адрес берется из регистра: MOV [EBX], AH
- указать что адрес хранится в 32-битном регистре, к которому прибавляется 1-или 4-байтное смещение: MOV [EAX + 12], BH
- указать адрес с помощью сложного выражения SIB, вроде MOV [EAX + EBX x 4], CH

Разумеется, чтобы их различать, после кода 88 идут дополнительные байты. Если мы почитаем например статью тут

http://www.c-jump.com/CIS77/CPU/x86/lecture.html#X77_0020_encoding_overview

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

- в начале может идти префикс, меняющий какие-то параметры команды (обычно он используется для выбора размера данных, надо которыми выполняется операция, 16/32 или 64 бита),
- затем идет опкод из 1 или 2 байт
- затем может идти байт MOD R/M который кодирует, над какими именно регистрами делается операция
- затем может идти байт SIB, смещение или явно указанный адрес ячейки памяти. Они указываются только если они используются в команде.

Так что реально команда MOV AH, CL кодируется 2 байтами - код операции и байт выбора регистров MOD R/M. А команда MOV [123456], AH состоит из опкода, байта MOD R/M и 4-байтового адреса ячейки памяти.

Ты просто наверно пропускаешь основы и берешься сразу за сложное. Сначала тебе надо изучить, какие есть в процессоре регистры, какие есть режимы адресации, а потом уже смотреть, как кодируется та или иная команда, иначе ты не поймешь зачем нужны байты вроде MOD R/M в машинном коде.

Ну и не у всех процессоров такая сложная система команд. Если еще такой подход как RISC, где используется небольшое число простых команд.
Аноним 05/09/17 Втр 21:31:35  1057671
>>1057370
Чтобы спроектировать процессор, надо изучить логические схемы: регистры, триггеры, счетчики, логические элементы. Соответственно, (простейший) процессор состоит из:

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

Вот пример простейшего процессора. Он содержит:

- IP - регистр, хранящий адрес текущей выполняемой команды. Он увеличивается на 1 после чтения одного байта из памяти. Изначально при включении процессора он хранит 0, то есть программа должна располагаться в памяти, начиная с ячейки с адресом 0
- временный регистр CMD для хранения прочитанной из памяти команды. Вход этого регистра подключен к шине данных (по которой приходит прочитанная команда), а выход - к декодеру
- декодер команд. Он читает команду из CMD и выдает на выходах сигналы, указывающие микрооперации, из которых состоит команда
- 2 8-битных регистра A и B
- временный регистр для хранения результата R
- АЛУ, входы которого жестко подключены к регистрам A и B, а выход к R

Процессор должен разбивать команду на микрооперации, каждая из которых выполняется в определенный момент времени (такт). Допустим, у нашего процессора есть команда LD A, $X, которая кладет в регистр A число $X (указанное после кода команды). Вот как ее можно разбить на микрооперации:

Первые 3 микрооперации выполняются для любой команды (чтение кода команды из памяти), а следующие зависят от того, какая именно команда была прочитана.

1) подсоединить выход регистра IP к шине адреса памяти, подать в память сигнал чтения

В ответ на это память выдаст на шину данных содержимое ячейки по адресу из регистра IP.

2) подсоединить вход CMD к шине данных и сохранить пришедший из памяти код команды в этом регистре. Так как выход CMD подсоединен к декодеру команд, то он разбирает команду и на его выходе появляются управляющие сигналы, которые выбирают, какие именно микрооперации (на шагах 4, 5 и 6) надо будет делать дальше.

3) увеличить значение регистра IP на один

Теперь идут микрооперации, которые относятся конкретно к команде LD A, $X. Нам надо прочитать следующий байт из памяти и сохранить его в A

4) подсоединить выход регистра IP к шине адреса памяти, подать в память сигнал чтения

В ответ на это память выдаст на шину данных содержимое ячейки по адресу из регистра IP (то есть число $X, которое хранится после кода команды)

5) подсоединить вход A к шине данных и сохранить значение с нее в регистре

6) увеличить значение регистра IP на один

7) команда выполнена, перейти к шагу 1

Или например рассмотрим команду INC A - увеличить A на один. Если наши регистры умеют увеличивать значения, то она будет состоять из одной микрооперации:

4) увеличить значение A на один

Если нет - нам придется сделать как-то так:

4) подать на второй вход АЛУ число 1 (к первому входу подсоединен регистр A)
5) запустить сложение в АЛУ, сохранить результат в R
6) подсоединить выход R к внутренней шине, подсоединить вход A к внутренней шине и сохранить в регистр A значение с нее

Аноним 06/09/17 Срд 21:14:55  1058307
monobeno3.jpg (28Кб, 439x392)
>>1057646
>Ты просто наверно пропускаешь основы и берешься сразу за сложное. Сначала тебе надо изучить, какие есть в процессоре регистры, какие есть режимы адресации, а потом уже смотреть, как кодируется та или иная команда, иначе ты не поймешь зачем нужны байты вроде MOD R/M в машинном коде.
Это все где-то изложено в одном месте? Вот это https://www.nostarch.com/assembly2.htm норм книжка?
>>1057671
Это все можно же свести к машине Тьюринга?
Аноним 06/09/17 Срд 21:41:24  1058319
>>1044834
вот через укртелеком двач у мну не работал, а теперь работает, хотя я в украине живу и прокси не юзаю
Аноним 07/09/17 Чтв 03:28:20  1058423
>>1058307
>Это все где-то изложено в одном месте?
Палю годноту: Harris & Harris "Digital Design and Computer Architecture".
Аноним 07/09/17 Чтв 06:51:15  1058432
>>1058423
Как бы слегка не для новичка книжка.
Аноним 07/09/17 Чтв 09:51:17  1058470
>>1058423
Thanks, nyasha!
Аноним # OP  08/09/17 Птн 21:20:54  1059201
ОП жив и сревернсил ещё одну функцию, лол.
Аноним 08/09/17 Птн 22:12:08  1059225
Есть какая-нибудь годная старая книга, можно 90-х, где бы суровые профессора раскладывали по полочкам ассемблер так, как они это делали с делфей?
Чтобы даже мне зашло.
Аноним 09/09/17 Суб 00:14:31  1059287
>>1059225
Что тебе там раскладывать по полочкам? Самый простой язык в мире. Учи мнемоники @ пиши код.
Аноним # OP  09/09/17 Суб 10:32:41  1059378
>>1059225
->
>>1015083 (OP)
>Книги по ассемблеру:
>"Архитектура компьютера" Э. Таненбаум
>С.В. Зубков: Assembler. Язык неограниченных возможностей
Аноним 09/09/17 Суб 12:22:53  1059393
В KolibriOS до сих пор нет нормального браузера. Заебаште норм бровузер на асме с интерпретатором жс.
Аноним 10/09/17 Вск 15:59:42  1059848
monobeno4.png (910Кб, 1280x800)
Как матчасть Танненбаум, похоже, как раз то что нужно. А что насчет софта? Самая годнота для дизассемблирования, как я понял, IDA Pro, а опенсорс, как обычно, хуета из-под кота? Или я не прав?
Аноним 10/09/17 Вск 16:55:32  1059883
>>1057671
>Это все можно же свести к машине Тьюринга?
Свести можно, но машина Тьюринга - это математическая модель, которая используется для доказательства различных гипотез. К тому же в ней программа заложена жестко. А я хотел показать примерные идеи, на которых делаются (точнее делались) реальные микропроцессоры.

> Это все где-то изложено в одном месте?
Я помню в универе видел толстую книгу с описанием интеловской архитектуры, но название забыл. Танненбаум наверно.
Аноним 10/09/17 Вск 16:56:27  1059884
>>1059848

Зато опенсорс можно взять и улучшить, добавить, чего там не хватает.
Аноним 10/09/17 Вск 20:57:20  1060008
>>1059884
Для этого придется сначала взять и выкинуть то, что там есть. Почти все.
Аноним # OP  10/09/17 Вск 21:38:40  1060021
>>1059848
>а опенсорс, как обычно, хуета из-под кота?
Ну не то чтобы как обычно, но в случае реверса ты совершенно прав.
>>1059884
Ну поди и улучшь. Самый ебанутый довод опенсорсников. Уверен, что 99,999% его использующих ни разу ничего не добавили.
Аноним 11/09/17 Пнд 02:34:15  1060082
>>1058432
Define "новичок" тогда уж.

Там архитектура с самых основ объясняется, и довольно подробно. Есть там и хардкор, но его не обязательно разбирать досконально для понимания общих принципов.

Ещё у Таненбаума есть "Structured Computer Organization", но там более сжато.
Аноним 13/09/17 Срд 13:27:11  1061279
Анончики, я думаю среди вас есть те кто читал гайд по крекингу от Ricardo Narvaja никто не может подсказать как снять защиты с крэкми из главы 32?
Аноним 13/09/17 Срд 20:07:26  1061474
>>1060082
Раз уж на то пошло, x86 - не самая лучшая архитектура для "новичка". Я бы начал с MIPS.
http://chortle.ccsu.edu/AssemblyTutorial/
Аноним 13/09/17 Срд 20:16:50  1061476
Какая литература лучше всего подойдет для абсолютного нуба?
Аноним 13/09/17 Срд 20:19:55  1061478
>>1061476 -> >>1061476
Аноним 13/09/17 Срд 20:20:49  1061480
>>1061478
?
Аноним 13/09/17 Срд 20:21:34  1061481
Упс, промахнулся.
>>1061476 -> >>1061474
Аноним 13/09/17 Срд 21:45:50  1061540
>>1061481
Сам-то с мипсов начинал? Чтоб тебе самому вместо изучения асма с нормальными отладчиками, дизассемблерами и кучей документации роутер ебать!
Аноним 13/09/17 Срд 22:57:52  1061601
shot0001.jpg (106Кб, 1008x720)
>>1061540
>Сам-то с мипсов начинал?
Именно с них. Потом ARM. х86 сейчас начинают ударными темпами закапывать, так что сейчас не понятно, оправданно ли вообще на ее изучение время тратить.
>Чтоб тебе самому вместо изучения асма
Перед изучением асма неплохо бы знать, что это вообще за штуковина такая - процессор, чем там ALU занимается на самом деле, что за "дополнение до двух", вот это все. По моей ссылке этому как раз треть материала посвящена, самые что ни на есть азы.
>с нормальными отладчиками, дизассемблерами и кучей документации
Под него есть симулятор (как и под любую другую архитектуру), ассемблер/дизассемблер тебе все равно по хорошему свой писать, а с документацией у мипсов как раз все хорошо (весь reference manual занимает от силы страниц 400).
>роутер ебать!
Лично я ебал PSP, но и роутер никто не запрещает.
Аноним 14/09/17 Чтв 01:22:23  1061649
>>1061601
> х86 сейчас начинают ударными темпами закапывать
Я это в девяностых слышал.

> Перед изучением асма неплохо бы знать
Нахуй не нужно новичку. Ты еще с транзисторов предложи начать. Хотя нет, слишком высокий уровень. С ядерной физики.

> reference manual занимает от силы страниц 400
О да, новичкам только мануалы и читать. Сразу, сходу. Вместе с невозможностью запустить код на реальной машине - охуенный способ не выучить асм, проклясть байтоеблю и пойти писать на джаваскрипте, или что там сейчас модно.
Аноним 14/09/17 Чтв 03:21:47  1061670
>>1061649
>Я это в девяностых слышал.
Ну так сейчас как раз повторяется та же самая история: Microsoft и Qualcomm вместо Transmeta пилят транслятор машинного кода ( https://www.youtube.com/watch?v=L9xLYHHBN-A ), исследователи грызут аппаратные баги F00F ( https://www.youtube.com/watch?v=KrksBdWcZgQ&list=PLXI5ri9BGtlFvtN-7boRTVC4mUXiswT63&index=6 ), на серверный рынок лезут всякие жирные arm64 с терабайтами оперативки и даже OpenPOWER зашевелился. Про embedded-рынок и так все понятно. Так что посмотрим, может на этот раз и вправду закопают.
>Нахуй не нужно новичку. Ты еще с транзисторов предложи начать.
Не передергивай. Представление целых со знаком не надо знать новичку? А что ему тогда надо знать в первую очередь, зоопарк режимов и сегментную адресацию?
>О да, новичкам только мануалы и читать. Сразу, сходу.
Кто сказал, что сходу? Вот наиграется этот новичок с HelloWorld'ами и решит собственный ассемблер написать. Хороший способ доказать самому себе, что имеешь представление о данной архитектуре.
>Вместе с невозможностью запустить код на реальной машине
А мужики-то и не знали.
>охуенный способ не выучить асм, проклясть байтоеблю и пойти писать на джаваскрипте, или что там сейчас модно
По мне так последовательное разгребание наслоений человеческой жадности и раздолбайства - отличный способ забить посреди процесса.
Аноним 14/09/17 Чтв 06:45:08  1061698
>>1061670
> Microsoft и Qualcomm вместо Transmeta пилят транслятор машинного кода
Ну и пусть пилят. Microsoft скоро осознает, что их очередное вторжение на планшеты и телефоны в очередной раз закончилось ничем, и все похоронит. Проходили уже. И убийца x86 ака титаниум для серверов был, как раз недавно официально окончательно похоронили. К тому же, даже если какая-нибудь архитектура и станет вдруг более популярной, неебическое количество существующего кода для x86 никуда не денется, его все так же придется писать, реверсить и отлаживать. Все это, разумеется, отнюдь не означает, что современному байтоебу не нужно разбираться хотя бы в ARM.

> Представление целых со знаком не надо знать новичку?
Это надо знать до изучения асма и программирования вообще. Это азы, как и системы счисления, как арифметика младших классов и хотя бы отдаленное представление о логике. А вот что внутри процессора - это лишние, запутывающие новичка знания. Как и существование сегментов или зоопарка режимов процессора. К счастью, 32-битный режим в x86 неебически прост, и если новичок где-нибудь на нем и забьет, то ничего, в общем-то, не потеряет - навык чтения асма у него останется, и он сможет при случае выхлоп компилятора посмотреть или отладить чего-нибудь. Если начнет с MIPS и бросит, то с 99.9% вероятностью полученные знания ему никогда не пригодятся.

> А мужики-то и не знали.
Ну вот смотри: либо у тебя кривой эмуль, кросскомпиляция, непонятные утилиты, написанные чужими для нелюдей и удаленная отладка через gdb, либо у тебя няшный фасм с собственным редактором, компиляция одной кнопкой, отладка в OllyDbg/x64dbg с графикой, отображением всего, что только можно, трейсами-бэктрейсами, встроенным ассемблером, интуитивным интерфейсом и туториалами на ютубе впридачу. Профессионалу похуй, а вот выбор новичка очевиден.

> решит собственный ассемблер написать
Во. То есть нужно начинать с мипсов, чтобы написать еще один ассемблер. Вместо чего-нибудь полезного. Я бы понял, если бы ты рассказал про поиск и патчинг бэкдоров и багов в роутерах, когда производитель на них забил, ну или про моддинг, про портирование старых игр с PS. Я бы понял, если бы ты рекомендовал ARM, чтобы взять стмку за копейки и вкатываться в эмбеддед, чтобы заниматься всякими интересными вещами под андроидом. Но написание ассемблера - это самое бессмысленное занятие, которое можно придумать - пишется за вечер, архитектуру при этом знать необязательно, из всего мануала потребуется прочитать страниц десять, большая часть времени будет потрачена на копипаст и правку табличек опкодов. Да, иногда в этом есть смысл - у меня был случай с экзотической архитектурой, когда модуля для иды не было, какого-либо другого дизасма тоже, ассемблера или компилятора тем более, мануал на китайском, прошивка для железки упакована, нужно было поправить пару килобайт кода и упаковать все обратно. Пришлось писать самому ассемблер, модуль для иды и подобие эмулятора впридачу. Но, сам понимаешь, такие случаи возникают очень нечасто.
Аноним 14/09/17 Чтв 13:32:03  1061834
>>1061698
>Microsoft скоро осознает, что их очередное вторжение на планшеты и телефоны в очередной раз закончилось ничем, и все похоронит.
В прошлый раз оно окончилось ничем именно из-за отсутствия возможности запускать с х86-бинарники. На этот раз все будет зависеть от того, у кого лоеры зубастее.
>И убийца x86 ака титаниум для серверов был
Итаник утонул частично по той же самой причине: отсутствие обратной совместимости + сложная задроченная архитектура -> отсутствие нормальных компиляторов -> хреновое быстродействие за астрономическую цену привет Эльбрус. У arm64 с этим особых проблем нет, да и рынок серверов сейчас большей частью под Open Source. Также у него нет проблем с масштабируемостью, 2^8-ядерные сервера уже давно в свободной продаже.
>даже если какая-нибудь архитектура и станет вдруг более популярной, неебическое количество существующего кода для x86 никуда не денется, его все так же придется писать, реверсить и отлаживать.
Насколько я понимаю, именно на это и делают ставку. Вот вам готовая связка архитектура+ПО, которая может крутить ваш существующий код без существенной потери производительности, но если хотите полной отдачи - новый код старайтесь писать уже под нее. Как какой-нибудь древний сервер, про который уже никто толком не знает, как и почему вообще он работает. Проще засунуть в виртуалку и сделать копию.
>Это надо знать до изучения асма и программирования вообще. Это азы, как и системы счисления, как арифметика младших классов и хотя бы отдаленное представление о логике.
Ну так вместо того, чтобы агриться на слово "MIPS", открой мою ссылку и полистай. Там как раз очень подробно разжевывают самые-самые азы (системы счисления, представления чисел и строк, bitwise-операции и сдвиги, плавающую точку, передачу аргументов через регистры и стек, рекурсию, массивы, etc.). Причем разжевывают весьма грамотно, последовательно, с периодическими блиц-повторениями усвоенного. Просто делают это на примере MIPS-архитектуры, потому что (вот так сюрприз!) вся эта теория ложится на нее почти идеально, практически без архитектуро-специфичного оверхеда - кристально чистое байтоебство. Не самый худший вариант потратить 2 недели своего драгоценного времени, если собрался вкатываться в asm и не знаешь вообще ничего. В качестве бонуса сможешь на начальном уровне в MIPS и слегка попрактикуешь разговорный английский (там есть кнопка начитки голосом каждой отдельной темы). В качестве минуса - даже ARM будет в дальнейшем казаться кривой архитектурой.
>А вот что внутри процессора - это лишние, запутывающие новичка знания.
Смотря какие. Я вот видел людей, которые считали, что ALU на самом деле складывает и вычитает какие-то там числа.
>Ну вот смотри: либо у тебя кривой эмуль, кросскомпиляция, непонятные утилиты, написанные чужими для нелюдей и удаленная отладка через gdb, либо у тебя няшный фасм
Пожалуйста, после краткого курса молодого бойца бери свой няшный фасм и пиши сразу под x86_64 там хоть от нехватки регистров не будет так сильно припекать. Ты уже не будешь смотреть на него коровьими глазами и гадать, 0x10000000 - это сколько кило/мега/гигабайт снизу.
>написание ассемблера - это самое бессмысленное занятие, которое можно придумать
Не совсем. Он сильно пригодится, если ты захочешь ассемблировать свое творчество непосредственно на самой железке прямо в память, без перезагрузки/перепрошивки на каждый чих. Да, это я про форт-машину сейчас.
Аноним # OP  14/09/17 Чтв 18:09:16  1061934
>>1061670
>Microsoft и Qualcomm вместо Transmeta пилят транслятор машинного кода
И за это их засудит Интел просто нахуй.
>>1061834
>Итаник утонул частично по той же самой причине
Эмулятор х86 там был, работал так же хуёво, как и в ARM.
Аноним # OP  14/09/17 Чтв 18:56:35  1061964
>>1059201
В общем продолжаем.
Есть функция PopDefaultProcessorPolicy. ИДА из кода WRK создаёт следующее
https://pastebin.com/MWxG7w9H
Обратите внимание на оптимизацию компелятора с использованием переменной v3.
Я среверсил это в вот такой код:
https://pastebin.com/giNvha1q
Что выливается после компиляции и реверса ИДЫ в
https://pastebin.com/RyMCNPRD
Оптимизация сработала по другому, хотя код делает ровно тоже самое.
Собственно вопрос- как мне изменить код, чтобы он компилировался в тоже самое, что и оригинальный майкрософтовский?
Плюс в том файле ещё PoInitSystem с кучей неизвестных структур, ну да ладно.
Аноним 14/09/17 Чтв 20:45:31  1062032
>>1061934
>И за это их засудит Интел просто нахуй.
За что, за то что Майкрософт запилила программный транслятор бинарников? Так интеловские патенты в основном не про это, а про аппаратную реализацию. Иначе всякие Qemu уже давно бы кверху пузом всплыли. И к Квалкому не особо прикопаешься: они к драгоценной x86 вообще пальцем не притронулись, просто немного подкрутили свой процессор, чтобы транслятор от MS на нем быстрее работал. Если тяжба и начнется - длиться она будет доооолго.
>Эмулятор х86 там был, работал так же хуёво, как и в ARM.
На майкрософтовских демках сейчас всякие фотошопы с офисами вполне резво бегают и даже танчики какие-то катаются. Поглядим, короче, что выкатят к концу года. Мне кажется никто не будет возражать, если охреневшую монополию хотя бы на рынке ноутбуков немного расшевелят. Конкуренция - это хорошо.
Аноним # OP  14/09/17 Чтв 21:10:00  1062046
>>1062032
>За что, за то что Майкрософт запилила программный транслятор бинарников?
А то.
>Иначе всякие Qemu уже давно бы кверху пузом всплыли.
А ты знаешь продаваемые устройства с квеми? Он просто нахуй никому не нужен, вот и не придираются.
>На майкрософтовских демках сейчас всякие фотошопы с офисами вполне резво бегают и даже танчики какие-то катаются.
Просто процы со времён итаника подросли, вот и тянут трансляцию без тормозов.
>Мне кажется никто не будет возражать, если охреневшую монополию хотя бы на рынке ноутбуков немного расшевелят. Конкуренция - это хорошо.
Кроме интела- никто не против. Но интел не хуй с горы, и просто так своё властвующее положение не отдаст.
Аноним 14/09/17 Чтв 21:55:39  1062067
>>1062046
>Он просто нахуй никому не нужен, вот и не придираются.
Тогда почему тот же Интел не засудил в свое время Трансмету, а наоборот схлопотал иск от нее? Или история с IBM и Apple, там вообще все один в один: ушли на архитектуру конкурента, запилили транслятор.
>Просто процы со времён итаника подросли, вот и тянут трансляцию без тормозов.
Это еще Apple в свое время продемонстроровала, сейчас подросли АРМы и настал черед Microsoft. Статус кво не мог вечно продолжаться.
Аноним 14/09/17 Чтв 21:56:44  1062069
>>1062067
>Статус кво
Позор мне.
Аноним 19/09/17 Втр 16:07:13  1063843
Привет, ребят, студент компьютер сайенс 19 лвл репортинг. Очень понравился ассемблер (Уже сделал половину лаб по нему). Можно ли как-то в него вкатиться, или слишком сложно? Что для этого надо делать?
Аноним 20/09/17 Срд 18:52:16  1064289
>>1063843
>Что для этого надо делать?
Шапку прочитать. А так как ты самостоятельно не смог до этого догадаться, то уровень твоего интеллекта не позволит освоить ассемблер в высокой степени.
Аноним 20/09/17 Срд 19:37:25  1064322
>>1064289
В шапке нет гайда для тех, кто желает вкатиться. У меня проблема не в недостатке материала, а в отсутствии человека, который знаком с этим и может поделиться немного опытом.
Аноним 20/09/17 Срд 20:11:23  1064341
>>1064322
А какой тебе опыт нужен? Штудируй литературу и дело с концом.
Аноним 20/09/17 Срд 20:33:01  1064350
>>1063843
Немного странный вопрос. Учитывая, что ты уже половину лаб сделал. Просто делаешь дальше остальные.
Ещё ты не написал, какой ассемблер. Или нет другой архитектуры, кроме x86 и Intel пророк его? Тогда можешь писать программы на C и смотреть, во что превращается код. Даже Visual Studio (если ты в Windows работаешь) может показать ассемблерный листинг, что наглядно и удобно. Дальше берёшь OllyDbg, гуглишь туториалы и вперёд. Попутно знакомишься с Ida.
Аноним 21/09/17 Чтв 13:43:47  1064573
monobeno7.jpg (182Кб, 602x692)
Начал читать Танненбаума, полистал книжку, там что с точки зрения математики нет ничего сложнее булевой алгебры? В историческом обзоре машина Тьюринга и алгоритмы даже не упомянуты. Это нормально? И еще вопрос, про полиморфизм: если там только булева алгебра, ничего же не стоит автоматически заменять ассемблерные комманды эквивалентными им логическими построениями (в простейшем случае - двойное отрицание комманды логически равно этой комманде, но если так поступить с виросом, все сигнатуры, по которым он детектится, проебутся). Получается, уже таким деревянным методом можно получать идеальный неуязвимый полиморф?
Аноним 21/09/17 Чтв 21:21:54  1064739
>>1064573
Давно уже во многих протекторах так и делают. Это медленно и печально, но все же раскручивается обрано. Гугли SAT solver. А что насчет полиморфа, то ты просто получишь детект от эвристики за ебнутый код.
Аноним 22/09/17 Птн 13:06:41  1064957
monobeno8.jpg (81Кб, 1280x720)
>>1064739
Мм..,ок. А если запилить (в виде макросов для ассемблера) собственную логическую аксиоматику, сколь угодно ебнутую, но непротиворечивую? Компиляться нормально будет, но без моих макросов никак не раскрутишь до изначального кода.
Аноним 22/09/17 Птн 17:48:27  1065033
>>1064573
Машина Тюринга нужна только для научных статей, она не имеет отношения ни к реальному железу, ни к обфускации кода.

>>1064573
Антивирусы могут смотреть не только на сигнатуры.

>>1064957
А зачем смотреть на твой код? Достаточно посмотреть, какие системные вызовы он делает, какие файлы читает, что по сети шлет.
Аноним 22/09/17 Птн 18:07:54  1065041
>>1065033
>Машина Тюринга нужна только для научных статей, она не имеет отношения ни к реальному железу, ни к обфускации кода.
Как жи не имеет. Это одно из уточнений понятия алгоритма.
>Антивирусы могут смотреть не только на сигнатуры.
А что еще они смотрят?
>А зачем смотреть на твой код? Достаточно посмотреть, какие системные вызовы он делает, какие файлы читает, что по сети шлет.
Есть конкретные критерии, что должен делать вирос, чтобы признать файл виросом? Вот если сделать бэкдор из скрипта установки и настройки Active directory в шиндовс, антивирос его спалит?
Аноним 22/09/17 Птн 21:05:51  1065130
>>1065041
> Есть конкретные критерии, что должен делать вирос
Нет. Каждому действию присваивается вес, веса суммируются в оценку или оценки, по которым антивирус решает, норм или нет.
> вот если сделать бэкдор из скрипта
Проактивка может спалить. Сканер спалит, только если у него есть модуль для такого скрипта и эвристика для поиска каких-то вредных действий.

> Как жи не имеет
Когда у тебя будет бесконечная память - приходи.
Аноним 23/09/17 Суб 00:35:12  1065239
>>1065041
>А что еще они смотрят?
Поведение.
>Есть конкретные критерии, что должен делать вирос, чтобы признать файл виросом?
У каждого антивиря они свои, и раскрывать их они желанием не горят. Реверсь все антивири и узнавай, что они ищут.
Аноним 23/09/17 Суб 09:52:45  1065335
>>1065239
>>1065130
Вот насчет этих маняэвристик и т.п. мне реально смешно. К сожалению, плавали, знаем. Имею опыт общения с мутной малварью на компе и телефоне. Так вот, установленному антивиросу на тилибоне было строго по хую, что браузер сам переходит по каким-то ссылкам, активируются платные подписки, вылезают рекламные баннеры и т.п. Т.е. обнаружение реально вредоносной хуйни там уровня /б, это я видел своими глазами. На компе какая-то ебала, запущенная как системный процесс svchost.exe, что-то слала по сети, коннектилась к десяткам адресов, делала еще хуй знает что, заметно загружая процессор, к слову. Пока вручную процесс експлорером не выявил, где оно лежит (откуда запускается) и т.д. и не удалил к хуям, касперский на нее вообще внимания не обращал. Если это и есть ваши супернанотехнологии - эвристика проактивка, то я спокоен.
Аноним 23/09/17 Суб 11:09:46  1065365
>>1065335
А никто и не писал, что они эффективны на 100%. но сканер уровня /б, как ни странно, неплохо ловит вирусы уровня /б
Аноним 23/09/17 Суб 12:15:29  1065385
А чего можно почитать про устройство процессора? Устройство управления интересует, Пецтольд о его устройстве тактично умолчал. Пытаюсь в Logisim собрать 8-битный проц уровня /b/, пока есть только АЛУ примерно такого же уровня.
Аноним 23/09/17 Суб 13:58:43  1065404
>>1065385
Не в тот тред пишешь и даже не в тот раздел, это больше для /ra/ подходит.
http://www.bhv.ru/books/full_contents.php?id=182109
http://dmkpress.com/catalog/electronics/circuit_design/978-5-97060-450-2/
Logisim лучше выкини, для этих целей есть verilog и VHDL.

>пока есть только АЛУ примерно такого же уровня.
Дорисуй остальные части - память, шины, регистры всякие. Как дорисуешь, может быть поймешь что устройство управления это совсем несложное устройство.
Аноним 23/09/17 Суб 14:09:47  1065412
>>1065404
За вторую ссылку спасибо. VHDL И verilog, боюсь, не осилю.
Аноним 23/09/17 Суб 14:27:22  1065423
>>1065412
>За вторую ссылку спасибо.
По первой ссылке:
>Глава 23. Архитектура и структурная VHDL-модель процессора DP32.
Это более простой пример, чем по второй ссылке. А значит в нем проще будет разобраться.
Из того примера явно видно, что устройство управления - это дешифратор с счетчиком.

>VHDL И verilog, боюсь, не осилю.
Verilog совсем простой же. В /ra/ есть ПЛИС-тред в котором подскажут, если что-то будет непонятно.
А для альтернативно одаренных есть http://nand2tetris.org/
Аноним 24/09/17 Вск 00:57:12  1065723
>>1065385
Можно я ссылочку на свой пост добавлю, где я пытался спроектировать простейший процессор: >>1057671
Аноним 25/09/17 Пнд 17:10:07  1066287
>>1015083 (OP)
Поясните кто-нибудь за знаковое деление (IDIV) в asm.
Архитектуры пк не знаю.(а стоило бы наверное, но времени толком нету) (спасибо блядям впихнувшим матанохуйню)
Потому и не получается понять деление отрицательного числа на положительное.
Единственное что знаю, что отрицательные числа хранятся в дополнительном коде.

Есть, например:
AX = -120
BX = 1
Обнуляю перед делением DX(т.к. деление идет на слово, то остаток помещен будет в DX)
Но на деле оказывается, что нужно заполнить регистр DX знаковым битом числа AX, т.е. в DX будут единицы, если делимое отрицательное.
Вот тут я и не понимаю почему это так.
Поясните как происходит самое деление.
Аноним 25/09/17 Пнд 20:51:52  1066393
>>1066287
idiv bx делит dx:ax на bx. dx:ax означает, что старшие биты делимого берутся из dx, младшие из ax. Если ты не заполняешь dx знаковым битом (хотя хули там заполнять - cwd), то твоое делимое получается 0000000000000000:ax, старший бит ноль, и это будет вполне себе положительное 32-битное число, меньшее чем 65536, вне зависимости от содержимого ax.
Аноним 25/09/17 Пнд 20:54:19  1066394
>>1066287
Алсо, ты можешь делить на bl, если уверен, что частное влезет в al.
Аноним 25/09/17 Пнд 21:22:23  1066403
>>1066393
>>1066394
>делить на bl, если уверен, что частное влезет в al
Да там по заданию требуют слово на слово деление делать.
Спасибо, вроде минимально понятно стало.
Аноним 26/09/17 Втр 18:55:51  1066824
Какие могут быть последствия вызова одной и той же .dll в коде дважды, если у них разное название? Сам PE-файл то один и тот же. Мне кажется, ничего плохого произойти не должно, просто она загрузится в адресное пространство процесса в двух экземплярах, никак друг с другом не пересекающихся. Или я о чем то не знаю?
Аноним 26/09/17 Втр 18:56:31  1066826
>>1066824
под вызовом имею в виду получение дескриптора через LoadLibrary()
Аноним 26/09/17 Втр 21:28:29  1066889
>>1066824
> просто она загрузится в адресное пространство процесса в двух экземплярах
И не надейся. Повторно винда грузить ничего не будет, просто счетчик использования DLL при повторных вызовах LoadLibrary() инкрементируется (т.е., если DLL уже загружена, то по сути делается GetModuleHandleEx(0, "somedll.dll", ...)), и для выгрузки DLL понадобится не один вызов FreeLibrary(), а столько, сколько раз была вызвана LoadLibrary(). Если тебе нужно именно две копии DLL в памяти, лучше всего просто скопировать файл с другим именем. Есть еще вариант с модификацией PEB_LDR_DATA, но без особых причин туда лезть не стоит.
Аноним 26/09/17 Втр 21:30:55  1066890
>>1066889
Я в первом посте как раз написал, что имена разные. Про инкрементирование счетчика я знаю, меня интересует именно не будет ли нежданчика, если 2 фактически одинаковых библиотеки будут загружены через LoadLibrary, если они в ФС разные имена имеют.
Аноним 26/09/17 Втр 23:11:37  1066934
>>1066890
Зависит от либы. Например, если DLL в процессе работы создает какой-нибудь именованный объект (мьютекс, например, или memory mapping), то очевидно, она слегка охуеет и сломается. И это в лучшем случае.

А что за задача у тебя?
Аноним 27/09/17 Срд 17:52:56  1067240
А поясните, что мешает разврнуть взад sha-256 хеширование? Алгоритм хеширования существует, результат каждого последующего прохода - функция от предыдущего, итоговый результат - суперпозиция таких функций. Ну, и?
Аноним 27/09/17 Срд 18:04:47  1067250
>>1067240
А что ты ожидаешь получить в итоге? Файл, от которого взят хеш? Идеальная функция компрессии будет, любой размер данных в 32 байта можно уместить.
Аноним 27/09/17 Срд 18:12:53  1067253
>>1067250
Ну так там же не сам файл хешируется? Допустим, речь только о закодированных сообщениях или блоках биткойнов.
Аноним 27/09/17 Срд 19:01:33  1067272
>>1067253
>Ну так там же не сам файл хешируется?
А что, твоя мамка?
>Допустим, речь только о закодированных сообщениях или блоках биткойнов
Пусть. Вот простейшая хеш-функция, сложение. Берём два числа, например 23 и 19. Результатом такого "хеширования" будет 42. Так какие числа у меня там были? Ну, и?
Аноним 27/09/17 Срд 23:53:17  1067415
59673483f7065a4[...].jpg (193Кб, 750x650)
Вот я, допустим, ручками посчитал вещественное число -0.5432 в машинном представлении :
-0.5432 = 0.1000 1011 0010 1001 0101 1110 10
дальше, в нормализованном виде:
-0.5432 = 1.000 1011 0000 1111 0010 0111 * 2 в степени (-1)
Харакетристика: 7F - 1 = 7E = 01111110
получаем:
S + характеристика + мантисса =
1 01111110 000 1011 0000 1111 0010 0111
1011 1111 0000 1011 0000 1111 0010 0111
BF0B0F27

Потом пишу dd -0.5432, компилю, в листинге вижу BF0B0F28, то есть последний разряд какого-то хуя на единичку больше. Поясните, ЧЯДНТ?
Аноним 28/09/17 Чтв 00:42:29  1067441
>>1067415
Нормализованное значение получается:
1.000 1011 0000 1111 0010 0111 1011 и т. д.
Выделенная единичка уже не влезает в разрядную сетку и округляется (а так как она 1, она не отбрасывается как 0, а прибавляется):
...0111 (7 на конце в твоем хекс-представлении) + 1 = 1000 (8 на конце в правильном представлении).
Аноним 28/09/17 Чтв 01:03:01  1067447
>>1067441
Оу, понял. Спасибо.
Аноним 01/10/17 Вск 17:44:50  1069239
Добрый вечер. У меня есть tasm на виртуалке виндовса хр, задание - открыть другой ехе файл с моей асм программы.

Мне не нужно решение, я спрашиваю, что гуглить. Спасибо. Может есть книги, в которых это описали?
Аноним 01/10/17 Вск 19:12:44  1069276
>>1069239
> открыть
Ты имеешь в виду "запустить" или "открыть для чтения/записи"? int 21h/ah=4bh. Любой справочник по прерываниям. Например, этот: http://www.codenet.ru/progr/dos/int_0026.php
Аноним 01/10/17 Вск 21:15:21  1069334
Начал учить этот ваш ассемблер, потому что уже очень давно загорелся такой идеей. Но расстраивает то, что почти ничего непонятно. Вкатываюсь с ооочень большим трудом, до этого программировал на питончике. Я ведь не один такой тугой здесь? Как думаете, упорное залипание в теорию и параллельная практика дадут свои плоды? Я совсем отчаялся уже :с
Аноним 01/10/17 Вск 22:10:32  1069379
>>1069334
> почти ничего непонятно
Меньше читай, больше смотри в отладчике пошагово, что происходит.
Аноним 01/10/17 Вск 22:45:06  1069400
Решил вкатиться в асм, наваял пузырьковую сортировку знаковых целых, а она сортирует по величине от 0x00 (ну короче без учета дополнительного кода, 0xFF считает больше чем 0x10).
https://pastebin.com/2u4g1kHY
Как бы вы переделали? И что я тут наговнокодил? (кроме отсутствия разбиения на процедуры)
Аноним 01/10/17 Вск 23:02:57  1069409
>>1069400
Забыл сказать, код для 16-битного окружения, под дос короче, сам запускаю из-под досбокса, обмазываюсь debug'ом и дебажу
Аноним 02/10/17 Пнд 20:16:24  1069697
Аноны помогите, нужно понять что делает программка через ida но я ньюфаг и хз с чего начать даже,помогите как разобраться в этом?Нужно ли полагаться на хекс рэйс или он часто наебывает?
Аноним 02/10/17 Пнд 20:59:08  1069711
>>1069697
> нужно понять что делает программка через ida
Особую уличную магию.

> Нужно ли полагаться на хекс рэйс или он часто наебывает
Иногда без правки дизасма невозможно заставить его выдать корректный код. Без корректных типов переменных могут пропадать целые блоки кода. Иногда циклы превращаются в условия. Куча проблем с floating point, про SIMD вообще молчим.
Аноним 02/10/17 Пнд 21:04:07  1069712
>>1069711
Ну понятно что это с практикой более менне придет , но вот с 0 что можно сделать?Нет там хоть начальных статей,гуидов
Аноним 02/10/17 Пнд 21:06:45  1069714
>>1069712
Очевидные "Образ мышления IDA" (Крис Касперски, книга протухла, но в целом ничего с тех пор не поменялось), beginners.re из шапки, "The IDA Pro Book" (Крис Игл).
Аноним 04/10/17 Срд 15:05:06  1070541
Поясните, что должна делать функция 00h прерывания 10h, а то ДосБокс это не переваривает как-то. Должна что-то делать с курсоров вроде, но я не понимаю, что именно.
Аноним 04/10/17 Срд 19:06:12  1070629
>>1070541
устанавливать видеорежим
Аноним 04/10/17 Срд 19:17:59  1070632
>>1070629
И тут я понял, что неверно прочитал и мне нужна 01h. Спасибо, иначе так бы и тупил
Аноним 05/10/17 Чтв 00:37:31  1070915
Делаю лабу с математическим процессором 80х87, нужно поднять одну хуету в степень.
Мне надо поднять x в степень а x^a.
Надо использовать:
fld x
fscale a

Я всё правильно делаю?
Ассемблер интересный, но инфы пиздец мало, простите, что у вас такое простое спрашиваю.
Аноним 05/10/17 Чтв 01:03:30  1070945
>>1070915
Черт, насколько я понял - я проебался.
Выходит - мне надо будет писать функцию поднятия до степеня самостоятельно?
Степень должна быть 2*n+1
Аноним 05/10/17 Чтв 02:37:06  1070980
>>1070945
Стандартный способ возведения в степень на FPU - комбинация fyl2x и f2xm1. Про логарифмы в школе рассказывали?
Аноним 05/10/17 Чтв 10:10:17  1071035
>>1070980
Дружище, я ничего не помню почти с курса матана и подобного. Уделишь пару минуток и объяснишь? Буду очень благодарен.
Аноним 05/10/17 Чтв 11:44:00  1071062
>>1071035
Блэт, это же школьная программа.
x = 2 ^ log2(x)
x ^ a = (2 ^ log2(x)) ^ a = 2 ^ (a log2(x))
a
log2(x) находится с помощью fyl2x (y = a, x = x).
Возведение в степень: f2xm1 (x = результат fyl2x). Полученный результат инкрементишь и получаешь x ^ a.
Вместо f2xm1 можно просто шифтануть 1 влево на fyl2x.
Аноним 05/10/17 Чтв 21:58:16  1071290
>>1071062
>Вместо f2xm1 можно просто шифтануть 1 влево на fyl2x.
Отмена. Хуйню написал, каюсь.
Аноним 06/10/17 Птн 01:29:55  1071391
>>1071290
>>1071062
Завтра попробуй написать по этому лабу, большое спасибо!
Аноним 06/10/17 Птн 14:08:21  1071559
Сап программач. Пытаюсь вкатиться в реверс-инжиниринг. Есть программа на С, принимаюшая ввод от пользователя в массив и выыводяшая этот массив на экран. Пытаюсь произвести переполнение стека, чтобы программа запросила ввод еще раз, но попытки с командой echo дают результат seg fault. Отладчик при этом показывает, что в стеке якобы выделяется гораздо больше памяти для массива чем 2 байта. Что я делаю не так?
Аноним 06/10/17 Птн 20:33:25  1071742
>>1071559
компилируешь со включённым stack protector'ом
Аноним 06/10/17 Птн 20:56:23  1071757
Как то раз баловался ollydbg'ром с одним проприетарным софтом и заметил, что по коду разбросаны JMP'ы, которые сбивают ассемблерный листинг. Типа вот ты шел по инструкциям,
10: MOV EAX EBX
16: PUSH 0xFF
18: CALL [ECX]
22: JMP 27
26: SUB ECX, 0xFFFF
28: INC [EAX]
...
И вот после JMP 25 у тебя следующая инструкция уже та, которую ты в листинге не видел, и вместо
26: SUB ECX, 0xFFFF
28:INC [EAX]

ты видишь уже

27: call kernel32.dll:0x1048
31: MOV ECX, 0x15
35:JMP 41

Это и есть виртуализация, или это какая то другая контр-реверсинговая мера?
Аноним 06/10/17 Птн 21:44:30  1071765
>>1071742
Насчет stack protector`а: как он отключается/включается? При компиляции были флаги m32, ggdb и mpreferred-stack-boundary=2.
Аноним 06/10/17 Птн 21:53:48  1071767
>>1071757
Это очень примитивное запутывание control flow. Возьми иду, она на такое не ведется, и зделоет тебе 26: db байтики, 27: call. Виртуализация - это когда полезная нагрузка представлена инструкциями виртуальной машины, а код, который ты видишь в дизасм - мусор, перемешанный с кодом самой виртуальной машины.

>>1071765
Внезапно -fno-stack-protector
Аноним 06/10/17 Птн 22:04:53  1071774
>>1071767
Большое спасибо.
Аноним 06/10/17 Птн 22:05:26  1071776
>>1071767
Что тогда с программной точки зрения представляет собой виртуализация? Я знаю концепцию в теории: есть виртуальная машина, у которой свой набор инструкции, которые неким образом сопоставляются реальным инструкциям. И как это реализуется? Всё, что мне приходит в голову - это типа я беру сырые байты кодовой секции, хуярю их функцией byte Virtualize(byte), которая, например, добавляет 1 к каждому байту исходников, потом логику девиртуализации компилирую в .dll, потом в исходники добавляю вызов byte devirtualize(byte, DWORD EIP) из либы с "виртуальной машиной", но по моему я неправильно себе представляю это, потому что уж слишком это уёбищно, чтобы быть правдой.

Может есть какой нибудь ресурс, где на простом насколько это допустимо в данной тематике было бы проиллюстрировано виртуализирование на примере какого нибудь калькулятора?
Аноним 06/10/17 Птн 23:30:07  1071802
>>1071776
> И как это реализуется?
Ты вообще представляешь как виртуальная машина работает? Напиши сначала простую вм в вакууме. Какой-то набор инструкций, какой-то массив с байткодом (вручную напишешь какой-нибудь 99 bottles of beer, например) и бесконечный цикл, который выбирает следующую инструкцию, исполняет ее и переходит к следующей (или к какой-то иной, если это было ветвление или вызов функции).

Собственно, для виртуализованного кода ты так же пишешь примерно такую же вм. Затем берешь функцию в машинном коде, берешь ее байты, дизассемблируешь, разбиваешь на базовые блоки (грубо говоря, последовательности без ветвлений), инструкции в каждом базовом блоке преобразуешь в инструкции вм, в конце втыкаешь вызовы вм для перехода между базовыми блоками (т.к., скорее всего размер байткода вм будет не равен размеру машинного кода, из которого ты его генерировал). Байткодом затираешь функцию или кладешь байткод в отдельную секцию - похуй. Вместо вызова фукнции втыкаешь вызов вм с адресом входного базового блока. Ну это если без обфускации и антиотладки. Для упрощения своей жизни пилишь кастомный линкер, говоришь компилятору separate functions for linker и работаешь с объектными файлами, а не с исполняемым. Далее тебе становится очевидно, что дизассемблирование - неудобный подход, и логическим развитием будет написание бэкенда к llvm, чтобы сразу генерировать виртуализированный код.
Аноним 06/10/17 Птн 23:47:24  1071808
>>1071802
> добавляет 1 к каждому байту исходников
Это обфускация, не виртуализация. Виртуализация подразумевает, что твоя вм байтики выполняет (они инструкции, команды, блять). И нет,
> инструкции, которые неким образом сопоставляются реальным инструкциям
Не обязательно. Одна инструкция вм может реализовываться хоть мегабайтами кода вм. Ты можешь без проблем придумать для себя инструкцию http_download_file и написать для нее в вм соответствующий обработчик.
Аноним 07/10/17 Суб 10:46:38  1071881
Несколько вопросов:
1. Как эта программа получает ввод с клавиатуры, если в дизассемблере ни одного прерывания не видно?
2. Если они все же есть, то как до них добраться? Запустил программу в edebugger, а функция return_input и находящийся в ней gets завершились и все. Даже окно терминала ни разу не вылезло для запроса ввода. А ведь еще при учебе в шараге при отладке с помощью Turbo Debugger какой-нибудь простенькой программы с вводом с клавиатуры появлялось окно терминала, потом происходил ввод одного символа и отладка продолжалось дальше. Поэтому третий вопрос:
3. Какая настройка/опция отвечает за поведение отладчика описанное выше?
Аноним 07/10/17 Суб 11:05:48  1071885
>>1071881
> прерывания
Ты в юзермоде. Единственное твое прерывание - это сисколл. Он надежно спрятан внутри функций, вызываемых функцией gets.

> Если они все же есть, то как до них добраться
ЗАЧЕМ?

> edebugger
Наверняка какое-нибудь говно. Наверняка оно отбирает у программы stdin. У тебя на скрине gdb, кто тебе мешает поставить брейкпоинт на return_input?
Аноним 07/10/17 Суб 11:09:02  1071886
>>1071881
И еще 1 вопрос отвалился: поясните пожалуйста за "ширину" стека. В интернете пишут что ширина стека составляет то 2 байта, то 4 байта. Просто последовательность команд чисто для примера push1,push2 кладет мне в стек по адресу N цифру 1, а по адресу [N-4] кладет цифру 2, хотя для этих цифр должно хватать 1 байта, следовательно почему не происходит варианта типа цифра 1 по адресу N, а цифра 2 по адресу [N-1] ?
Аноним 07/10/17 Суб 11:11:31  1071887
>>1071885
А как мне отлаживать через gdb? просто запрашивается ввод когда я ввожу run, а содержимое регистров параллельно с этим не выводится на экран. А после завершения программы состояние регистров мне ничего говорить не будет.
Аноним 07/10/17 Суб 11:25:52  1071889
>>1071886
> ширину стека
Есть размер, ширины нет.

> push1,push2
push - инструкция x86. Если не использовать operand size override (префикс 66), то оно кладет в стек dword (4 байта) в 32-битном и qword (8 байт) в 64-битном режиме.

> почему не происходит варианта типа цифра 1 по адресу N
Потому что ты наебнешь выравнивание стека на 4/8 байт, и потом, когда ты захочешь push 0xbaadf00d, вызываемая функция будет сосать по производительности из-за чтения этого значения по невыровненному адресу. Молчу уже про всякие SSE. К тому же, пришлось бы явно указывать pop, сколько байтов читать. Экономить 3 байта в стеке такой ценой нахуй никому не сдалось, поэтому процессор это не поддерживает (ну, точнее, поддерживает 16-битный push через префикс, но лучше так не делать). Если тебе очень хочется положить в стек байт, зарезервируй место каким-нибудь sub esp,N (или push нескольких двордов), и потом клади туда что угодно с помощью mov.

>>1071887
Ставь брейкпоинты (break) в нужное место перед run, ходи по инструкциям (step, next). И вообще, man gdb.
Аноним 07/10/17 Суб 12:16:07  1071892
>>1071889
А разве такой подход к стеку не ведет к тому, что стек может быть равномерно забит значениями, для которых хватило бы и 1 байта, т.е. такой подход ведь никак не экономит оперативную память.

Кстати, понял как работать с gdb и попутно понял что это офигеть какой неудобный отладчик. Ощущение что под линукс удобный отладчик с GUI хрен найдешь.
sage 07/10/17 Суб 12:49:41  1071904
>>1071892
> т.е. такой подход ведь никак не экономит оперативную память.
Еще раз: невыровненный доступ, возникающий из-за хранения байтов и двордов вплотную - это дорого, причем дорого для всех переменных вызываемой функции и ее потомков. При этом экономия на передаче небольших целочисленных констант (это будет какой-нибудь enum или bool) - копеечная. Даже в программах с глубокой вложенностью вызываемых функций ты наэкономил бы максимум какой-нибудь сраный килобайт. В x86-64 ты вообще ничего не наэкономишь, потому что твой байт с большой вероятностью будет передан в 64-битном регистре. Некоторый смысл мог быть при рекурсии, но глубокая рекурсия на системном стеке - зло.
Аноним 07/10/17 Суб 13:16:45  1071914
Есть ли инструменты для программирования сразу в машинном коде? С возможностью писать макросы и т.д.
Аноним 07/10/17 Суб 13:18:29  1071916
>>1071914
> сразу в машинном коде
Хекс-редактор?

> макросы
Ассемблер?

На flatassembler.net есть fasmg - это ассемблерный движок, не привязанный к конкретной архитектуре. Хуй знает, что тебе нужно.
Аноним 07/10/17 Суб 13:22:31  1071919
>>1071916
>Хуй знает, что тебе нужно.
Возможность манипулировать с опкодами, как с ассемблерными коммандами. Например, представить опкод одной комманды в виде функции от другого опкода. В ассемблере можно заменять исходные комманды их логическими эквивалентами, хочется чего-то похожего, но с 16-ричными опкодами и не только логикой, но и любыми функциями, н-р арифметикой.
Аноним 07/10/17 Суб 20:52:41  1072162
>>1071919
Ну посмотри на fasmg все же. Когда видишь его впервые, синтаксис кажется слегка странным, если не писал на фасме до этого, но если привыкнуть - вполне норм. Примеры в комплекте, написано оно на себе самом.
Аноним 13/10/17 Птн 15:11:21  1074935
Снова вкатывающийся в отладку программ. Есть программа принимающая ввод в буфер величиной 2 байта и 1 раз выводящая его. Мне таки удалось заставить программу вывести буфер 2 раза, а не один результат пикрелейтед путем тупого подбора т.к.я не очень умею в линуховые отладчики они все консольные и жутко неудобные, но дело не в этом. Вопрос: судя по дизассемблированному виду функция return_input выделяет вначале стеку 36 байт, тогда почему для выхода из фрейма стека и перезаписи сохраненного ebp и адреса возврата потребовалось 18 байт? И еще: в gdb есть разница между выводом десятичной десятки и шестнадцатеричной?
Аноним 13/10/17 Птн 17:31:18  1075036
>>1074935
> я не очень умею в линуховые отладчики
Можешь отлаживать идой через gdbserver, хотя отладчик в IDA тоже неудобным кажется после OllyDbg.

> почему для выхода из фрейма стека и перезаписи сохраненного ebp и адреса возврата потребовалось 18 байт
Потому что аргумент gets адресуется относительно ebp, а не esp. Передается ebp-10, плюс 4 байта на сохраненный ebp, плюс 4 байта на адрес возврата.

> в gdb есть разница между выводом десятичной десятки и шестнадцатеричной
Не понял вопроса.
Аноним 13/10/17 Птн 22:57:34  1075208
image.png (11Кб, 222x156)
Что думаете про реверс-инжиниринг игр с целью геймхака и самого геймдева в общем. Актуально ли и нужно ли кому-нибудь. Сколько ещё проживёт эта индустрия? Идется речь про реверсинг/разработку многопользовательских видеоигр.
Аноним 13/10/17 Птн 23:46:05  1075239
>>1075208
За деньги - только если тебя с этого прет. Если не прет - заебешься, проклянешь айти и уйдешь в дворники. Без денег аналогично. А в целом актуально и нужно.
Аноним 27/10/17 Птн 21:36:04  1082933
2.png (5Кб, 652x426)
Хотел вот поизучать ДОС, скопипастил кодик на С, который должен блокировать нажатие клавиши. Ничего не работает (пикрел, https://pastebin.com/gJpdrs5K). Потом скопипастил кодик, который выдает инфу о системе, ОЗУ, ПЗУ - какие-то ебанутые значения получаются. А так хочется вкатиться в эту древнюю тему, но ничего не получается. Подскажи ньюфагу, как ему быть.
Аноним 27/10/17 Птн 22:36:52  1082965
.png (321Кб, 1193x485)
asm тред? подписался
Аноним 28/10/17 Суб 00:06:38  1083038
>>1082933
Твоя паста протухла.
Аноним 28/10/17 Суб 01:39:10  1083076
>>1083038
То есть кодик никак не запустить с досбокса?
Аноним 28/10/17 Суб 02:45:08  1083087
>>1083038
У него там макака ссылку пошатала. Скобку с точкой убери.
Аноним 28/10/17 Суб 07:02:39  1083105
>>1083076
Должно работать в досбоксе. Только а) для активации тебе надо нажать хоткей, который он тебе предлагает, б) блокирует оно клавишу "3", а если нужны другие - гугли таблицы сканкодов и меняй сканкод в начале исходника. Можешь допилить и сделать антиспеллчекер (вставлять опечатки или заменять введенные слова на другие).
Аноним 28/10/17 Суб 14:54:06  1083216
Есть одна прошивка для TV платы на Mstar'о подобном mips soc так же известном как tsumv59 если точнее.
В конце файла есть хедер одинаковый для всех прошивок, 4-6 нулевых байт и некая контрольная сумма минимум 4 байта.
Конец и вывод команды crc32 в разных прошивках под этот проц выглядят так
BE EF 00 00 00 00 00 00 00 00 CD 57 61 A4 B0 22 (crc 4b814419)

BE EF 00 00 00 00 00 B3 51 CD AB AA 55 73 F7 B6 2D(crc 74124a07)

BE EF 00 00 00 00 67 C7 F3 87 11 51 (crc32 8cb436f5, сам файл прикладываю)
https://nofile.io/f/fgo1eWKKos4/1.zip
Любое изменение до/в/после контрольной суммы вызывает отказ обновления по USB. Модификация файла с последующим приведением crc32 к исходному виду не помогает. IDA особенно не помогает. binwalk выплёвывает >40 LZMA Compressed data которую распаковывает в 0 или 256байт мусор и TIFF логотип.
Как вычисляется эта контрольная сумма?
Аноним 28/10/17 Суб 16:24:40  1083252
бин.JPG (33Кб, 791x138)
>>1083216
про binwalk напиздел, поставил из репы, получил другой ответ
Аноним 28/10/17 Суб 18:10:11  1083300
>>1083216
Что-то совсем тебя не понял. Это точно CRC32? Ты смог получить это значение на не изменённой прошивке? Явно там не весь файл проверяется, а только сами данные без заголовка (хотя это не точно).
>Модификация файла с последующим приведением crc32 к исходному виду не помогает
Вот эта фраза мне не понятна. Ты изменил файл, но оставил неизменным контрольную сумму?
Подключайся по отладочному интерфейсу к устройству (JTAG что-ли называется) и смотри, как проверяется контрольная сумма. Может и в файле ещё где-то есть места, где проверяется целостность файла.
Аноним 28/10/17 Суб 23:35:36  1083491
>>1083300
crc32 можно привести к любому значению за счёт 4 dummy байт.
Помимо того crc считается для каждого отдельного раздела кроме ресурсов и для целого бинарнка. Получить записанное в прошивке значение у меня не получается, это вполне может быть экзотический полином для crc32 или результат обычного crc32/16 инвертирован/реверсирован/сдвинут, это я пытаюсь выяснить. Я попробовал трюк с приведением crc32 к исходному просто чтобы исключить последнее предположение.

Я менял значение случайных байт в различных частях прошивки, увеличивал/уменьшал размер в конца с начала чтобы определить границы проверки.
Если снять дамп микросхемы, его можно превратить в файл прошивки для usb обрезав хвост после контрольной суммы и дав ему правильное имя.
На плате есть UART, но полезной информации кроме тех. данных платы он не выплёвывает
В итоге мы имеем
1.Файл проверяется целиком, любое изменение в любом месте/размере ведёт к ошибке.
2. Проверочная сумма считается для целого файла на этапе сборки, затем записывается в хвост в виде 2-4 байт, затем файл подгоняется dummy байтами под исходную сумму. Это привычная практика для файлов с вшитой кс.
3. JTAG не вывден, даже если бы был, делать мне там нечего. Есть теоретический дебаг/прошивка через i2c/uart.
Так то мне ничего не мешает внести изменения в бинарник, зашить его через SPI и забыть, если конечно прошивка не проверяет себя при запуске. Мне просто любопытно как организована проверка целостности и как её обойти.
Аноним 29/10/17 Вск 00:00:05  1083504
>>1083491
>Помимо того crc считается для каждого отдельного раздела кроме ресурсов
*зачастую, не обязательно в данном случае
Короч, у кого есть предложения, открываю конкурс по окирпичиванию моего телевизора. сделайте мод отличный от оригинала который зальётся по usb.
Аноним 29/10/17 Вск 00:13:44  1083508
Почему никто не вкладывает денег в разработку игрового движка на ассемблере, тут одни плюсы, высокая производительность, более качественная графика, для меньшего геморроя можно поддерживаемые процессоры начиная от i3 и выше.
Посмотрите на демосцены какой там охуеный графон в 64К.
Для простоты разработки можно использовать высокоуровневые макросы но не везде.

Как по вашему идея?
Какие трудности могут возникнуть?
Сколько времени уйдет чтобы дойти до уровня UE4?
Была ли такая идея на кикстартере?
Аноним 29/10/17 Вск 00:25:28  1083514
>>1083508
> Почему никто не вкладывает денег в разработку игрового движка на ассемблер
Потому что писать медленно, модифицировать сложно, а практического смысла нет.
> высокая производительность
В теории. На практике компилятор знает лучше тебя, и у него больше возможностей (например, автоматическая оптимизация по результатам профилирования - на сколько проходов тебя хватит вручную?).

> более качественная графика
Не более качественная, чем на любом другом языке программирования.

> какой там охуеный графон в 64К
Практически все даже не на Си - на крестах! И даже 4К многие на Си.

> Сколько времени уйдет чтобы дойти до уровня UE4?
Обоснование: пока пишешь - поддерживаемое железо уйдет в небытие, и ты будешь начинать с нуля снова и снова.

>>1083491
Ты прошивку-то реверсить пробовал? Чего гадать, если можно взять дамп и посмотреть на код USB-бутлоадера? Только лучше именно дамп, чтобы не ебаться с распаковкой.


Аноним 29/10/17 Вск 02:05:28  1083542
ida huida.JPG (55Кб, 600x374)
>>1083514
Дамп=прошивка+настройки в хвосте.
Какой бы фс/сжатием эта прошивка не пользовалась, binwalk определить не может.
>Ты прошивку-то реверсить пробовал?
> IDA особенно не помогает
Читай внимательнее.
Не знаю что я делаю не так, но читаемого кода очень мало. в основном всё текстовые строки без кросс отсылок. Единственное где вообще получилось найти касающийся USB_isp и crc кусок - в прошивке под другой процессор tsumv29. Алгоритм проверки там такой же, ибо файлом от 29 можно окирпичить 59. появилась зацепка, строка "golden crc". Но как я понял это как раз и есть механизм записи контрольной суммы файла в сам файл.
Аноним 29/10/17 Вск 04:26:31  1083558
>>1083542
> Дамп=прошивка+настройки в хвосте.
Ну кто-то же ее читает и распаковывает!

> Какой бы фс/сжатием эта прошивка не пользовалась, binwalk определить не может.
Ну вот я сходу нашел там кусок, упакованный дефлейтом https://ideone.com/Uatl3I и содержащий строки:

> Download Buffer Addr: 0x%08lx\n
> Download Buffer Size: 0x%08lx\n
> Error> File size error
> Copying image from USB to DRAM
> Error> CRC32 Integrity Check failed !!
> CRC32 Integrity Check pass !!

а также весьма интересное:
> ChecksumErrOrBCHParityErr
(про BCH спроси англовики, если не сталкивался), а также:
> LzmaStatus
так что LZMA там тоже есть. А по 0x78e8 в распакованном куске видно литералы для zlib.inflate.

> но читаемого кода очень мало. в основном всё текстовые строки без кросс отсылок
Есть даташит хотя бы на семейство чипа? Там точно мипсы? (Хотя вроде как регистры репортит вполне себе мипсовые). Код вообще на исполняемый не похож, куда ни ткнись.
Аноним 29/10/17 Вск 04:30:20  1083560
>>1083558
> по 0x78e8 в распакованном куске
В самом файле прошивки, прошу прощения.
Аноним 29/10/17 Вск 05:11:08  1083564
>>1083558
Еще попались:
> Wrong hash key
> Wrong Chip ID
> Auth OK
> Auth NG
Аноним 29/10/17 Вск 16:21:17  1083770
Ск.JPG (22Кб, 992x90)
Сок.JPG (27Кб, 940x108)
>>1083558
>Datasheet..MIPS
Даташита нет. Даже то что это mstar чип я выяснил по уликам в коде и uart инфе. это вполне может быть не mips. Это скорее догадка. Из инфы существует схема и пинаут.
>Ну кто-то же ее читает и распаковывает!
Я к тому что на флеше лежит точная копия файла прошивки без изменений. если и есть фс/сжатие, то код ответственный за распаковку должен быть виден, а у фс должна быть обнаружимая сигнатура/

Потыкал файл свопом с разными настройками, получил mysql compresed data и криптопарашу. Заодно binwalk после свопа начал определять код как Arm. РАзный своп даёт немного больше читаемого кода.
Аноним 29/10/17 Вск 18:11:18  1083823
>>1083770
> это вполне может быть не mips
Я тут погуглил еще, и нашелся мануал по сборке бутлоадера под это дело (по крайней мере одно имя файла со скриншота в бинарнике есть):
https://wenku.baidu.com/view/7faa4869a6c30c2258019e25.html
Если поискать по csdn, то найдутся и другие мануалы по сборке, все они настолько же ебнутые (colinux и т. д.) и все предлагают поставить mipsisa32-elf, что как бы намекает.

На pudn лежат исходники бутлоадера от более старой прошивки (по слову mstar ищутся), они в принципе помогли бы составить общее впечатление о прошивке в целом. Есть аккаунт? Мой стух. Если знаешь живой поисковик по облаку baidu вроде умершего wangpanhezi, можешь там поискать. Очень часто всплывают даташиты и инструменты для прошивки.
Аноним 29/10/17 Вск 21:48:11  1083960
А есть ли телеграм-конфа этого треда?
Аноним 29/10/17 Вск 21:52:33  1083963
>>1083960
Адекватные люди не пользуются говномессенджерами, которые привязаны к телефону. Вот если ты жаббер-конфу создашь, можно и набежать.
Аноним 29/10/17 Вск 22:03:04  1083966
>>1083963
> которые привязаны к телефону
> Подразумевая, что номер никому не виден
Аноним 29/10/17 Вск 22:14:20  1083971
>>1083966
>подразумевая, что номера хранит база
Аноним 29/10/17 Вск 22:16:09  1083972
image.png (57Кб, 250x200)
Создание конфы по этому треду в Telegram Messanger. Если создавать, то я думаю не паблик-конфу сперва. Или есть еще варианты?
Аноним 29/10/17 Вск 22:19:27  1083974
>>1083971
Можно сразу IRC-канал захуярить, лол.
Аноним 29/10/17 Вск 22:47:40  1083982
>>1083972
Алсо, нужно хотя бы 5-15 желающих людей поднять такую конференцию. Если такое число наберется, то можно будет создавать. Желающие решившие поддержать идею — напишите свои юзернеймы в ответ.
Аноним 30/10/17 Пнд 01:16:03  1084057
>>1083982
>15 желающих людей поднять такую конференцию
хз, зачем это. сидеть там и ололокать? задрачивать самообразование можно и в оффлайне, а для пары вопросов в сутки и тредика хватит
Аноним 30/10/17 Пнд 02:16:29  1084080
>>1084057
Двачую.
Аноним 30/10/17 Пнд 04:28:05  1084109
>>1015083 (OP)
> Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.
Ну ок, сюда так сюда.

Что такого ОС делает с дисками, что с ними потом нельзя работать через int 13h?
INT 13h AH=00h: Reset Disk Drive не помогает.

Переход из защищенного в реальный режим делаю корректно.
Аноним 30/10/17 Пнд 08:48:09  1084136
Есть прога, шифрующая бд blowfishем, в зашифрованном виде пароль остается в файле "ini". Можно как-то дизассемблированием достать пароль?
Аноним 30/10/17 Пнд 08:53:10  1084137
>>1084136
Хуй знает, бинарник выложи.
Аноним 30/10/17 Пнд 15:23:54  1084271
>>1084137
https://drive.google.com/open?id=0B5YHle7vjDgVd0NHMkpDRmtwS0E
Аноним 30/10/17 Пнд 18:15:50  1084397
>>1083972
>Создание конфы по этому треду в Telegram Messanger.
Нахуй не нужно, инфа там тонет, общаться там всё равно что пердеть в вечность. А эти треды заархивируем и приложим к первому, так что даже через века ньюфани будут читать наш FAQ и восхищаться нашими знаниями.
>>1084109
>Что такого ОС делает с дисками
Какая ОС, мы должны угадать?
Нихрена в этом не понимаю, считаю, что ОС тебя озалупила в режим виртуального V86 и подкладывает тебе эмулированных хуйцов. И весь твой реальный режим эмулирован, и int 13h, даже небо, даже деление на ноль.
Аноним 30/10/17 Пнд 18:46:20  1084417
123.png (22Кб, 676x364)
Экзешник упакован upx'ом. Стал гуглить, как распаковать. Там с помощью ollydbg надо найти OEP, но что-то у меня уже на этом шаге косяк.
>>1084271-кун
Аноним 30/10/17 Пнд 19:08:22  1084426
>>1084417
> Аноним 30/10/17 Пнд 08:46:20  №1084417
>
Читай статьи Нарвахи, он там подробно обьясняет как работать с этим отладчиком.
Аноним 30/10/17 Пнд 19:41:57  1084459
>>1083770
> это вполне может быть не mips
Вот исходник того, что было пожато дефлейтом:
https://github.com/caxyu/mstar6a918/tree/master/code/MBoot_Napoli_TVOS/sboot/src/macaw12
Судя по синтаксису инструкций, строкам в бинарнике и названиям файлов, это какое-то отродье OpenRISC на асике, но мой дизасм его не жрет, да и статистика показывает что-то больше похожее на 16-битные опкоды. Возможно, опкоды изменены. Кроме того, в дереве исходников овердохуя всяких интересных вещей, вплоть до загрузчика на базе 8051 - ребята там развлекались по-полной.

>>1084417
> Стал гуглить, как распаковать
Внезапно upx -d filename (понадобится UPX 2.x, его несложно нагуглить или собрать из исходников). Алсо, там пароль ведь для открытия настроек, а не для файла. Или я что-то делаю неправильно? Алсо, там два exe, чем они отличаются?
Аноним 30/10/17 Пнд 20:01:06  1084477
>>1084459
Кажется, экзешник HT не нужен, бд открывались с другого. Вот еще одна такая же база расшифрованная:
https://drive.google.com/open?id=0B5YHle7vjDgVU1Z1bC1yUDZYRUU

Там в password.txt я пароль расшифрованный указал.
Аноним 30/10/17 Пнд 20:38:09  1084510
>>1084397
>Какая ОС, мы должны угадать?
Ленсук.
> Нихрена в этом не понимаю, считаю, что ОС тебя озалупила в режим виртуального V86 и подкладывает тебе эмулированных хуйцов.
Нет, я с помощью kexec загружаю свой бинарь, ему ленсук передаёт всё управление и сам завершается полностью.
Аноним 31/10/17 Втр 01:42:19  1084749
>>1084459
Кстати, по этой ерунде в Password никак его не достать?
Аноним 31/10/17 Втр 02:38:53  1084771
Треда конкретно по микроконтролерам не нашел, поэтому спрошу здесь. В универе препод предложил запрограмировать микроконтролер avr для регулятора напряжения асинхронного двигателя. На чем лучше писать, си или асм, мой опыт программирования это хелловорды на джаве и вебговно. С чего вообще начать изучение этой темы, и какой ресурс для этого лучше всего? Сайтов и книг много, где-то советуют асм, где-то C.
Аноним 31/10/17 Втр 03:51:47  1084791
>>1084771
С асма начинать проще, и асм все равно нужен будет рано или поздно, но если у тебя одноразовая учебная задача, можно и на си склепать, не погружаясь.
Аноним 31/10/17 Втр 04:56:01  1084800
>>1084749
В инишнике по первой ссылке Password="D3SPQOQsJbNZs8YxX3Nv6DJdscaG25jo" расшифровывается в "1202201320072010" (пасс для доступа к настройкам). Password2="SFTS7fJAJ-PTPBPRk6RYmg14db4eN-S7bJNMV2sYtFF6dl8sXceoLE" расшифровывается в "true D3SPQOQsJbNZs8YxX3Nv6DJdscaG25jo" (как видно, вторая строки та же, что и в Password - нахуй так было делать, я не знаю). То есть никаких паролей к базам в ini не лежит.

Шифрование Blowfish, big-endian, CFB c IV="Init Vector" (IV забивается нулями, потом каждый байт строки с индексом index ксорится с байтом по iv[index % 8]), в конце шифротекста обычный паддинг. Для ini-файла строки шифруются с паролем "#$%^dfjhER%khuw" и потом кодируются base64 с кастомным алфавитом "+-0..9A..Za..z".

В принципе можно написать банальный брут по известному открытому тексту.
Если еще что-то нужно - пиши, базу иды пока не удаляю.
Аноним 31/10/17 Втр 06:34:21  1084815
>>1084800
Как ты вообще это расшифровываешь?
Аноним 31/10/17 Втр 19:32:48  1085097
>>1084815
Ну охуеть. А второй абзац я для кого писал?
Аноним 31/10/17 Втр 22:36:15  1085205
>>1084815
Удваиваю вопрос.
Аноним 31/10/17 Втр 23:41:23  1085254
>>1085097
Не очень понятно, через что / какими инструментами прогнать строчку в Password, чтобы получилось это 1202201320072010?
Аноним 01/11/17 Срд 00:42:01  1085277
>>1085254
Охуеваю еще больше. Мы тут в треде про реверсинг или где? Может, мы еще и не программисты? Бери любимый язык программирования и пиши код (у меня были Python 3 + родной base64 с предварительной трансляцией в стандартный алфавит + blowfish из pip).
Аноним 09/11/17 Чтв 20:20:28  1089524
>>1015083 (OP)
>
Совсем запутался с адресацией в двубайтовом массиве.
В di нужен адрес на элемент в массиве.
Изначально в di - адрес на первый элемент.
lea di, array
затем:
1) cmp word ptr arr[bx], word ptr di //сравниваю два байта из массива по смещению bx со значением по адресу di(но тут я походу проебался где-то)
2) lea di, arr[bx] - вот тут тоже.
Аноним 09/11/17 Чтв 20:43:54  1089539
>>1089524
>1) cmp word ptr arr[bx], word ptr di //сравниваю два байта из массива по смещению bx со значением по адресу di(но тут я походу проебался где-то)
>
сделал так:
mov ax, word ptr [di]
cmp word ptr arr[bx], ax
И заработало. Есть вариант лучше? Без задействования регистров в одну строку?

Аноним 09/11/17 Чтв 20:47:35  1089542
>>1089524
> cmp word ptr arr[bx], word ptr di
Так нельзя. В инструкциях x86 только один операнд может обращаться к памяти.
> 2) lea di, arr[bx] - вот тут тоже
Тут все норм (кроме ебучего нелогичного синтаксиса адресации). Если не компилируется, попробуй lea di,[arr+bx]
Аноним 09/11/17 Чтв 20:57:52  1089549
>>1089542
>кроме ебучего нелогичного синтаксиса

А что конкретно?
Так надо было?
lea di, array

Идейно просто было так:
в di и si получить адреса, и их обменять. но потом я понял что проебался ибо адреса в памяти менять то нельзя.

Все вроде работает. Доделал.

>>1089542
>Так нельзя. В инструкциях x86 только один операнд может обращаться к памяти.
>
Понял, спасибо
Аноним 09/11/17 Чтв 21:01:36  1089552
>>1089549
> А что конкретно?
Вот в фасме логичный синтаксис - есть обращение к памяти (или его имитация в lea) - вся хуйня всегда в квадратных скобках, снаружи только тип. Нет обращения - просто втыкаешь имя переменной. И никаких offset, addr, ptr и прочей хуйни. Просто:
mov ax,[di]
cmp [bx],ax
и
lea di,[arr+bx]
Програмный реверс мехатроники и прочей мелкой поебени, которую не предполагается подключать к компьютеру вообще никогда Аноним 11/11/17 Суб 15:27:43  1090307
Сап реверсач. Не так давно в мои руки попала одна хуйнюшка - моторчик из здоровенного напольного МФУ - которую я был бы не прочь реверснуть. Сразу скажу, аппаратный реверс обсуждать не буду, всё же это нерелейтед, и с таким нужно идти в /ra/. Предположим, что его я уже сделал, ну то есть разобрался, какой пин коннектора за что отвечает. Предположим, также, что я создал подходящий переходник с какого-нибудь COM-порта.
Что делать дальше? Как реверсить систему комманд мотора, хотя, я бы даже сказал, сервопривода, так как эта штука имеет свою собственную печатную плату, и при этом предполагается, что она будет подключаться к материнской плате МФУ. Да и сам внешний вид коннектора намекает на то, что там больше пинов, чем просто плюс и минус, то есть какие-то данные между материнкой и платой мотора передаются.
Собственно, способы подобного реверса имеются? Спецификации мотора, положим, найти я могу, но то не интересно.
Аноним 11/11/17 Суб 17:08:07  1090336
>>1090307
https://www.saleae.com
Аноним 11/11/17 Суб 17:12:10  1090338
>>1090307
>Предположим, что его я уже сделал, ну то есть разобрался, какой пин коннектора за что отвечает.
А больше может ничего и не нужно. Например, простейшие контроллеры двигателей управляются без команд как таковых. Один провод направление, а по фронту сигнала на другом проводе двигатель делает шаг.
В любом случае начинать необходимо с поиска схемы, если схему найти не удается то искать документацию на отдельные микросхемы. Иначе будет неизвестно даже что там за микроконтроллер/процессор. Если устройство в рабочем состоянии, то можно посмотреть осциллографом сигналы на этом разъеме.
Аноним 11/11/17 Суб 17:13:29  1090339
>>1090336
Только перед тем как тыкать логический анализатор, стоит узнать хотя бы уровни сигналов.
Аноним 24/11/17 Птн 22:04:57  1097380
Тредик, не умирай. Бамп.
Аноним 25/11/17 Суб 20:04:00  1097710
Есть несколько модулей ядра .ko и функция в одном из них. Как найти все вызовы этой функции из каких-либо модулей?
Аноним # OP  25/11/17 Суб 20:13:02  1097724
>>1097380
Хули так рано бампать? Я бампну по окончании месяца.
Аноним 26/11/17 Вск 17:27:26  1098183
>>1015083 (OP)
Необходимо перекрыть прерывание таймера. И сделать установку и удаление обработчика используя аргументы командной строки.
И использовать мультиплексорное прерывание.

Я правильно понимаю, что помимо перекрытого обработчика таймера, мне еще придется перекрывать обработчик мультиплексорного прерывания??

Вот я не могу понять:
mov ah,*
mov al,0 ; функция проверки установлен ли обработчик
int 2FH

Что в регистр ah пихать то.
Аноним 26/11/17 Вск 20:07:47  1098300
>>1098183
Вроде разобрался.
Аноним 26/11/17 Вск 21:54:04  1098394
2017-11-26214205.png (5Кб, 271x222)
15115141799090.jpg (110Кб, 716x834)
Даже не знаю, где спрашивать. Хочу сделать ассемблерную вставку в сишный код, т.к. нужно ловить ногодрыг от ведомого устроства, что стандартными методами, внезапно, оказалось нетривиальной задачей я еще молчу про синхронизацию и выдержку интервала времени по RTC-таймеру, которые компилятор заботливо "оптимизирует", из-за чего после каждой сборки на ножки вылазит какая-то хуйня вместо расчетного интервала, ибо компилятор GCC и используется AT&T-подобный синтаксис. Что должно быть:
Загрузка в регистр адреса, по которому располагается регистр для ногодрыга как забить сюда PERIPH_BASE+GPIOA_BASE+GPIO_ODR в душе не ебу, пришлось клеить так
Загрузка в другие два регистра собственно значений для ногодрыга конкретной ногой
Запись значения из регистра по адресу.

Как это правильно оформить?
Аноним 26/11/17 Вск 22:24:08  1098410
>>1098394
Судя по названиям регистров это STM32. С этим тебе скорее в /ra/.
>нужно ловить ногодрыг от ведомого устроства
Так делается только в простейшем случае. Для вариантов чуть посложнее в таймерах есть модуль сравнения/захвата. В совсем сложных случаях - пересылка ПДП из GPIO в память.

>которые компилятор заботливо "оптимизирует"
Это потому что Си не знаешь. Для того чтобы компилятор не "выкидывал" код, нужно использовать volatile.
Аноним 26/11/17 Вск 22:53:08  1098432
hvCV6KjTjoU.jpg (98Кб, 960x960)
>>1098410
Простейший пока потому, что лепить сразу в кучу все на прерывания займёт достаточно много времени - хочу для начала получить рабочую модель "на пальцах", а уж потом заняться её перетрушиванием. Инты и пдп довольно простые вещи, но работоспособность вперёд.
>Это потому что Си не знаешь.
Есть такое, да. Я в железо хочу, а не в Си, поэтому в душе не ебу, как делать те или иные вещи, которые опытному сишнику на раз-два.
Честно говоря - в душе ебал этот Си с его кучей несовместимых между собой компиляторов, каждую конкретную хуйню приходится по часу шарить в гугле, нет бы предоставить тот же ассемблер, но с возможностью не грузиться вопросами "R2 и R3 трогать нельзя, R0 щас заюзаем, а что там R3? звуки шуршания листингом в поисках последнего использования регистра, каждый проект приходится править, чтоб он начал собираться gcc, а от эвоного инлайн асма с синтаксисом AT&T но при этом типичным расположением операндов я вообще в осадок выпал - это при том, что собсно AS из гнутого тулчейна жрет вполне себе человеческий код безо всяких процентов и амперсандов с кавычками и двоеточиями.
Аноним 27/11/17 Пнд 00:50:39  1098499
>>1098432
Из твоих портянок нихера не понятно, что же это у тебя за задача такая нетривиальная, но я если она связана с портами и временем, я бы постарался сделать строго на таймерах, тем более, что в stm они прекрасные. Ещё можно использовать DMA, бывает задорно получается.

Ещё замечу, что за десять лет дрочения контроллеров у меня не было ни одного случая, чтобы задачу io нельзя было нормально решить на С.
Аноним 27/11/17 Пнд 01:37:59  1098514
2017-11-25180704.png (75Кб, 1962x720)
>>1098499
В конкретном случае я просто пытался проверить, насколько резво стмка умеет дрыгать ногами. Вменяемого результата добился только когда выкинул к ебеням большую часть писанины, оставив только ногодрыг.
Чуть более глобально - ловить ACK от геймпада с выдержкой задержки перед следующим пакетом, 5й канал. В итоге вкуривал, какие же задержки реально выходят.
А, хер с ним. В итоге проц ещё и дрыгает ногой там, где в коде этого вообще не подразумевается, даже полное стирание пару раз прогнал. Обидно, конечно, что нельзя просто так взять и написать в линеечку код, который просто возьмёт и заработает, придётся въезжать на прерываниях.
Аноним 30/11/17 Чтв 08:51:29  1100402
что можно прочитать покороче про директивы ассемблера, ну то говно с точкой. писать умею, инструкции брать ясно где, секции понятно что - мне бы собрать в кучу это всё.

ещё я не очень понял такую штуку, чем ассемблеры отличаются? я так понял, спецификация по процессору определяет и его ассемблер, тогда почему получился синтаксис ГАС? причём я так понял, под другие архитектуры там всё как у всех.
Аноним 30/11/17 Чтв 09:00:20  1100404
ну и наверно директивы, это главное чем отличаются ассемблеры, в этом плане мне интересен такой момент: как писать портируемые смещения в структурах - какие-нибудь алиасы или что-то такое.
Аноним 30/11/17 Чтв 12:17:45  1100433
>>1043476
>Проигрывать можно бесконечно :^)
Ну, то что такой лузер как ты бесконечно проигрывает - это норма
Аноним 01/12/17 Птн 00:25:54  1100787
>>1059225
http://codenet.ru/progr/asm/tasm/ Очень сурово.
Тут же и про директивы есть (кто-то в начале тренда спрашивал).
Аноним 01/12/17 Птн 15:56:04  1101025
>>1015083 (OP)
Какие можно взять компиляторы для ARM и MIPS под винду, чтобы удобненько проходить книгу Юричева?
Аноним 01/12/17 Птн 20:45:17  1101181
>>1101025
Виртуалбокс с линуксами возьми. Хотя можно и просто шланг для винды (clang --target=mips -S -с foo.c тебе будет вполне достаточно, либы и хедеры не нужны).
Аноним 02/12/17 Суб 00:09:04  1101330
>>1101181
>clang --target=mips -S -с foo.c
Почему после ввода clang main.c --target=armv7 возникает ошибка fatal error 'stdio.h' file not found?
Аноним 02/12/17 Суб 06:31:13  1101427
>>1101330
Потому что у тебя нет хедеров для ARM, очевидно же. Я думал, тебе не компилировать, а только дизасм смотреть. В теории, можешь спиздить хедеры из любой линуксовой репы https://releases.linaro.org/components/toolchain/binaries/5.2-2015.11-2/arm-eabi/sysroot-linaro-newlib-gcc5.2-2015.11-2-arm-eabi.tar.xz, положить куда-нибудь и сказать -isysrootдиректория, но оно все равно не слинкуется, нужны остатки тулчейна. Ну можешь тот же линаро скачать так-то.
Аноним 07/12/17 Чтв 23:47:19  1104807
Ребят, подскажите, в чем прикол. Компилирую все в экзешник, под стек отвел 100h.
Я в секции .data объявляю строку, например string db 'string $'.
При компиляции lea dx,string , тасм превращает мое lea в mov dx, offset string (экономит байт). Собстно вопрос: почему в отладчике я получаю mov dx,[0000] ? Тасм не учитывает, что при запуске exe в [0000] будет не string, а PSP? Что исправить? Я не понимаю, что делаю не так
Аноним 08/12/17 Птн 20:51:41  1105160
>>1104807
Потому что сегмент загрузи. Я хуй знаю, как в ваших тасмах, достаточно ли там assume или нужно явно сказать mov ds,DATA. А если хочешь, чтобы все в одном сегменте валялось, зделой .com, model tiny, вся хуйня.
Аноним 09/12/17 Суб 00:40:23  1105249
Добрый день/вечер/ночь, господа.

Хочу вкатиться, открываю beginners.re из шапки, а там прямо в первой главе, как говорится, с места в карьер, и где-то к 50й странице уже становится тяжко и непонятно. Так и должно быть, или мне лучше почитать дополнительную литературу/статьи?
Аноним 09/12/17 Суб 00:43:21  1105251
>>1105249
Ах да, навыки в программировании C (начальный уровень), а так же C# присутствуют.
Аноним 10/12/17 Вск 00:22:21  1105678
>>1105249
>beginners.re
Как я понял, beginners.re это сайт описывающий технику обратной разработки, предполагая, что изучающий уже знаком с инструментарием языка ассемблера и его особенностями. Посмотри сайты ниже в ОП-посте. Ну или сам погугли какой-нибудь "ASM для чайников". Поищи на вики статьи про такие понятия, как "сегментная адресация", "регистры процессора" и прочее.
Аноним 10/12/17 Вск 10:31:19  1105748
>>1084426
>>1015083 (OP)
ОП, ты незаслуженно забываешь в шапку добавлять Нарваху. Как практический курс по дебагеру для новичков оч удобно и наглядно.
https://mega.nz/#!Bc9VVAYC!Vk6CFlW6VIoskLNgDKXbsL6FacDQeOKe6LX92wNicKY
Аноним 10/12/17 Вск 20:09:09  1105980
>>1105748
А курс кто-нибудь перепилил на x64dbg и современные ОС, или там по-прежнему XP и первая олька?
Аноним 10/12/17 Вск 21:33:28  1106041
>>1105980
дык ольки под 64 и нет. Это перевод в виде Chm внутри и олька и плагины и CrackMe, на ехелабе подобрал когда то.
А так как курс под начинающих - смысл перепиливать - с этим разберется как есть - дальше уже сам материал найдет, если будет интересно.
Аноним 10/12/17 Вск 21:34:09  1106044
>>1105980
п.с. вроде когда пробегался - всё под вин 7/8/10 более менее работало без проблем.
Аноним # OP  11/12/17 Пнд 22:23:29  1106395
>>1105748
>ОП, ты незаслуженно забываешь в шапку добавлять Нарваху
Если бы я знал о его существовании... Как бы намекаю
>>1015083 (OP)
>Шапка треда в процессе пополнения, пока так.
В следующий раз добавлю.
Бессменный ОП этого треда
Аноним 12/12/17 Втр 09:35:02  1106526
Помогите вспомнить.

В какой-то старой книге или статье Криса Касперски было упоминание про книгу инженера то ли Интел, то ли другой компании.

Описание книги было примерно такое: "корпорация выдавливает из инженера все соки, а затем выкидывает на помойку".
Аноним 12/12/17 Втр 09:51:35  1106531
1004459081.jpg (10Кб, 200x271)
1005895972.jpg (45Кб, 527x700)
>>1106526
Еле нагуглил.
Аноним 13/12/17 Срд 14:11:49  1106954
CheckStatus.png (75Кб, 1080x1350)
CheckAuthKey.png (114Кб, 828x1544)
Двач, не поможешь ньюфагу?
Недавно заинтересовался реверс-инжинирингом и в качестве первой жертвы выбрал известного в узких кругах бота для игры.
На первый взгляд все было очень просто, и даже с околонулевыми знаниями я вскоре смог запустить основное окно несмотря на неправильный ключ (который должен сверяться на сервере бота). Однако, к игровым серверам оно по-прежнему отказывалось подключаться.
Оказалось, что сначала проверяется статус нужного сервера (пик1), а в случае его доступности активируется функция проверки некоего ключа авторизации (пик2), которая уже выше моего понимания. Интересно, что если ссылку оттуда вставить в браузер и изменять переменные, то значение ключа будет меняться только при редактировании v1, которая скорее всего является айпишником сервера. Возникает вопрос, зачем тогда вообще нужен правильный ключ.
Еще больше вопросов вызывает переменная "HuyZhaet". Кроме прикрепленных скринов она встречается несколько десятков раз в различных функциях, и всегда окружена подобными конструкциями.
Подскажите хоть примерно что дальше делать, у меня даже предположений нет.

Ссылка на мои изыскания, если кому интересно: http://rgho.st/private/8p5MxgZnR/633d5f0ad2d83d1afa68d7bbdf4c1afe
Ссылка на установщик с оффсайта: http://rakbot.ru/download
Аноним 13/12/17 Срд 21:37:23  1107158
>>1106954
>Еще больше вопросов вызывает переменная "HuyZhaet". Кроме прикрепленных скринов она встречается несколько десятков раз в различных функциях, и всегда окружена подобными конструкциями.
Это вызов виртуальной функции в C++. Судя по тому, что этой переменной ничего не присваивается, она глобальная. Смотри, где создаётся (легко найти по конструкции вида mov global_var, eax) и восстанавливай виртуальную таблицу. Там и должна быть интересующая тебя функция проверки ключа.
>если ссылку оттуда вставить в браузер и изменять переменные, то значение ключа будет меняться только при редактировании v1, которая скорее всего является айпишником сервера
Нет. Там ясно видно, что это функция типа sprintf и первым параметром передаётся auth_in в создаваемом url. Подозреваю, что это берётся из первого запроса. Запусти Wireshark и посмотри.
Аноним 14/12/17 Чтв 23:18:09  1107685
>>1105249
Смотри сюда:
http://octopuslabs.io/legend/blog/sample-page.html
https://tuts4you.com/e107_plugins/download/download.php?action=view&id=2876
Самый простой способ вкатиться. По второй ссылке в первых уроках аффтар учит азам АСМа.
Аноним 15/12/17 Птн 07:10:14  1107816
>>1107685
Я в asm вкатывался
Калашников - Ассемблер - это просто (морально устарело, но на XP и в DOSBox всё работает, для наглядного использования годно)
и
http://asmworld.ru/uchebnik/
Аноним 15/12/17 Птн 07:11:11  1107817
>>1107685
так это же Нарваха, выложенный чуть выше.
Аноним 15/12/17 Птн 07:32:41  1107820
>>1107817
Нет, не он. Посмотри внимательнее.
Аноним 15/12/17 Птн 15:02:09  1107945
анончики, насколько быстро можно вкатиться в байтоебство, чтобы хотя бы суметь проанализировать простенький пакет в вайршарке. много ли вы получаете профита от асма, если не используете его в работе. Всмысле стоит ли его изучать как хобби?
Аноним 15/12/17 Птн 15:06:50  1107946
>>1107945

Зависит от ассемблера. В целом ассемблер как отдельные команды - простой.

> много ли вы получаете профита от асма, если не используете его в работе. Всмысле стоит ли его изучать как хобби?

Можно например оптимизировать функции на других языках, глядя в ассемблерный выхлоп:

https://godbolt.org/
Аноним 15/12/17 Птн 15:16:26  1107955
>>1107946
интересно, и часто такая оптимизация используется?
Аноним 15/12/17 Птн 15:23:55  1107957
>>1015083 (OP)
OP, ЯД с Крисом - твой? если да - предлагаю заменить Образ мышления IDA, тут вот оригинальный исходный DOC для издатесльства лежит, только некоторых иллюстраций не хватает, зато все листинги как надо. _https://rutracker.org/forum/viewtopic.php?t=272818
Аноним # OP  15/12/17 Птн 20:53:57  1108104
>>1107957
Увы, не мой, добавлю рядом.
Аноним 22/12/17 Птн 21:09:49  1111184
Ребят, а расскажите о перспективах заработка и сложности найти работу
Аноним 23/12/17 Суб 13:20:41  1111414
>>1111184
Перспектив никаких, работать негде. Реверсеры требуются разве что в АВ компаниях, всё остальное нелегально.
Аноним 23/12/17 Суб 13:54:13  1111429
>>1111414
А что по асм?
Аноним 23/12/17 Суб 16:59:02  1111487
>>1111429
Выбор чуть больше, но суть та же.
Аноним 24/12/17 Вск 11:22:44  1111700
>>1015358
Дел, ты просто не умеешь, вот и всё. Как я, например, не умею в патчи бинарников. Короче, всё от навыков зависит.
Аноним 24/12/17 Вск 11:27:11  1111701
>>1015370
Вот опять, хипстарок защищает своё глючное поделие только потому что умеет в него. Нода хороша только для сборки фронтенда -- и то, лишь потому, что можно простить ей все глюки зависимостей сотен пакетов на локальной машине.
Аноним 24/12/17 Вск 11:27:54  1111702
>>1015370
Боль тебе будет нести всё, что ты не умеешь, лошара
Аноним 24/12/17 Вск 12:19:24  1111721
9407.jpg (76Кб, 640x479)
Помню, в 2001 работал (начинающим тогда юникс админом) в конторе, которая пилила, помимо прочего, полулегальный рекламный малварь -- после установки прога заменяла рекламу во всех браузерах на свою и даже корректировала поисковую выдачу. Сейчас уже не у кого спросить, как они это делали, а интересно: каким образом можно перехватить ответ от сервера в браузер (при том, ssl) и заменить в нём пару параметров?
Аноним 24/12/17 Вск 13:02:08  1111728
>>1111721
>каким образом можно перехватить ответ от сервера в браузер
Самый простой способ - прокси-сервер. Скорее всего, именно это и было.
>при том, ssl
>в 2001
Нунизнаю. Но это тоже решается очень просто своим корневым сертификатом в системе и того же прокси-сервера.
Аноним 28/12/17 Чтв 18:56:41  1113533
Товарищи аноны, читаю "Архитектура компьютера" Э. Таненбаума, и что-то я не совсем понимаю тему про "Упорядочение байтов", в чем, собственно профиты систем с обратным порядком следования и/или систем с прямым порядком?
Аноним 29/12/17 Птн 02:23:26  1113672
>>1113533
Чтобы корпоративный клиент не мигрировал с PDP-7 на IBM S/360, а купил PDP-11.
Аноним 29/12/17 Птн 03:14:47  1113683
>>1113672
То есть это делается просто для того, чтобы существовало различие между архитектурами?
Аноним 29/12/17 Птн 03:47:21  1113687
>>1113683
Как и разделители каталогов и символы перевода строки.
Google, фатальный недостаток вот это вот всё.
Аноним 29/12/17 Птн 10:01:58  1113742
>>1113533
https://softwareengineering.stackexchange.com/questions/95556/what-is-the-advantage-of-little-endian-format
Тлдр:
На ранних pipelined (хз что это) процессорах little-endian улучшал производительность. Big-endian удобочитаем человеками.
В другом месте пишут что эти форматы ни для чего не нужны. Наверное сейчас это наследие 60х
Аноним 29/12/17 Птн 10:27:51  1113747
>>1113742
>pipelined (хз что это)
Вычислительный конвейер. Как пример, пока работает АЛУ, можно параллельно считывать следующую инструкцию из памяти. Я не понимаю как порядок байт может улучшить производительность.

>>1113533
Какой-то порядок байт все равно должен быть. Оба варианта практически равноценны, какой выбрать? Это как порядок бит при передаче по последовательному интерфейсу.