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


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

Check this out!


[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 501 | 42 | 199
Назад Вниз Каталог Обновить

ASM & Reverse engineering Имя 25/03/17 Суб 14:27:29  960640  
В этом треде мы изучаем самый компактный и низкоуровневый язык Ассемблер и смежную с ним область: Реверс-инженеринга (RE).

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

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

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

Сайты по 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/

Список книг по RE:
https://www.goodreads.com/shelf/show/reverse-engineering

Все книги и статьи Криса Касперски (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/

Пополнения и исправления приветствуются.
Аноним 25/03/17 Суб 15:11:06  960670
Я конечно понимаю, что попрошайки идут нахуй и т.д., в общий тред написал, но думаю там не помогут.
Препод задал написать на ассемблере 2 проги: одна складывает двоичные числа размером 1 байт без учёта знака, другая - с. Либо всё это в одном, я хз. Может помочь кто-нить?
Аноним 25/03/17 Суб 15:20:10  960678
>>960670
А чому сам не можешь? Ведь вы всего лишь учитесь. Сиди, пробуй, эксперементируй. На время учёбы в универе ты должен самостоятельно делать подобные вещи, ибо из тебя даже червя-пидора не выйдет
Аноним 25/03/17 Суб 15:52:01  960694
В инете полазил, нашёл оба варианта (там разница судя по всему только в sing и unsign, более менее понятно всё), но компилятор ругается на команду movzx, не подскажете, что с этим делать?
>>960670 - анон
Аноним 25/03/17 Суб 15:53:01  960696
>>960694
sign*
Аноним 25/03/17 Суб 16:07:11  960699
№1 https://arhivach.org/thread/223223/
Аноним 25/03/17 Суб 16:16:20  960713
>>960640 (OP)
Спрошу тут может кто знает как в VS2017 С++ проект скомпилить в исполняемый файл с одной секцией. в 2013 получалось в 2017 всегда создает .rdata и .text
Аноним 25/03/17 Суб 16:49:05  960746
>>960713
У меня вот такой закомментированный код есть.
//#pragma comment(linker, "/SECTION:.text,EWR")
//#pragma comment(linker, "/MERGE:.data=.text")
//#pragma comment(linker, "/MERGE:.rdata=.text")
А как ты делал в VS2013?
>>960694
Ты хотя бы ошибку напиши и компилятор укажи.
Аноним 25/03/17 Суб 16:55:38  960755
>>960713
>>960746
А зачем вам это нужно? Какой с этого профит?
мимо-сишник
Аноним 25/03/17 Суб 17:02:44  960763
>>960640 (OP)
В шапке отсутствуют https://beginners.re/ (да Юричев есть, но стоило бы сделать акцент) и http://wiki.xentax.com/index.php/DGTEFF что несколько странно.
Аноним 25/03/17 Суб 17:07:54  960772
>>960763
Спасибо. Не знал про эту книгу.
Аноним 25/03/17 Суб 17:08:09  960773
>>960755
Может он вирус пишет и хочет, чтобы всё было в одной секции.
Ещё один сишник
Аноним 25/03/17 Суб 17:13:49  960780
>>960746
в vs2013 если не использовать внешних библиотек и указать точку входа получалось + оптимизация на минамальный размер, интересно почему .rdata всегда вставляется перед .text если использовать #pragma comment(linker, "/MERGE:.rdata=.text") и причем она генерится одинаковая для разного кода.
Аноним 25/03/17 Суб 17:16:57  960783
>>960780
А что линкер пишет? Попробую вечером, если до этого не разберешься.
Аноним 25/03/17 Суб 17:20:35  960786
>>960783
Я имею ввиду, они-то объединяются в одну, но данные секции вставляются перед .text, причем её можно просто удалить(.rdata) и работоспособность программы будет в норме. Мне интересно зачем vs2017 вставляет эту херню в каждый исполняемый файл.
Аноним 25/03/17 Суб 17:24:35  960791
>>960640 (OP)
Как вы думаете реально ли быть профессионалом в программировании(неважно на каком языке) не работая нигде и никогда, но имея образование. И какое больше направление подходит для людей который не хотят(или не могут) с этим иметь дело?
Аноним 25/03/17 Суб 17:34:05  960805
>>960786
>Мне интересно зачем vs2017 вставляет эту херню в каждый исполняемый файл.
Мб телеметрия?
Аноним 26/03/17 Вск 02:11:43  961080
>>960791
Реально если пишешь что-то нужное для себя хотябы. Образование в снг курам на смех.
Аноним 26/03/17 Вск 02:24:48  961087
>>961080
В смысле нужно или не нужное для себя? Просто заметил на собеседованиях неуважительное отношение когда узнавали, что не работал, а проекты мои личные. Ребята которые сидят на работе мнят себя спецами.
Аноним 26/03/17 Вск 10:14:59  961129
1. VEH потокобезопасен? Одновременно может быть только один вызов?
2. Когда сработало исключение PAGE_NOACCESS, что делать дальше? Как разрешить чтение/запись только одной инструкции? Дизассемблировать и смотреть, какие регистры участвуют и самому копировать необходимые данные?
3. Как действовать после брекпойнта (программа не под отладчиком, брекпойнты мои)? Как отладчик делает, когда останавливается на брекпойнте? Ведь один байт затёрт, нужно восстановить его и заново выполнить инструкцию. А после как устанавливают брекпойнт? Отладчик включает пошаговую трассировку и после одного шага устанавливает байт?
Аноним 26/03/17 Вск 17:57:18  961391
>>961129
1) Очень вряд ли.
2) Проверяешь тип исключения, возвращаешь родной доступ к странице, выставляешь TF в Eflags в сохраненном контексте, говоришь continue execution, получаешь исключение, проверяешь тип, восстаналвиваешь NO_ACCESS, ну ты понял (как вариант, можно ставить PAGE_GUARD вместо NO_ACCESS, тогда будет одним системным вызовом меньше). Если ты про совет из прошлого треда, то да, немного дизасма понадобится: табличка с типами инструкций (можно спиздить из опенсорсных движков) и разбор всяких SIB/ModRM/displacement (можно взять опенсорсный движок целиком).
3) Да. Алсо, есть хардварные точки останова, с ними жизнь проще.
Аноним 27/03/17 Пнд 12:54:45  961749
>>961391
1. Проверил, для каждого потока свой вызов. Поэтому не потокобезопасен.
2. Видимо, это самый простой способ. Неужели в отладчиках так же сделано? Ведь между тем, когда доступ разрешён и повторным исключением пройдёт много времени, хитро настроенный второй поток может успеть между этими событиями прочитать или запись данные и останется незамеченным. Тут нужен бы эмулятор.
>тогда будет одним системным вызовом меньше
Ты про то, что PAGE_GUARD сбрасывается? А то смотрю, что возвращает VirtualProtect, а этот бит уже сброшен.
>можно взять опенсорсный движок целиком
Взял дизассемблер от OllyDbg, а он XMM инструкций не понимает. Краем глаза посмотрел на x64dbg, так там враппер вокруг дизассемблера больше по размеру, чем сам дизассемблер. Надо от qemu ещё посмотреть.
Как и ожидал, после установки TF бита отладчик сам останавливается на следующей инструкции. Не очень удобно.
3. Слишком много мест, их не хватит.
Аноним 27/03/17 Пнд 14:58:10  961788
>>961749
В x64dbg capstone вроде. capstone жирный (там овердохуя таблиц для скорости), но весьма неплохой.
Аноним 27/03/17 Пнд 16:32:06  961863
>>961788
>В x64dbg capstone вроде.
Одуреть, это ты по памяти помнишь, какой дизассемблер в отладчике. Сам только вчера смотрел, но, тем не менее, не вспомнил бы названия. Меня отпугнуло то, что очень большой враппер был вокруг него, хотя и не смотрел, что там, думал, что заставить работать его будет трудно. А оказалось, что пользоваться им очень легко. И главное, он XMM понимает, чего мне не хватало.
Может подскажешь какой-нибудь эмулятор х86. Очень бы не хотелось писать самому, долго будет очередной велосипед делать. Нужен достаточно простой, но с установкой своих начальных значений регистров и некоторых обработчиков типа записи и чтения памяти. Как в плагине к ida x86 emulator.
Аноним 27/03/17 Пнд 17:16:07  961914
>>960640 (OP)
Антохи а как можно с дженерик говнокода на асме сделать специфический для моего процессора?
Аноним 27/03/17 Пнд 19:31:09  962001
>>961914
Написать компилятор.
Аноним 27/03/17 Пнд 21:31:04  962054
>>961863
Чего-то запутался уже с исключениями. Если, попав в VEH обработчик, взвести бит TF, то после выхода из него и возобновления работы программы будет исключение EXCEPTION_SINGLE_STEP. Но флаг остаётся взведённым? Потому что у меня никак не получается поймать это исключение. Как только управление передаётся в юзер спейс, опять будет это исключение? И так до STATUS_STACK_OVERFLOW.
Читаю про dr-регистры. Их-то можно поймать в VEH обработчике? Или надо отдельный процесс делать? Первая попытка не удачная.
Аноним 28/03/17 Втр 21:26:21  962628
1.png (38Кб, 673x514)
2.png (39Кб, 687x510)
Анон, либо я дурак, либо создатель проги поехавший. Рассуди нас. Есть два числа C6 и 40. При сложении получаем 106. Что мы получаем во флаге SF на деле? Значение D7 или значение самого старшего бита? Заранее благодарю.
Dmitry 28/03/17 Втр 21:30:58  962632
>>962001
Компилятор из С собирает асму. А у меня asm выхлоп, бинарный блоб драйвера.
Аноним 28/03/17 Втр 22:38:56  962697
>>962632
Компилятор из C может собирать что угодно. Тебе надо сделать дизассемблер с asm, перевести его в промежуточный опкод, а потом конвертировать в ассемблер твоего специфичного кода. В llvm есть что-то подобное с возможностью переводить из одного языка программирования в другой. Тебе нужно будет написать соответственно для асма x86 и своего языка.
Имя 31/03/17 Птн 17:49:37  964364
Не могу понять, откуда берутся вот эти функции в IDA. Притом даже компиля свой файл, у меня получается одна из них, но я всё равно не въезжаю, как это выходит. Вроде как _fin_1 похож на код обработки исключения из finally, но не совсем.
Аноним 31/03/17 Птн 18:03:05  964378
>>964364
Они нужны для работы malloc/realloc вестимо.
Аноним 31/03/17 Птн 18:04:55  964383
>>964364
Ну судя по названию, ты прав, это exception filter и finally handler. Что-то /EHsc с собой тащит, может быть?
Имя 31/03/17 Птн 18:15:50  964389
>>964383
Да, так и есть, воткнул в except вызов функции- этот самый RtlZeroHeap_filt_0 объявился сам.
Правда не очень понимаю, как мой код трансформируется в эту фигатень. Ладно, буду экспериментировать и читать про структурированную обработку исключений.
Аноним 01/04/17 Суб 11:59:30  964702
Как получить значение xmm регистров в 32 битной Windows? Где они в структуре CONTEXT.
Аноним 01/04/17 Суб 14:20:50  964774
>>964702
Нашёл, XMM_SAVE_AREA32. Почему-то они только для 64 битной ОС определены.
Аноним 02/04/17 Вск 20:35:51  965627
https://github.com/hteso/iaito
Аноним 03/04/17 Пнд 13:03:27  965975
Привет, аноны! Кто то из вас пользовался дебагером DEBUG? Если да, то можете, пожалуйста, пояснить за него? Заранее спасибо!
Аноним 03/04/17 Пнд 16:15:45  966066
>>965975
А что тебе пояснять? Мануалы есть в сети. Сам по себе он 16-битное говно мамонта, про многие инструкции не знает. Если есть конкретная проблема - спрашивай.
Аноним 03/04/17 Пнд 17:28:06  966098
>>966066
А OllyDbg намного лучше? Есть ли какие нибудь задачки для начинающего дебагера?
Аноним 03/04/17 Пнд 18:08:27  966108
>>966098
Да, OllyDbg намного лучше. А возможно, стоит сразу на x64dbg посмотреть.
> Есть ли какие нибудь задачки
Как же вы заебали. Придумай сам себе задачу. Отлаживай собственные программы. Возьми коллекцию крякми и взломай их все.
Аноним 03/04/17 Пнд 18:10:28  966109
>>966108
А как крякать то
как уточка?
Аноним 03/04/17 Пнд 19:29:33  966145
>>966109
Отслеживать вызовы подпрограмм, смотреть, какие регистры заполняются, какие структуры в памяти заполняются.
Аноним 03/04/17 Пнд 19:35:09  966153
>>966145
Попробую нарыть гайд по этому, спасибо!
Аноним 03/04/17 Пнд 21:09:16  966209
>>966153
Статьи на экзелаб, не плагодари.
Аноним 05/04/17 Срд 16:35:42  967390
aaa.JPG (898Кб, 1920x1044)
Написал небольшую программку для линукса (хеловорлд) https://pastebin.com/d6Zfm8Rn
Когда скомпилировал через gcc hello.s -o hello вышло 8200 байтов. Почему?
Dmitry 05/04/17 Срд 16:44:48  967395
>>967390
>Написал небольшую программку для линукса (хеловорлд) https://pastebin.com/d6Zfm8Rn
>Когда скомпилировал через gcc hello.s -o hello вышло 8200 байтов. Почему?
А почему ты GCC юзал?
Есть as(часть gcc), и другие ассемблеры.
strip -s helloworld не забудь.
Аноним 05/04/17 Срд 22:05:47  967638
>>967390
Потому что crt, которая в твой main управление передаст.
Аноним 05/04/17 Срд 22:10:45  967646
>>967638
Сам ты передаст.
Аноним 05/04/17 Срд 22:11:35  967647
qOlSePWJ3u8.jpeg (47Кб, 400x400)
>>967646
Компиляция и декомпиляция Аноним 09/04/17 Вск 15:05:10  969991
Всем здарова. Вкатываюсь в реверс после курсов по ОС, архитектуре и 16-битному асму моего универа (асм на бумажке писал только). Хочу как у Юрича в Reverse Engineering писать простые программы и дизасемблировать их, но получаю гигантские простыни кода. Компилирую через
gcc code.c -o code. "-O2" не меняет ситуацию. Смотрю через objdump -d. Что я не так делаю?
Аноним 09/04/17 Вск 18:02:50  970237
>>969991
>Смотрю через objdump -d.
Поэтому люди и пользуются продвинутыми средствами типа IDA, которые пропускают лишний код и показывают сразу точку входа, минуя библиотечные функции.
Аноним 09/04/17 Вск 18:56:49  970321
>>970237
>IDA Starter Licenses start at 589 USD or 529 EUR. IDA Professional Licenses start at 1129 USD / 1019 EUR.
Аноним 09/04/17 Вск 19:19:12  970368
>>970321
IDA Pro 6.8.torrent
Аноним 09/04/17 Вск 21:00:30  970473
>>970321
Демка есть. Для "посмотреть" подходит.
Аноним 09/04/17 Вск 21:01:41  970475
>>969991
gcc -S есть. Простыни остаются, но читать легче.
Аноним 10/04/17 Пнд 12:18:01  970803
[C/C++]
Возможно ли даемону в фоне с правами 0й сессии отслеживать такие штуки как
-открытие процесса(OpenProcess)
-чтение(ReadProcessMemory)
-запись(WriteProcessMemory)
-выделение памяти (VirtualMemoryAlloc)
-создание потока выполнения (CreateRemoteThread)
И прочие штуки. Должны же как-то работать антивирусные и античит системы, информации в сети мало.
Читал, например, что VAC использует динамически загружаемые с их сервера тесты для памяти и на основе статистик принимают решения.
Аноним 10/04/17 Пнд 13:39:35  970832
>>970803
Когда придёт прошаренный человек, он тебе разъяснит. А у меня такие мысли.
>с правами 0й сессии
Что это означает? Из третьего кольца? Если из нулевого, то всё понятно. Значит юзерспейс. Да, можно. И без даемона (просто не знаю, как по другому). Подгружаешь свою dll во все процессы (с помощью реестра, загуглишь) и ставишь переходы на интересующие тебя вещи. Учитывай, что многие защиты не любят, когда на системных функциях стоит jmp в самом начале, добавь мусорных команд.
>Должны же как-то работать антивирусные
Они работают на нулевом кольце.
>и античит системы
А у этих такие же возможности, как и у тебя, если в тихую не устанавливают драйвер.
>Читал, например, что VAC использует динамически загружаемые с их сервера тесты для памяти и на основе статистик принимают решения.
Тоже читал, что VAC ищет читы по сигнатурам. Изменил опции компиляции - изменилась сигнатура. Учитывая, что существует столько читов - это очень ненадёжная система.
Аноним 10/04/17 Пнд 15:26:21  970908
Допустим есть веб-приложение, которое обменивается информацией с запущеным сервисом. Как вклиниться и послушать, о чем они обмениваются?
Аноним 10/04/17 Пнд 15:52:25  970917
>>970908
>Как вклиниться и послушать, о чем они обмениваются?
Очевидный Wireshark очевиден.
Аноним 10/04/17 Пнд 18:32:44  971026
Аноны, где достать последнюю ИДУ$можно не самую последнюю, интересует только поддержка плагинов на питоне$ для mac os? Все что удалось найти - какой-то обрезок, где нет половины функционала(есть поддержка idc, но нет поддержки плагинов на питоне)
Аноним 10/04/17 Пнд 20:04:58  971115
>>970917
Но вайршарк слушает то, что проходит через сетевую карту. А у меня веб приложение уже запущено, я туда уже зашел, и теперь оно взаимодействует с сервисом напрямую локально.
Аноним 10/04/17 Пнд 20:07:20  971117
>>971115
Ты поехавший?
Алсо в этой вашей балмерне есть свои замуты с WinPcap и loopback
Аноним 10/04/17 Пнд 20:09:38  971119
>>971117
>Ты поехавший?
Что не так? Все лаунчеры ммо, которые запускаются с сайта, так работают. Или у тебя другие сведения? Изложи их тогда. тогда.
>Алсо в этой вашей балмерне есть свои замуты с WinPcap и loopback
Ничего об этом не слышал.
Аноним 10/04/17 Пнд 20:13:19  971126
>>971119
С каким сервисом он работает? С апачем? Я скачал игру сиськи письки онлайн от мейлру и они мне апач поставили?
Аноним 10/04/17 Пнд 20:25:55  971135
>>971126
Какой апач, ты что несёшь? Сервисом (daemon), а не сервером.
Во всех игрушках это работает так: у тебя есть игра, клиент которой запускается через обычный экзешник; авторизируешься на сайте -> сервер сайта в бекенде выдаёт шифрованный ключ, который передаётся в сервис, который постоянно его мониторит -> если ключ правильный, сервис запускает экзешник клиента с параметрами, вроде этого ключа. Я хочу прослушать, чем сервис на пекарне обменивается с веб приложением, и потом с самым клиентом.
Аноним 10/04/17 Пнд 20:35:43  971139
>>971135
Смотри, либо ты нормальным человеческим языком описываешь все части этой системы и все протоколы, по которым они взаимодействуют, либо ты официально признаешься поехавшим, у которого демон мониторит шифрованные ключи.
Аноним 10/04/17 Пнд 20:35:53  971141
LmhQ7IaVfmykN0U[...].jpg (101Кб, 512x768)
У меня такое ощущение, что весь реверс и вообще изучение системного программирования нужно делать на винде. Так ли это?
Аноним 10/04/17 Пнд 20:39:59  971146
4.png (15Кб, 390x165)
>>971139
>все части этой системы и все протоколы
Если бы у меня был доступ к исходникам, так бы и сделал. А сейчас мне как раз нужно в них разобраться, я хочу сделать обход запуска с сайта.
>либо ты официально признаешься поехавшим, у которого демон мониторит шифрованные ключи
Папики пришли учить, не давая никаких ответов на конкретные вопросы. Я тебя сразу спросил, если у тебя есть другая информация, говори, каким образом кнопка на сайте запускает экзешник клиента.
Аноним 10/04/17 Пнд 20:43:21  971149
>>971146
Ты же ставишь их нативное расширение. Через него можно хоть мать выебать.
Аноним 10/04/17 Пнд 20:47:46  971159
>>971149
То есть от того, что я пропустил по незнанию аддон в списке сайт -> сервис -> клиент, я и стал поехавшим в твоих глазах, ясно.

Мой вопрос остается в силе, каким образом я должен влезть между сайтом (аддоном) и сервисом, чтобы прослушать их обмен? И если такой вариант тебе не нравится, то вариант номер два - какие образом прослушать, с какими конкретно параметрами запускается клиентский экзешник?
Аноним 10/04/17 Пнд 20:50:34  971166
>>971146
>каким образом кнопка на сайте запускает экзешник клиента
Быстрое гугление выдало такие ссылки:
https://toster.ru/q/89523
https://toster.ru/q/3704
Это так же, как магнет-ссылки и прочие приложения, которые можно запустить из браузера.
>>971159
И будь спокойнее.
>каким образом я должен влезть между сайтом (аддоном) и сервисом
MIMT-прокси.
Аноним 10/04/17 Пнд 20:51:47  971169
>>971166
>MIMT-прокси
Спасибо, ушел гуглить.
Аноним 10/04/17 Пнд 20:56:42  971175
>>971169
Простейший вариант - Fiddler, хотя сам пишу велосипеды под свои нужды: чистый C + libevent + OpenSSL и свой доверенный корневой сертификат.
Аноним 10/04/17 Пнд 21:00:36  971178
>>971175
Ты уверен что у них в клиенте сертификат не вшит? Выдирать придётся.
Аноним 10/04/17 Пнд 21:00:52  971179
>>971141
Внезапно на винде удобнее. Но если хочешь стать годным специалистом, без погружения в ядро линукса ты не обойдешься, и это погружение даст тебе много знаний и скиллов.
Аноним 10/04/17 Пнд 21:01:47  971180
>>971166
> MIMT
> Man in Middle The
Аноним 10/04/17 Пнд 21:01:51  971181
>>971141
Да.
Аноним 10/04/17 Пнд 21:02:16  971182
Пытаюсь разобраться с прошивкой ARM микроконтроллера. Отладка в IDA через JTAG работает, все вроде бы хорошо. Но проблема в том что трудно разобраться с регистрами периферии. И в документации на микроконтроллер не указаны абсолютные адреса регистров, а их смещения относительно разных базовых адресов.
Можно ли в IDA настроить нормальное отображение регистров периферии? Мне бы для начала разобраться с тем как там настроена периферия.
Аноним 10/04/17 Пнд 21:03:52  971184
>>971182
Делаешь структуру для каждого периферийного устройства, скриптом или руками втыкаешь эту структуру по соответствующему адресу.
Аноним 10/04/17 Пнд 21:08:56  971191
>>971178
Их сертификат генерируется, когда в опциях разрешишь перехват SSL трафика. При этом создаётся новый сертификат для каждого сайта (валидный год или даже больше) и он устанавливается в систему. Вот за последнее свойство и пишу сам наипростейший mitm-прокси, который не захламляет систему левыми сертификатами, а генерирует их налету и не сохраняет никуда.
>>971180
Простите, опечатался.
Аноним 10/04/17 Пнд 21:15:10  971200
>>971191
>Их сертификат генерируется, когда в опциях разрешишь перехват SSL трафика.
Тебе за софтину, которую ломают. Она может хуй класть на общесистемное хранилище.
Аноним 10/04/17 Пнд 21:15:37  971201
>>971191
Ещё раз. Клиент может:
1) Использовать свой сертификат, а не скачивать его по http
2) Скачивать его по http и проверять, например, что он выдан верисигном, а не вася-пупкин-ца
Сейчас 2017 год, даже хром что-то подобное делает. А тут речь идет о нативном клиенте который может извращаться с ссл как угодно.
Аноним 10/04/17 Пнд 21:25:33  971204
5.png (44Кб, 438x702)
>>971159
>то вариант номер два
Проверил этот путь, все тухло. На остальных локализациях можно было выдрать отсюда параметры запуска клиента, но в даном случае ничего нет. При чем я точно знаю, что параметры передаются, так как экзешник клиента можно запустить вручную.
Аноним 10/04/17 Пнд 21:26:59  971205
>>971200
>>971201
Ну ты чего? Один из вариантов ему предложил. Пусть смотрит, как работает софт. Очень часто он использует движок IE или использует корневые сертификаты системы. Где-то же он берёт сертификат, которому доверяет.
>Использовать свой сертификат
Заменим на свой.
>Скачивать его по http и проверять, например, что он выдан верисигном
Создать свой самоподписанный сертификат со всеми полями верисигна и установить его в систему.
>даже хром что-то подобное делает
Он использует хранилище сертификатов Windows. Mitm работал на нём, сам лично проверял, все сайты, даже гугловские.
>А тут речь идет о нативном клиенте который может извращаться с ссл как угодно.
Особенно замечательно, когда есть две dll: libeay32.dll и ssleay32.dll, достаточно две функции изменить, чтобы писали весь трафик в лог.
Но всё, само собой, зависит от приложения. Оно может параноидально проверять всё, быть зашифрованным, закриптованным, использовать VM и прочее. А может и ничего из перечисленного.
>>971204
Запусти от администратора.
Аноним 10/04/17 Пнд 21:31:28  971206
6.png (46Кб, 427x689)
>>971205
>Запусти от администратора.
Я и запускал. Но вот у их защитника параметры оказались очень похожы на те, что я вижу на других локализациях.
Аноним 10/04/17 Пнд 21:31:39  971208
>>971205
http://www.chromium.org/Home/chromium-security/security-faq#TOC-How-does-key-pinning-interact-with-local-proxies-and-filters-
У хрома там забавные правила, да. Но он защищается от недобросовестных ЦА, так что в этом плане все ок.
Аноним 10/04/17 Пнд 21:40:29  971215
>>971206
Знакомый параметр /username, как от Sony, одна из их игр FreeRealms, которую безуспешно пытался запустить ввиду отсутствия нужных файлов. Ты немного тупишь, тебе правильно написали. Запусти Wireshark и посмотри что и куда передаётся. А чтобы не было левого трафика, закрой все приложения, которые используют сеть. Там (возможно) должен запускаться загрузчик, который общается с сервером по UDP. Ты где пароль вводишь: на сайте или в клиенте?
Аноним 10/04/17 Пнд 21:41:02  971216
Так и есть >>971206 Смог запустить клиент без сайта, ебаться с сертификатами точно теперь не буду.
Проблема только в том, что нужно знать шифрованный логин и пароль, в других локализациях этого не требовалось. Да и местный защитник Фрост тоже стартует.
Аноним 10/04/17 Пнд 21:44:26  971218
Снимок.PNG (40Кб, 432x695)
>>971216
Собственно, вот и всё. Достаточно один раз подсмотреть логин и пароль у фроста и потом можно запускать так. Как видно, фрост больше не является главным процессом.
Аноним 10/04/17 Пнд 21:47:37  971222
>>971218
Вот видишь, а ты все демоны, апач, веб-приложения. А оказалось что параметры через командную строку передаются. Алсо если ты запустишь без их античит поеботы ты можешь попасть в чорный список и твоего перса посадят на бутылку. А можешь и не попасть.
Аноним 10/04/17 Пнд 21:53:50  971228
>>971222
У меня нет перса, я не играю.

Разлогинился на сайте, заблокировал расширение в браузере, отключил сервис - приложение отказывается запускаться, неверный пароль. Блядь.
Аноним 10/04/17 Пнд 21:55:57  971229
>>971228
Может там не шифрованные логин-пароль, а одноразовые или сессионные логин-пароль?
Аноним 10/04/17 Пнд 22:00:21  971233
>>971229
This. Логин остался без изменений, а вот пароль сменился. Блядь, у этой проблемы решения нет.
Аноним 10/04/17 Пнд 22:02:44  971236
>>971233
Почему? Можно через curl на их веб-сервак ебануть свой логин-пароль и получить сессионный ключ. Скорее всего.
Аноним 10/04/17 Пнд 22:03:30  971239
>>971236
И в результате выйдет вебланчер, только свой)))00
Аноним 10/04/17 Пнд 22:07:58  971248
>>971239
А в чем смысл изначально этого всего? Может тебе просто локализацию перенести если английский клиент взломан а ты делаешь русскую пираточку?
Аноним 10/04/17 Пнд 22:09:35  971253
>>971248
>смысл
Сделать нормальный ланчер без привязки к сайту, как это все и происходит на других локализациях.
Аноним 10/04/17 Пнд 22:11:30  971256
>>971253
Но это лаунчер для онлайн игры и если они хотят сессионный ключ то тебе придется его получать. Другой вопрос - хотят ли они его?
Аноним 10/04/17 Пнд 22:29:30  971280
9.png (758Кб, 851x657)
>>971256
Вспомнил, что в запакованных файлах есть параметр use-web-launcher, перезапаковал со значением false. Теперь могу доходить до стандартного окна входа, как в других локализациях, вот только ни мыло, ни айди не подходят как логин. Мда уж, чего они наворотили там.
Аноним 10/04/17 Пнд 22:52:39  971306
Как легче (!) всего искать поинтеры на значения?
Аноним 10/04/17 Пнд 22:53:35  971308
>>971306
Хардварный брейпоинт на чтение/запись.
Аноним 10/04/17 Пнд 22:56:00  971312
>>971308
Под "легче" я имел в виду не эффективнее, а легче для ньюфага.
Аноним 10/04/17 Пнд 22:59:21  971317
>>970368
> 2k17
> воровать софт
Аноним 10/04/17 Пнд 23:14:24  971340
>>971327
Кстати, насчет CE. Часто не могу найти текстовое значение, хотя на экране в дрочильне четко видно текст а значит он обязан где-то храниться. С чем может быть связано?
Аноним 10/04/17 Пнд 23:18:44  971344
>>971340
ASCII/Unicode?
Аноним 10/04/17 Пнд 23:20:11  971349
>>971344
Хуй знает, но на экране никаких специальных символов, простой текст латиницей. Не должно же быть разницы, разве нет?
Аноним 10/04/17 Пнд 23:28:51  971360
>>971349
Ну нихуя себе нет! ASCII или UTF-8 для латиницы - один байт на символ, UTF-16 (UCS-16) - два байта на символ, UTF-32 (UCS-32) - четыре байта на символ. А еще могут быть шифрованные строки.
Аноним 10/04/17 Пнд 23:30:02  971363
>>971360
>UTF-16 (UCS-16) UTF-32 (UCS-32)
Да это никто и не использует в здравом уме.
>ASCII или UTF-8
Разница в поиске между этими кодировками есть?
Аноним 10/04/17 Пнд 23:35:40  971370
>>971317
В любом другом случае - да, но не с идой. Такому охуевшему долбоебу как ильфак могу только хуй под язык положить
Аноним 10/04/17 Пнд 23:36:34  971373
>>971363
> Да это никто и не использует в здравом уме.
Вся Windows API использует UTF-16 (прошлые версии - UCS-16). В крестах wstring использует UTF-16. В ресурсах PE-файлов строки хранятся как UTF-16. В андроиде нативные либы используют UTF-32. Я видел и виндовые приложения, в которых внутри UTF-32, им так проще - не нужно обрабатывать суррогатные пары.

> Разница в поиске между этими кодировками есть?
Для латиницы нет.
Аноним 10/04/17 Пнд 23:37:55  971377
>>971373
Ну окей, тогда просто ставить галку Unicode в следующий раз, если ничего не находит?
Аноним 10/04/17 Пнд 23:44:08  971385
>>971377
Да. Но если CE - это читенжин, то я им ни разу не пользовался, и не знаю, как там принято искать текст.
Препроцессинг, компиляция, линковка Аноним 11/04/17 Втр 18:39:54  971955
SUP
Не понимаю, что происходит после написания кода, но перед получением исполняемого файла. Компилю все клангом или gcc, и всегда получаю кучу левого кода в файл. Где почитать об этом?
Dmitry 11/04/17 Втр 20:40:21  972023
>>971955
preprocesses code>assembly>binary
Добавляется куча ссылок на либы, бойлерплейт для ядра.
Аноним 11/04/17 Втр 22:57:54  972136
>>972023
Ну да, а вот как это конкретно происходит? Не знаю как прогуглить
Аноним 11/04/17 Втр 23:01:02  972140
>>972136
Возьми gcc, погугли ключик "-save-temps". Ну и про ключик -v тоже не забывай.
Аноним 11/04/17 Втр 23:12:31  972144
>>972136
Ещё погугли "Understanding and Writing Compilers" (Richard Bornat).
Аноним 12/04/17 Срд 00:17:22  972182
https://challenges.re/53/
Мне кажется я решил, но не знаю правильно или нет. Проверьте, пожалуйста.
На винде строки хранятся в DATA-сегменте, а на линуксе в .rodata. В DATA можно писать, а в .rodata нельзя. Поэтому на винде все работает, а на линуксе нет.
Аноним 12/04/17 Срд 00:45:13  972193
>>972182
> Поэтому на винде все работает
Какой-то странный челлендж. Вопрос уровня i += i++ + ++i. Особенности компилятора, которые могут изменяться от версии к версии, зачем их знать? В гцц строковые литералы ридонли по умолчанию, но у кого-то в системе зачем-нибудь может быть -fwritable-strings в CFLAGS, и тогда все будет работать. То же и с MSVC. По умолчанию строки доступны для записи (хуй знает насчет новых версий), но есть /GF, тогда будет как в гцц. А ответ простой: писать в строковый литерал - это undefined behavior, и все, что нужно про это знать - так делать нельзя.
Аноним 12/04/17 Срд 01:06:42  972202
>>972193
Мега спасибо за развернутое объяснение
Dmitry 13/04/17 Чтв 01:25:36  972759
170403ilzyukgzn[...].jpg (29Кб, 460x215)
170403myrceijth[...].gif (579Кб, 658x386)
Все играли?
Или в Human Machine Resources или в tis100?
Dmitry 13/04/17 Чтв 01:28:37  972760
На нуль есть целая доска для байтоебов
/bytesex/
Аноним 13/04/17 Чтв 01:59:57  972770
>>972759
Шенжен - 11/10, тис - говно/10, hrm - 5/10.
Аноним 13/04/17 Чтв 02:00:29  972771
>>972760
> /bytesex/
Так пиздуй, мы не расстроимся.
Аноним 13/04/17 Чтв 19:21:45  973119
>>960640 (OP)
Изучаю системные вызовы линукса путём чтения менпейджей и экспериментов и не могу разобраться со вторым сискаллом, а именно с функцией open. А именно я не могу понять как ставятся флаги. Вот у меня получается создавать файл, но в нём всё запрещено. Я экспериментами нашёл что седьмой справа бит отвечает за создание файла, но как сделать так чтобы он был разрешён к читанию и писанию и выполнению я незнаю. Как это сделать?
Аноним 13/04/17 Чтв 22:09:55  973231
>>973119
Как это ты читаешь маны, но man open не читал и флагов там не увидел, и грепнуть/printf-нуть флаги или заинклудить соответствующий .h ты не можешь?
Аноним 13/04/17 Чтв 22:12:30  973232
>>973119
Смотри, у тебя есть аргумент flags. Каждый флаг, типа O_RDONLY расценивай как двоичное число типа 0000001000000. Разные флаги имеют единички в разных местах. Чтобы совместить два флага, типа O_RDWR и O_CLOEXEC, надо включить еденички с обоих позиций, то есть на позициях обоих флагов. Чтобы проставить единички с включением обоих флагов пиши так:
open(file, O_RDWR | O_CLOEXEC);
Побитовое ИЛИ проставит единички, как сумму всех флагов. Удачи в понимании этого сообщения
Аноним 13/04/17 Чтв 22:53:27  973250
>>973236
>>973232
>Расценивай
А оно разве не таким и есть?
Аноним 13/04/17 Чтв 22:56:26  973252
>>973250
Так и есть. Я к тому, что не думай о них как о "32" или "16"
Аноним 13/04/17 Чтв 23:09:30  973259
>>973250
> А оно разве не таким и есть?
Существуют флаги с дублирующимися битами. Если сложить 0x11 и 0x09 - получится не то, что ожидается от флагов, а вот | отработает как положено.
Аноним 14/04/17 Птн 11:11:27  973401
Как найти поинтеры, если повесить брейкдаун в дебаггере невозможно - вылетает онлайн-игрушка? Нет, я не хочу ничего редактировать, я просто хочу считывать значения.
Аноним 14/04/17 Птн 17:33:57  973628
>>973401
>брейкдаун
Наверное, брейкпойнт.
>вылетает онлайн-игрушка
Какой дебаггер, как проявляется вылет. Плагины не помогают?
>я не хочу ничего редактировать, я просто хочу считывать значения
Можно через ReadProcessMemory попробовать, если знаешь точные адреса или можешь их найти.
Аноним 14/04/17 Птн 19:16:29  973727
>>973401
Вангую использует olly для поиска указателей в играх , используй CE лучше для этого,(он не останавливает процесс что в итоге не дропает процесс.
Аноним 14/04/17 Птн 19:17:17  973728
>>973628
С этого момента поподробней как при помощи readpm найти указатель
Аноним 14/04/17 Птн 19:20:36  973730
>>973628
>Наверное, брейкпойнт.
Да, сорян.
>Какой дебаггер, как проявляется вылет. Плагины не помогают?
CE, выбираю пункт меню с брейкпоинтом на любой найденный адрес со значением, и игрушка моментально вылетает без ошибок. Каких heartbeat в игрушке нет, античит защита отключена разрабами.
>Можно через ReadProcessMemory попробовать, если знаешь точные адреса или можешь их найти.
Можно поподробнее? Не знаю адресов, как раз их и пытаюсь найти, ради этого и затевал.

>>973727
>Вангую использует olly для поиска указателей в играх , используй CE
А я и использую CE.
Аноним 14/04/17 Птн 19:41:46  973740
>>973730
Запутанно ты пишешь. Если нет никакой защиты в приложении, тогда ничего и не должно срабатывать. Не знаю, как ведёт себя CE, он как отладчик присоединяется к процессу? Программа своим поведением на точку останова напоминает реакцию на исключение в каком-нибудь VEH, когда
else
{
    ExitProcess(...);
}
Попробуй OllyDbg для разнообразия и поставь точку останова на ExitProcess, посмотри, кто её вызывает.
>Не знаю адресов, как раз их и пытаюсь найти
Что ты ищешь-то? Что за игра, дай немного информации, что уже сделал, что нужно сделать.
Аноним 14/04/17 Птн 20:06:24  973756
>>973740
>как ведёт себя CE, он как отладчик присоединяется к процессу?
Ах если бы я знал. По внешним признакам НИЧЕГО не происходит, просто вылетает игрушка.
>Попробуй OllyDbg для разнообразия и поставь точку останова на ExitProcess, посмотри, кто её вызывает.
Попробую сегодня, как доберусь домой.
>Что ты ищешь-то? Что за игра, дай немного информации, что уже сделал, что нужно сделать.
Да ничего ещё не сделал. Есть группа из нескольких игроков, я хочу считывать их имена в string, а потом уже проводить с ними операции, которые не касаются этого треда. Ищу string, нахожу имя на экране, при перезапуске игрушки имени по тому адресу уже нет, очевидно. Поэтому мне и нужны указатели на эти надписи. Правой кнопкой мыши по найденному адресу и выбираю пункт меню для поиска поинтеров, игрушка моментально вылетает.
Аноним 14/04/17 Птн 20:16:34  973765
>>973756
>при перезапуске игрушки имени по тому адресу уже нет, очевидно
Скорее всего, игра написана на C++. Нужно искать, где хранятся (создаются) имена, а по ним выходить по цепочке на глобальный класс. А когда найдёшь, уже с помощью ReadProcessMemory в обратном (в данном случае, прямом) направлении пройдёшь. Ну это в теории. Надо реверсить игру, искать, где, кто и что создаёт. Сам бы так делал. Возможно, можно проще.
Аноним 14/04/17 Птн 20:19:46  973768
>>973765
>Нужно искать, где хранятся (создаются) имена, а по ним выходить по цепочке на глобальный класс. А когда найдёшь
Алло, это я и пытаюсь делать с первого поста.
Аноним 14/04/17 Птн 20:38:16  973780
>>973768
>Алло
Ну и аллёкай дальше, раз весь пост осилить не смог.
Аноним 15/04/17 Суб 05:17:21  973886
>>973780
Твои советы слишком абстрактные для ньюфага. Ты можешь сказать, что конкретно мне нужно делать для того, чтобы найти корневые адреса и офсеты?
Аноним 15/04/17 Суб 12:16:50  973940
>>973756
> Ищу string, нахожу имя на экране, при перезапуске игрушки имени по тому адресу уже нет, очевидно.
В CheatEngine есть охуенный туториал, где на примерах показывается как искать статические адреса указателей.
https://youtu.be/5us6a9b2zDk

Вообще советую весь туториал самому прорешать.
Аноним 15/04/17 Суб 12:56:52  973961
>>960640 (OP)

ПРОГРАММИРУЕШЬ НА АССЕМБЛЕРЕ
@
НЕ МОЖЕШЬ РЕШИТЬ ЧЕМ ПОЖЕРТВОВАТЬ
@
СЭКОНОМИТЬ ОПЕРАТИВНУЮ ПАМЯТЬ, НО УМЕНЬШИТЬ СКОРОСТЬ ПРОГРАММЫ
@
ИЛИ УВЕЛИЧИТЬ СКОРОСТЬ, НО ЗАНЯТЬ ЕЩЁ ПАМЯТИ
@
ТВОЯ ПРОГРАММА ВЕСИТ 5 КБ
Аноним 15/04/17 Суб 14:44:18  974006
>>973961
>ТВОЯ ПРОГРАММА ВЕСИТ 5 КБ
@
ТЫ ДОБАВЛЯЕШЬ ИКОНКУ
@
ДЛЯ ОТОБРАЖЕНИЯ В ПРОВОДНИКЕ ШИНДОФС
@
ПРОГРАММА НАЧИНАЕТ ВЕСИТЬ 30КБ
@
ПИШЕШЬ КОД НА АСМЕ ДЛЯ СЖАТИЯ ИКОНОК

https://habrahabr.ru/post/247425/
Аноним 15/04/17 Суб 15:39:00  974032
>>974006
В ФОРМАТЕ PNG ПРИ ПОМОЩИ FASM
@
НАДЕЯЛСЯ УВИДЕТЬ РЕАЛИЗАЦИЮ DEFLATE НА МАКРОЯЗЫКА FASM
@
file 'icon16.png'
@
ОПЯТЬ ХЕЛЛОВОРЛД ДЛЯ НУБОВ
Аноним 15/04/17 Суб 16:23:36  974058
>>973961
Производительностью только дауны жертвуют.
>>974006
Иконки не нужны.
Аноним 15/04/17 Суб 18:21:19  974111
>>973940
Перетолстил.
Аноним 15/04/17 Суб 18:43:02  974120
дайте мне, пожалуйста, аналог printf() из си на ассемблере для линукса в архитектуре x86-64. Желательно в коде фасма. А то у меня какое-то говно получается.
Аноним 15/04/17 Суб 19:56:27  974153
blob (26Кб, 946x377)
поможите, невкурю, в IDA мучаю ехешник сибирии 1. http://rgho.st/8Jhz5nlVz
если рядом кинуть player.ini с соджержимым 800 600 32 0 BaseCMO.cmo
то игра запустится в окне и все хорошо (ну относительно, есть бага что свернуть развернуть и она растягивается в фулскрин)
Хочется сделать окно побольше, а то мелковато. спрятать курсор, рамку и т.д. это решается за счет ultimate-ASI-Loader
Вроде нашел место где проверяются значения. Файл открывается тут :0040437D
Но что то раскурить проверку не получается, вообще не пойму что она делает.
через читэнджи искать адреса где хранится значение для разрешения - дохлый номер, в игре нельзя переключать.
хелпплз.
Аноним 15/04/17 Суб 19:57:21  974157
>>974153
п.с.: первые два значения в инишники вообще по барабану, что бы не написал окно всегда 800*600
Аноним 15/04/17 Суб 20:05:09  974165
>>960640 (OP)
>Список книг по RE:
в список однозначно стоит добавить раз уж блог его указали https://beginners.re/
Аноним 15/04/17 Суб 21:02:52  974193
>>970473
демка - это ты про фри версию 5 давности?
Аноним 15/04/17 Суб 21:37:29  974204
>>974153
>Хочется сделать окно побольше
Там ниже переписываются значения разрешения экрана. По адресам 00404413 и 00404423. nop'ами попробуй их заменить.
Как мне кажется, в этом месте баг. Вероятно, хотели значения присваивать до открытия файла, а то какой смысл после открытия и считывания переписывать.
Аноним 15/04/17 Суб 22:12:35  974220
blob (873Кб, 1026x795)
>>974204
занопил в ольке наживую, рендер разрешение изменил. А вот задники нет.
Не всё так просто похоже будет. Эх.
Аноним 15/04/17 Суб 23:06:10  974237
>>974220
> А вот задники нет.
Как я и думал, это не глюк, как полагал >>974204-кун, а комментирование недописанного функционала.
Аноним 15/04/17 Суб 23:25:04  974250
>>974237
или отключенного за ненадобностью. Типа не на чем запустить такое. хехе. Игра то старая.
в сибирии 2 так же, только там разрешение жестко забито в ехешнике.
Ндо андроид версию ковырнуть будет. Где то да должно быть масштабирование текстур.
Аноним 16/04/17 Вск 01:41:08  974277
>>974120
Внезапно printf. Посмотри в примерах к фасму, там есть хелловорлд для линуксов, в том числе и с libc.

Аноним 16/04/17 Вск 11:45:26  974370
>>974277
да, а фасм научился наконец то дебаг инфу в эксешники пихать? или все по старому, пилишь отдельно скомпиленое, отдельно листинг ?
Аноним 16/04/17 Вск 12:30:30  974399
>>960640 (OP)
только что экспериментальным путём узнал что syscall (по крайней мере тот, который write) в линуксе изменяет значение r11. Какие ещё регистры он изменяет?
Аноним 16/04/17 Вск 13:04:13  974420
не подскажите что нибудь типа GAP ( https://goo.gl/SuWQuG ), раньше при разборе алгоритмов, на ней частенько вычисления гонял, была отличная оболочка для нее GGAP, которая увы не развивается и не поддерживает актуальные версии.
Из того, что мне оч нравилось в ней, что просчитаные данные, хранятся как есть пока функцию не перезапустишь, и можно один раз обсчитав все, потом исопльзовать снова и снова.

удобно было что пишшеь функцию, и сразу видишь результат (так же с уже просчитаннми данными все можно сохранить)

нужно что нибудь подобное, и не оч громоздкое/

Пробовал LUA использовать для этого, не т само собой. Матлаб что ли? есть у кого идеи.

или пытаться вспомнить плюсы/QT и доводить https://sourceforge.net/projects/ggap/ до работы с актуальной версией?
Аноним 16/04/17 Вск 19:02:26  974520
>>974370
Научился для COFF вроде как. Но отдельной утилитой. Плюс на fasmg можно сделать любой формат отладочной инфы, но надо понимать, что fasmg - это тормоза и костыли.
Аноним 17/04/17 Пнд 17:26:15  975095
Есть ли какие-нибудь opensource C-библиотеки для работы с pe файлами? Без их загрузки в память, само собой. А то понадобилось мне восстановить импорт в дампе программы, такого велосипедостроения понаписал. А готового найти не смог.
Аноним 18/04/17 Втр 19:19:08  975759
>>960640 (OP)
Хочу на ассемблере сделать консольную игру с аскии-графикой. Но как это сделать? С выводом разноцветных символов я уже разобрался. Как сделать так чтобы либо каждый раз символы стирались и заново писались либо чтобы курсор переходил на сколько-то строк и символов вверх и заново писал символы? Это чтобы добиться изменения изображения.
Может надо использовать сискалл, который переводит курсор в файле? Ведь у консольки есть свой файловый дескриптор
Аноним 18/04/17 Втр 20:04:58  975831
>>975759
ОС?
Аноним 18/04/17 Втр 20:37:31  975867
>>975831
linux
Аноним 18/04/17 Втр 21:26:06  975935
>>975867
Самое просто - линковаться с ncurses и не заморачиваться деталями.
Аноним 19/04/17 Срд 17:24:57  976377
>>960640 (OP)
Привет, программач.
Пишу на NASM и сижу на Debian. Мне надо считать любой возможный сектор ЖД. С сделал INT 13h, на что получил закономерный Segmentation Fault. Попытался в гугл, а гугл говорит, что иди-ка ты нахуй с прерываниями к BIOS'у из под пинуса и пиздуй в DOS. Собственно вопрос. Можно ли мне, дегенерату, обойтись без DOS'а получить результат из Debian'а? Если нет, то помоги с материалом для дальнейшей работы. Что ставить, как сделать бочку работать и поставить свой кал NASM на на него?

В общий написал. Сюда на всякий тоже
Аноним 19/04/17 Срд 19:07:35  976442
>>976377
> получить результат из Debian
Если тебе именно прочитать нужно, то лучше возьми Си, open(/dev/sdX) (где X - нужный тебе накопитель), seek, read, close (в принципе на асме то же самое, можно сисколлами, можно с libc линковаться). Если это какая-то лаба, ставь DOSBox.
Аноним 19/04/17 Срд 19:23:55  976460
>>975935
Мне не надо самое простое. Я из тех кто любит изобретать велосипеды.
Аноним 19/04/17 Срд 19:43:23  976471
>>976377
> С сделал INT 13h, на что получил закономерный Segmentation Fault.
А вот нехуй в защищенном режиме прерывания теребить.
> гугл говорит, что иди-ка ты нахуй с прерываниями к BIOS'у из под пинуса
Не только из под пинуса.
> Можно ли мне, дегенерату, обойтись без DOS'а получить результат из Debian'а?
Очевидная виртуалка очевидна.
Либо пили свой загрузчик, пиши его на загрузочный носитель и в нем еби свой жд хоть через порты. Только сначала лучше убедись, что на канале есть ответ от жд.
Аноним 19/04/17 Срд 20:45:26  976498
С чего начать изучение реверсинга? инб4 с ассемблера, и я чуток его знаю
Аноним 19/04/17 Срд 21:33:55  976521
Аноны, помогите. Попался в руки исходный код ядра одного китайского андроид-девайса. Одна треть фалов в нем оказалась бинарными. Сделал hexdump, в первых 256 байт хранятся символы E-SaFeNet LOCK и пустые байты. Чем эту хуергу реверсить?
Аноним 19/04/17 Срд 21:38:31  976524
Забыл еще добавить, что MIME-тип файлов - application/octet-stream, но я знаю что должен быть text/ascii
Аноним 19/04/17 Срд 21:42:35  976527
>>976521
>символы E-SaFeNet LOCK
В гугл заглядывал? Там https://www.linuxquestions.org/questions/programming-9/how-to-decrypt-e-safenet-lock-source-files-4175455615/ мне предложили сходить по этой ссылке https://sentinel.gemalto.com/software-monetization/software-protection/
А если у тебя исходники на руках, посмотри в них, как с бинарными файлами работать. И что значит, пустые файлы? Нулями заполненные? Нули явно не разреверсишь.
>>976498
Берёшь любую программу и реверсишь. Если что-то не понятно, гуглишь, учишь и продолжаешь реверсить. Есть crackme разной степени сложности. Есть где-то руководство на русском языке по изучению OllyDbg. Есть "Образ мышления - дизассемблер Ida" для изучения, собственно, Ida.
Аноним 19/04/17 Срд 21:55:41  976535
>>976527
Душевное.
>А если у тебя исходники на руках, посмотри в них, как с бинарными файлами работать
Это должны быть тексты на Си, при компиляции таких файлов компилятор выдает ошибку и сборка не идет.
Первые 256 байтов - литералы E-SafeNet LOCK и нулевые байты. После первого 256байт-сектора начинается шифрокаша.
Аноним 19/04/17 Срд 22:02:12  976537
>>976535
Вот четвёртой ссылкой гугл выдал такое https://github.com/c3c/E-Safenet/blob/master/esafenet.py
Ты скинул бы куда-нибудь эти исходники. А то гадать приходится, что там у тебя уже есть, а чего нет, что в файлах, а что в исходниках.
Аноним 19/04/17 Срд 22:06:08  976540
>>976537
Да щас ссылку дам, откуда я сам брал - https://yadi.sk/d/mcHadISL3GckHi
Аноним 19/04/17 Срд 22:16:33  976541
>>976527
>Если что-то не понятно, гуглишь, учишь и продолжаешь реверсить.
А тут спрашивать можно?
Аноним 19/04/17 Срд 22:26:55  976545
>>976541
Для этого тред и создавал, сам нуб.
ОП
Аноним 19/04/17 Срд 22:47:06  976550
>>976537
Доки прочитал, и еще в нете навернул. И попробовал атаки по паттернам и известному тексту. Известный текст под рукой оказался, но не подходил из-за того, что файлы неодинаковые и это были сорцы с другого ведра. По паттернам не выдает адекватные ключи и не расшифровывает. А что с атакой по шифротексту - выдается текст, который нужно очень долго править. Хз что делать.
Аноним 20/04/17 Чтв 04:24:53  976694
>>976545
Тогда мой первый вопрос. Открываю exe в олли и ищу в string references строку, которую программа сохраняет в файл, а именно AuthnToken. Но в string references по какой-то причине этой строки нет. Что делать дальше? Я даже не знаю, как такую проблему гуглить.
Аноним 20/04/17 Чтв 05:24:14  976695
>>976694
Может файл пожат, может олька ссылку не распознала на строку. Ищи в памяти по Alt+M, ставь хардварный брейкпоинт на чтение, жди.
Аноним 20/04/17 Чтв 05:31:11  976696
>>976695
Я перед открытием проверил в PEiD не запакована ли программа, и там никаких подводных не оказалось. Пошёл пробовать твой вариант.
Аноним 20/04/17 Чтв 05:35:56  976697
>>976695
А на что ставить брейкпоинт?
Аноним 20/04/17 Чтв 05:43:55  976698
>>976695
Нашёл стринг! Только не в экзешнике основной программы, а там же в либах. Можно эту строчку как-то отредактировать?
Аноним 20/04/17 Чтв 06:24:39  976703
>>976698
Hiew или любой двоичный редактор.
Аноним 20/04/17 Чтв 08:32:50  976728
Нихуя вы тут ебанутые.
Аноним 20/04/17 Чтв 14:26:55  976868
>>976703
А также сама олька. Или она не сохраняет релоки при редактировании длл? (никогда не пробовал)
Аноним 20/04/17 Чтв 15:22:04  976889
Для чего точку входа в сишный шеллкод, расположенную в самом начале ШК-да, понадобилось делать невстраиваемой?

https://pastebin.com/5FfBvp95
Аноним 20/04/17 Чтв 16:18:55  976923
Анон, помоги получить первые 8 секторов ЖД.
sector выходит с нулями и AH тоже равен нулю. Что я делаю не так?
https://pastebin.com/2FhtHes0
Аноним 20/04/17 Чтв 17:54:28  976968
>>976868
>Или она не сохраняет релоки при редактировании длл?
А кто-то их вообще сохраняет? Кроме как при редактировании ресурсов увеличивать строки никто не умеет, кмк.
Аноним 20/04/17 Чтв 21:26:57  977056
>>976968
Ну, во-первых, изменялку строк в .exe только ленивый не писал. Это совсем просто для длл и чуть посложнее (требует предварительного анализа в IDA, хотя бы автоматического) для exe без релоков.
Во-вторых, я думал, может быть, олька при сохранении дллки дропает релоки. Но если еще подумать, то ей незачем это делать.
Аноним 21/04/17 Птн 14:31:37  977262
Есть ли в природе распаковщики для InstallAnywhere?

Что-то не гуглится с ходу. Инсталятор у них упакован upx и этот первый шаг легко пройти. А дальше чем его открывать?

Вариант с запуском на виртуалке не подходит -- так как потом надо тратить неделю на чтение лога куда оно что писало и что делало с реестром.
Аноним 21/04/17 Птн 14:38:27  977264
>>974420
>подскажите что нибудь типа GAP, раньше при разборе алгоритмов, на ней частенько вычисления гонял

А что ты там считал? Мне интересно, т.к. полгода где-то назад пару дней с ней игрался. Но я нуб в алгебре. И и не смог оценить.

Можно ли с помощью нее научиться Теории Галуа за короткий срок? Или она для чего-то другого?

Еще есть Magma, но там анальная лицензия. На рутрекере вроде есть пара ломанных версий. Но я не запускал.
Аноним 21/04/17 Птн 14:58:56  977275
В общем есть одна программа на Go. Мне нужно заменить значение в уже скомпиленом экзешнике константы mystring на "Hi!" . Как это можно сделать? В реверсе нуб.
Аноним 21/04/17 Птн 16:00:58  977323
java.PNG (6Кб, 438x195)
price.PNG (35Кб, 987x215)
>InstallAnywhere
>Anywhere
>эта цена
>Java-машина не найдена
>2017
До чего мы дожили.
Аноним 21/04/17 Птн 16:02:23  977326
>>977323
Это не дожили, этой херне много лет уже, если я правильно помню.
Аноним 21/04/17 Птн 16:18:40  977330
>>977275
Открой экзешник в хекс-редакторе, найди Hello, да поменяй. Если строчка короче, то проблем нет.
Аноним 21/04/17 Птн 16:53:58  977357
>>977262
Сам отвечу на вопрос для архивача и гугла. Можно распаковать в два этапа:
1. upx.exe -d -o temp.exe ..\FooBar_install.exe
2. unzip.exe temp.exe -d .\unzip\

Unzip нужно взять отсюда (7-zip не подходит):
ftp://ftp.info-zip.org/pub/infozip/win32/
Аноним 21/04/17 Птн 17:02:05  977361
>>977330
Я так и делал. А что делать если длиннее?
Аноним 21/04/17 Птн 17:44:15  977377
>>977361
Выше анон писал >>977056 о некоторых волшебных программах, но ссылки не дал.
Аноним 21/04/17 Птн 20:33:00  977453
>>977377
Я ссылки не дал, потому что это делается скриптом строк за 20 от силы. Длл и exe с релоками:
1) Идем по релокам, смотрим, не указывают ли адреса, к которым применяются поправки, на строку (без дизасма, тупо взяли адрес и сравнили). Собираем такие адреса. В качестве парсера можно взять pefile для питона.
2) Кладем куда-нибудь новую строку: в хвост существующей секции (если есть место), в заголовок, можно новую секцию создать и т. д.
3) Патчим адреса, собранные на шаге 1 новым адресом строки.
Для exe без релоков:
1) Натравливаем на бинарник IDA, а когда анализ завершится, скриптом выдираем все ссылки на строку (idc.DfirstB/idc.DnextB).
2-3) Аналогично.
Есть случаи, когда все это не работает (хитрые ссылки, ида не распознала весь код, не ссылки из секции данных или слажала еще как-то и т. д.), но чаще всего этого более чем достаточно.
Аноним 21/04/17 Птн 20:49:09  977458
>>977453
>Я ссылки не дал, потому что это делается скриптом строк за 20 от силы.
Ага. И где готовый для тех, кто вообще не в теме, а просто проходил мимо и решил заменить пару строк в бинарнике?
Аноним 21/04/17 Птн 22:02:13  977499
>>977458
> кто вообще не в теме, а просто проходил мимо
Скрипткиддисы нинужны. Но в виде исключения вот тебе самый простой случай для 32-битных бинарников с релоками. И это только патч ссылок, саму строку легко и вручную в хекс-редакторе воткнуть:
https://gist.github.com/anonymous/8deb02d068182119b344d30617c64030
Аноним 21/04/17 Птн 23:38:26  977524
>>977499
>Скрипткиддисы нинужны.
Но ведь я именно он, сижу, венду ковыряю. Все мы когда-то были начинающими.
Аноним 22/04/17 Суб 00:27:58  977550
>>977524
Ну так ты ведь мог и сам написать такое же по описанию на любом известном тебе языке. И написав сам, ты бы приобрел знания и навыки, которые иногда пригождаются. Например, я писал подобное, когда нужно было массово перемещать глобальные инстансы классов из одной секции длл в другую - хуй бы я готовый скрипт под это нашел.
Аноним 22/04/17 Суб 03:32:54  977586
Есть экзешник, в котором где-то каждый раз формируется AES ключ и мне нужно его найти. Как это делается в общих чертах?
Аноним 22/04/17 Суб 03:40:39  977590
>>977586
S-box-ы ищи сигнатурно. Сам или каким-нибудь PEiD+kanal (что сейчас вместо PEiD модно, напомните?).
Аноним 22/04/17 Суб 03:51:46  977591
>>977590
>S-box-ы ищи сигнатурно
Эээ... А можно ли так, чтобы я мог загуглить и найти какие-то туторталы или аналогичные кейсы?

Со своей стороны я глянул туторталы по ollydbg на ютубах, и ВО ВСЕХ они ищут текст из окошка в стиле "Ваш пароль неверный", подогрел с этого. У меня нет никаких окошек, я просто знаю, что где-то в коде есть мой AES ключ.
Аноним 22/04/17 Суб 04:22:16  977592
>>977591
Ну сходи в вики, прочитай описание алгоритма для начала, потом почитай https://en.wikipedia.org/wiki/Rijndael_key_schedule. Потом ищи S-box-ы, потом ищи, кто на них ссылается, т.е., где развертывается ключ. А заодно почитай хотя бы что-нибудь обзорное про поля Галуа. Можешь вот этого дядьку глянуть: https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy (лекции 7-8 или даже весь плейлист целиком). Алсо, по лекциям есть книжка.
> туториалы
Хуй знает. Тут чисто логически понятно, что нужно делать.
> загуглить
Я тебе уже дал кейворд: peid+kanal, ты поискал сигнатуры?
> формируется AES ключ
И вообще, ты весьма расплывчато расписал задачу. Может, тебе вообще не AES-ключ, а ключ для AES нужен? Какие-нибудь рандомные байты, которые используются в качестве входа для KDF?
Аноним 22/04/17 Суб 04:34:53  977593
>>977592
>Ну сходи в вики, прочитай
Почитаю и посмотрю прямо сейчас.
>Хуй знает. Тут чисто логически понятно, что нужно делать.
Ну я вообще ничего не знаю про реверс, я просто пишу на разных языках всякую фигню как хобби.
>Я тебе уже дал кейворд: peid+kanal, ты поискал сигнатуры?
Я даже не знаю, что такое сигнатуры, лол. Вот про PEiD знаю, это тулза для просмотра не упакован ли экзешник (у меня как раз упакован, кстати, но судя потому, что я нагуглил, это не важно в моем случае).
>И вообще, ты весьма расплывчато расписал задачу. Может, тебе вообще не AES-ключ, а ключ для AES нужен?
Нужен именно AES ключ. Смотри, программка обменивается с серверами какими-то своими ключами, потом на основе этих ключей внутри себя формирует ключ, которым потом шифрует свои данные с помощью AES ECB. И чтобы расшифровать данные мне и нужен этот ключ.
>Какие-нибудь рандомные байты, которые используются в качестве входа для KDF?
Тут без понятия вообще.

Задача для меня очень сложная, но я хотел бы разобраться с реверсом на основе этого практического примера. Проблема ещё в том, что экзешник 64битный и в ollydbg не открывается.
Аноним 22/04/17 Суб 06:02:41  977596
>>977593
> разобраться с реверсом на основе этого практического примера
Упаковщик, 64 бита, криптография (да не простая, а AES та же RSA гораздо понятнее для прогуливавших математику, сервер - все вместе это очень хуевый выбор для первой задачи.

> упакован, кстати, но судя потому, что я нагуглил, это не важно в моем случае
В IDA код смотреть гораздо проще, чем в отладчике. Упакованный бинарник смотреть в IDA бессмысленно. Поэтому как бы напрашивается задача "сначала распаковать, если возможно".

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

> Я даже не знаю, что такое сигнатуры
Многие алгоритмы используют различные константы (например, у CRC32 будет полином) и массивы констант (табличка в табличной реализации CRC32 или S-box в том же Rijndael), могут быть какие-то общие для архитектуры куски кода. Все это позволяет определить алгоритм, называется сигнатурами. Ссылки на константы позволяют выйти на использующие их функции, но вручную все проверять заебешься, поэтому есть всякие скрипты и плагины, которые знают дохуя сигнатур, и показывают все, что найдется в указанном бинарнике.
Аноним 22/04/17 Суб 06:27:35  977603
0.png (15Кб, 1159x78)
>>977596
Спасибо за пояснения, да выбор не очень, но мне бы хотелось именно этого. Ксати, есть и 32битный экзешник, так что за 64бита можно не парится. Точно известно, что как минимум два человека написал утилиты, которые этот ключ автоматически вытаскивают без распаковки (делиться, конечно же, не хотят). Пикрилейтед нашел про мой случай.

Проверил peid+kanal и ничего не нашел. Даже не знаю, как подступиться.
Аноним 22/04/17 Суб 06:44:12  977607
>>977603
> ничего не нашел
Ну сам поищи по памяти. Таблицы в вики есть.
Аноним 22/04/17 Суб 06:54:16  977608
>>977607
Ох лол, начал смотреть видео из лекций, что ты сбросил, оказалось что это лекции и преподаватель из моего университета.
Аноним 22/04/17 Суб 07:04:51  977609
>>977608
>Ох лол, начал смотреть видео из лекций, что ты сбросил, оказалось что это лекции и преподаватель из моего университета.
Укачало с первых 10 сек видео.
Кто додумался это снимать ТАК. Там Филтифранк с смартфоном в качестве оператора?
Аноним 22/04/17 Суб 07:07:26  977610
1492834090285.jpg (30Кб, 500x279)
>>977609
Problems?
Аноним 22/04/17 Суб 12:46:05  977677
speak.png (50Кб, 1503x570)
Посоны, есть 2 dll'ки:
-rwxr-xr-x 1 2301552 Feb 8 2016 MathPlayer.dll
-rwxr-xr-x 1 534128 Feb 8 2016 MathPlayerBHO.dll

Можете скачать с сайта https://www.dessci.com/en/dl/MathPlayerSetup.exe и реверсить вместе со мной

Суть такая. Я несколько дней разбирался с интерфейсом OLE/COM для них и пришел к выводу, что нужную мне функцию снаружи не вызвать. Т.е. через публичный интерфейс там можно только менять параметры.

Какая функция мне нужна? Преобразование MathML в VoiceXML.

Работы этих либ выглядит так:
1. Они загружаются, как плагины для IE.
2. Открываешь html страничку, где есть формулы в виде тегов MathML.
3. Плагины сначала рендерят формулы.
4. По формуле можно кликнуть правой кнопкой мыши и нажать "прочитать выражение".
5. Либа запустит голосовой движек в отдельном потоке и прочитает его.

Непонятные моменты: когда они производят конвертацию MathML в VoiceXML -- в момент рендеринга страницы или после щелчка "прочитать выражение"?

Я поставил брейкпоинт на момент создания контекстного меню, но до обработки щелчка по нему еще очень много процессорных инструкций. Деббагинг какой-то не очень удобный, т.к. постоянно сыпятся исключения и то IE сдохнет, то IDA войдет вечный цикл.

Прошу любых советов по теме.

Моя цель такая: преобразовать эти либы в консольные утилиты, где можно запихнуть файл (строку) с MathML и получить в ответ VoiceXML. Для начала нужно понять как оно вообще работает.

Сам я нюфак.
Аноним 22/04/17 Суб 16:02:31  977818
Компилятор не принимает строку call calc_abs. Что надо изменить, чтобы всё работало?

.data
N equ 2
minuend db 10
carry db 0
deduction db 7
.code
sub_sign proc
mov al, deduction
sub minuend, al
jnc no_carry
neg minuend
jmp end_p
no_carry: jns no_sign
neg minuend
jmp end_p
no_sign: jno no_overflow
mov carry, 0ffh
call calc_abs
no_overflow:
end_p: ret
sub_sign endp
Аноним 22/04/17 Суб 19:20:25  977938
>>977818
> Компилятор не принимает строку call calc_abs.
> Что надо изменить, чтобы всё работало?
Написать такую функцию?

>>977608
> лекции и преподаватель из моего университета
Ты уверен, что учишься в Германии?
Аноним 22/04/17 Суб 21:33:16  978007
>>977264
чувак, она не для учебы. Она для работы. С группами кольцами и т.д. Это полный бесплатный, кросплатформенная херовен для объемных вычислений. Более грубый аналог Maple. один из кучи вариантов (на википедии есть)
а еще есть группа программ для численных вычислений , матлаб и прочыее прочее. всё оно для своих целей.
Но не для обучения. Грубо говоря навароченные калькуляторы.
В математике научиться чему то можно только многократно прорешивая руками. чем больше тем лучше. В мое время препод матрицы 5х5 в квадрат умел возводить без проблем. А так же на ходу считать для адекватных размерностей определеители и прочую херь.
Хочешь научиться - берешь задачи и решаешь решаешь решаешь. Заебные места с вычислениями конечно можно в любой из софтин (хоть тупо самому написать) реализовать, чтоб время не тратить. но надо идею и ход мыслей всегда понимать.
Аноним 22/04/17 Суб 21:34:41  978008
>>977361
по сути, смотришь чуть выше. ишешь где вызывается адрес начала строки. вконце где нибудт пишешь свое, и подменяешь в месте вызова адрес.
Аноним 22/04/17 Суб 21:38:14  978010
>>977458
для полных нулей, качай с трекеров exelab dvd, там видеокурс, или гугли Нарваха Рикардо. Введение в крэкинг с нуля
вообще, в шапке инфы предостаточно, достаточно вечерок посидеть, и такие банальные задачи проблемой не будут.
Аноним 22/04/17 Суб 22:18:47  978033
>>977938 Помоги, если можешь
.data
N equ 2
minuend db 10
carry db 0
deduction db 7
.code
sub_sign proc
mov al, deduction
sub minuend, al
jnc no_carry
calc_complement:
neg minuend
jmp end_p
no_carry: jns no_sign
neg minuend
jmp end_p
no_sign: jno no_overflow
mov carry, 0ffh
call calc_abs
no_overflow:
calc_abs proc
mov si, cx
dec si
test byte ptr [bx][si], 80h
jz @@exit
call calc_complement
@@exit: ret
end_p: ret
calc_abs endp

Аноним 23/04/17 Вск 04:31:55  978210
Допустим, я знаю, что программа обращается ко всем файлам в папке, и например расшифровует один из них "data.dat". Как поставить брейкпоинт на именно этот момент?
Аноним 23/04/17 Вск 09:16:39  978232
>>978210
>Как поставить брейкпоинт на именно этот момент?
CreateFileW с условием, что имя файла соответствует "data.dat".
Аноним 23/04/17 Вск 12:44:56  978286
>>960640 (OP)
>Для ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:
Блин, они все ущербны.
Вот вижу я структуру, которая по смещению 0х30 содержит PFILE_OBJECT, а дальше что? Все эти сайты никак не помогают это найти. Это просто статические страницы.
Хочу написать нормальный сайт с возможностью поиска по списку смещений и их содержимому. То есть вводишь типа список используемых смещений "0x18 0x10 0x8", или например "0х10 POBJECT_TYPE 0х30 PFILE", а он тебе "Это возможно структура struct_name_1, struct_name_2". Кто со мной?
Аноним 23/04/17 Вск 14:37:57  978409
>>978286
> сайты
Но зачем? Дали им windbg, дали команду dt, что еще нужно?
Аноним 23/04/17 Вск 14:40:45  978411
>>978409
>Дали им windbg, дали команду dt, что еще нужно?
Как с помощью dt найти
>>978286
>То есть вводишь типа список используемых смещений "0x18 0x10 0x8", или например "0х10 POBJECT_TYPE 0х30 PFILE", а он тебе "Это возможно структура struct_name_1, struct_name_2".
???
Аноним 23/04/17 Вск 14:45:01  978413
>>978411
>???
То есть мне нужен поиск названия структуры по частично известному содержимому, а то и вовсе частично известному списку смещений.
Аноним 23/04/17 Вск 14:47:38  978418
>>978413
> по частично известному содержимому, а то и вовсе частично известному списку смещений
А, все, понял проблему. Тут windbg не поможет, да.
Аноним 23/04/17 Вск 16:45:23  978506
>>978413
Записать всё в базу данных. Только данные подготавливать муторно и долго.
Аноним 23/04/17 Вск 17:00:10  978526
>>978232
Можешь показать, как ставиться такой в олли?
Аноним 23/04/17 Вск 17:27:28  978550
>>978506
Ага. Записать, написать скрипты обработки, поиска и удобный интерфейс.
>Только данные подготавливать муторно и долго
Это как раз автоматизируется скриптами. Никто руками забивать все 9000 структур не будет.
Аноним 23/04/17 Вск 17:40:29  978558
>>978526
Ctrl+F2
Погугли, как юникод-строку в OllyDbg проверять. Вроде надо UNICODE добавить перед строкой.
Аноним 23/04/17 Вск 17:52:54  978566
Есть dll. Хочу в IDA (или в чем-то другом) узнать какие ключи реестра она может читать?

Мой план действий такой:
1. Гуглю список winapi функций, которые читают реестр. Кстати, их много там?
2. Ищу все их упоминания в dll.

Может эта задача как-то проще решается?
Аноним 23/04/17 Вск 18:28:06  978591
>>978566
>Кстати, их много там?
Штук 10.
>Ищу все их упоминания в dll.
А потом придётся выяснять, какие параметры у функций реестра, чтобы понять, какие ключи читаются. А параметры могут (и будут) формироваться динамически, и не факт, что удастся понять из кода без его запуска.
>Может эта задача как-то проще решается?
Что за библиотека то?
Аноним 23/04/17 Вск 18:55:58  978614
хочу вытащить из одной игрушки формулу расчета урона в зависимости от прокачки
это из вашей области?
Аноним 23/04/17 Вск 18:59:47  978619
regopen.PNG (29Кб, 691x404)
>>978591
>Что за библиотека то?
Для чтения формул. См. скриншоты выше. Правда, это уже другая версия. С другим COM интерфейсом.

Запустил под Sandboxie ее хост-программу. Анализирую куда оно писало. Чтобы понять есть ли там защита вообще или нет. В интерфейсе есть функции для работы с лицензиями, но пока не ясно используются ли они в данной версии.

С реестром dll'ка работает.
Аноним 23/04/17 Вск 19:00:36  978620
>>978614
Морально готовься потратить на это пару месяцев.
Аноним 23/04/17 Вск 19:14:36  978630
>>978566
> узнать какие ключи реестра она может читать?
1) Пишется минимальный хост, берется ProcMon/RegMon от SysInternals. Так оно быстрее всего будет.
2) Можно хукнуть RegQueryValueExW/RegSetValueExW и подобные, анализировать адрес возврата, проверяя, из длл ли оно вызвано. Есть готовые утилиты для трейса API.
Аноним 23/04/17 Вск 20:53:11  978693
>>978550
Вот решение похожей задачи, но без сайта и вообще без каких-либо данных, только код
https://redplait.blogspot.fr/2011/02/partial-structs-matcher.html
Аноним 23/04/17 Вск 22:16:01  978735
arm.PNG (79Кб, 1100x633)
Посоны, скомпилил этот плагин:
https://github.com/alexhude/FRIEND
Осталось сделать к нему конфиг для Intel (ну или другой процессор, если вам надо). Не хотите со мной?

Автор захерачил только для ARMv8.
Аноним 23/04/17 Вск 22:17:55  978737
>>978735
>8к строк xml-параши
нет, спасибо
Аноним 23/04/17 Вск 22:23:29  978739
>>978737
Ну а я попробую сделать. Заодно прочитаю 4700 страниц мануала Intel. Всегда мечтал.
Аноним 23/04/17 Вск 22:49:05  978762
>>978735
Вот если бы оно чтение/изменение отдельных битов в memory-mapped-регистрах документировало - была бы сказка, а референс по инструкциям нахуй не нужен. Посмотреть документацию по регистру в мануале я и сам могу.
Аноним 23/04/17 Вск 23:10:14  978775
>>978693
Блин, а ведь даже PDB дампить нечем. pdbdump пишет The specified module could not be found и вообще древний как говно мамонта, Dia2Dump выдаёт нечитаемую хуиту, pdbxtract гуевый и вообще проёбывает типы, pdbripper врлде норм, но тоже гуевый, pdbdump.py требует какой-то модуль winnt, который я не нагуглил. Везде хреново.
Аноним 24/04/17 Пнд 00:14:54  978832
>>978775
Вбей на github в поиске cvdump.
Аноним 24/04/17 Пнд 00:17:55  978840
>>978735
Эта фигня так и не стала показывать мне хинты. Если кто хочет потестить, то можете скачать отсюда билд:
https://github.com/kamino/FRIEND/tree/multios-port/bin

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

Разбираться в ее кишках лень.
Аноним 24/04/17 Пнд 00:30:06  978852
Офигительная программа:
http://www.rohitab.com/apimonitor
Как софт от Руссиновича, только еще лучше.
Аноним 24/04/17 Пнд 00:43:00  978858
>>978832
И как превратить её высер в человеческий вид?
Аноним 24/04/17 Пнд 00:44:43  978860
>>978858
Опенсорс жи - сразу высирай то, что требуется.
Аноним 24/04/17 Пнд 02:35:17  978904
>>978860
Осталось разобраться в 400+ кб сорцов и переписать половину, чтобы выдавала правильно. Делов на пару дней, ага, один из которых я буду учить плюсы, на которых ни строки не написал.
Аноним 24/04/17 Пнд 03:01:50  978911
>>978904
Ах да, оно ещё и не компилится, о чём и написано в репозитории. Так что перед переписыванием его ещё дописать нужно. И это явно не на пять минут, иначе кто-нибудь эту задачу уже выполнил бы.
Аноним 24/04/17 Пнд 03:02:08  978912
Нихуя не понимаю. Список нубских вопросов:
1. Когда ищешь значения в Cheat Engine и находишь адрес вида 00000000, то это адрес RAM, который занимает это знание, правильно?
2. Ollydbg в основном окне показывает дизасемблированный код экзешника не запуская его? То есть по сути это то же, что и открыть экзешник в текстовом редакторе и вручную перевести все в ассемблерный код?
3. Если всё же OllyDbg запускает экзешник, то как этот экзешник может работать правильно, когда в при настоящем запуске в него передаются команды вроде --command и подтягиваются библиотеки?
4. Если экзешник запускается, то зачем говорят, что нужно его распаковать перед дизасмом, если он в RAM находится в распакованном виде? Он же сам распаковывается при запуске, разве нет?
5. Если в запакованной программе есть ключ, то можно ли его вытащить без предварительной распаковки? Можно ли автоматизировать вытаскивание этого ключа при каждом запуске этой запакованной программы (написать небольшую утилиту)?
6. Ключ будет хранится в регистрах вроде EIX при выполнении какой-то строчки кода, правильно? А если программа запакована?
Аноним 24/04/17 Пнд 07:29:56  978936
>>978912
Ты почитай какую-нибудь книжку для начинающих. Много вопросов отпадёт. "Техника отладки программ без исходных текстов", например.
1. Да. Если придираться к словам, то это виртуальный адрес, он может быть и не в RAM.
2. Ollydbg запускает его, но останавливает выполнение программы (в зависимости от настроек). Поэтому нет, это не одно и тоже.
3. Экзешник запускает операционная система, Ollydbg здесь выступает как Explorer, то есть создаёт процесс, но Ollydbg запускает его как отладчик (такие опции есть при создании процесса, также можно подключиться к уже запущенному процессу). Поэтому операционная система уведомляет отладчик о событиях, таких как загрузка/выгрузка dll, создание/удаление потока, исключения в программе и некоторые другие. Это не эмулятор, это приложение запускается и работает так же, как и любое другое. С некоторыми нюансами, про которые уже написал.
4. Программа запаковывается для защиты от статического анализа, т.е. без запуска приложения (в Ida, например). При динамическом, т.е. когда программа запускается в реальной среде, проще противостоять отладке, поэтому и пакуют. Не каждая программа упакована, соответственно, не каждую надо распаковывать. Не уверен на счёт правильности терминов, но общая идея, надеюсь, понятна.
5. Нет, нельзя. Упаковка - это, с некоторыми оговорками, архив. Ты не сможешь даже узнать, что в нём, пока не распакуешь. Да, можно, даже в отладчике можно скрипт написать, есть соответствующий плагин для Ollydbg.
6. Где угодно. Зависит от того, как программист написал это. Может в секции, может в коде, в регистрах он будет, если этот участок кода написан на ассемблере, иначе как решит компилятор. Но в регистр попасть он откуда-то должен.
Аноним 24/04/17 Пнд 07:33:09  978939
>>978912
1. Не совсем правильно. Это виртуальный адрес. Виртуальные адреса создают для процесса иллюзию, что кроме него и куска системы в памяти больше ничего нет.
2. OllyDbg - отладчик, отладчики запускают код. Но OllyDbg останавливается еще в системных библиотеках, до того, как код из exe получит управление. И нет, если попросишь, олька тебе покажет дизасм хоть от аллаха, это не обязательно будет код из exe.
3. Это и есть настоящий запуск. Библиотеки подтягиваются, аргументы командной строки можно указать. Процесс точно так же работает и управляется системой, как и при запуске без отладчика (есть некоторые исключения, их используют для детекта отладчика).
4. Упакованный exe - это тебе не архив. Он запускается, выделяет память (или не выделяет), распаковывает или расшифровывает сам себя, копирует распакованные данные поверх себя (или не копирует). Поэтому чтобы увидеть настоящий дизасм, а не код упаковщика и мусор в виде упакованного кода, нужно распаковать или дождаться, пока само распакуется. Очевидно, что если ты хочешь начать отладку с самого первого байта распакованной программы, просто подождать не получится. Алсо, многие протекторы не держат код в рам целиком в распакованном виде, а распаковывают по требованию и/или выполняют код на вм.
5. Да можно, но чтобы узнать как там все устроено, тебе нужно видеть настоящий код.
6. Регистров EIX в x86 нет, в регистрах подолгу ничего не хранится, они нужны для выполнения операций над данными. Ключ будет лежать в памяти. А может и не будет.
Не перестаю проигрывать с треда. Скрипт-кидди и ньюфаг, полезший пилить читы.
Аноним 24/04/17 Пнд 07:34:49  978940
>>978936
Ну епт. Всю ночь пост висел, а мы одновременно написали почти одно и то же.
Аноним 24/04/17 Пнд 08:10:16  978944
>>978936
>>978939
Благодарю, может и правда стоит почитать книжки.
Аноним 24/04/17 Пнд 17:36:10  979215
>>978939
>Скрипт-кидди и ньюфаг, полезший пилить читы.
И сажа-фаг, который пилит полезные советы и зачем-то при этом сагает тред.
Аноним 24/04/17 Пнд 18:31:18  979235
>>978911
В общем нашёл нормальный проект, допиленное говно мамонта. Требует msdia120.dll, но не особо об этом распространяется, можно просто скачать её из интернета и кинуть рядом, так как с разными студиями ставится разная версия этой либы, у меня она была msdia80.dll, от чего программа и помирала с невнятным The specified module could not be found.
https://redplait.blogspot.fr/2010/09/patched-pdbdump.html
Аноним 24/04/17 Пнд 22:46:06  979380
Есть ли какая-нибудь удобная программа для поиска бинарной строки во всех файлах внутри директории?

Что-нибудь такое:
findhex "F4CD5F10" c:\windows\system32\

Гуглится только софт для поиску внутри 1 файла. Не хочу начинать скрипты писать.
Аноним 24/04/17 Пнд 23:08:08  979405
>>979380
grep (но он под винду обычно без -P собран, а -P желательно иметь, чтобы паттерн писать без боли), bgrep (но он не умеет в glob, просто обходит указанную директорию рекурсивно). Поэтому проще всего все же написать примерно 4 строки на питоне под себя. А так, я обычно просто фаром ищу, он умеет в хексы.
Аноним 24/04/17 Пнд 23:34:47  979427
>>979380
Total Commander?
Аноним 25/04/17 Втр 02:55:21  979522
Косноязычный диктор и плохое качество видео, но самый подробный и правильный (с точки зрения обучения с нуля) гайд на дебаг с олли
https://www.youtube.com/playlist?list=PL59fvn5FIiQG0CrnALLgXzdpDTOk0hrz2
Аноним 25/04/17 Втр 06:45:33  979538
>>979522
Как мне кажется, это наихудший способ обучения. Лучше всего не видео, а текстовая статья. Гугл выдал мне это https://exelab.ru/f/index.php?action=vthread&forum=5&topic=14847
Можно погуглить автора этих статей Рикардо Нарваха (Ricardo Narvaja).
Аноним 25/04/17 Втр 07:54:42  979555
1493096119613.jpg (165Кб, 813x810)
>>979538
Не согласен, насчёт видео. Мне НАМНОГО легче заходит такой способ, даже с корявым диктором.

Но если нравится текстовая версия, то вот тут есть ещё более удобная в одном файле https://yadi.sk/d/EGv70o9F3ChD9N
Добавьте в шапку на перекате, для нуфагов самое то.
Аноним 25/04/17 Втр 11:15:43  979656
Подкину еще канал, на полноту какую-то парниша не претендует, но мне оче нравится
http://liveoverflow.com/
https://www.youtube.com/channel/UClcE-kVhqyiHCcjYwcpfj9w
У него там в видео по асму есть ссылки на какие-то сайты, сам я нихуя не понил, но вроде как игровые задачки по RE
Аноним 25/04/17 Втр 13:39:08  979779
>>979235
Блин, а оно не умеет в безымянный union, то есть структуру типа
typedef struct _QUAD {
union {
__int64 UseThisFieldToCopy;
double DoNotUseThisField;
};
} QUAD;
Превращает в
struct _QUAD {

// non-static data --------------------------------
/<thisrel this+0x0>/ /|0x8|/ __int64 UseThisFieldToCopy;
/<thisrel this+0x0>/ /|0x8|/ double DoNotUseThisField;
};
// <size 0x8>
Окей, у них одинаковое смещение, нужно детектить по нему и впихивать в юнион. Заодно перепишу для дампа в базу данных напрямую (SQLite, а оттуда уж перелью в мускул).

Ещё одна проблема- проёб именованных union, она их записывает как union <unnamed-tag> u и всё, концов её не найти. pdbripper выдаёт им номера, хотя, как по мне, лучше их встроить, так как все встреченные мною такие объединения были встроены.

Какие ещё заумности есть в структурах, на которых может споткнутся утилита?
Аноним 27/04/17 Чтв 16:05:26  981040
a.png (32Кб, 489x181)
В посте присутствует слово из спам-листа
какое?
Аноним 27/04/17 Чтв 17:10:31  981071
>>981040
>какое?
Выясняй методом половинного деления. И лучше на тестовой доске.
По вопросу- многозадачность работает на прерываниях. Системный таймер генерирует прерывание, которое прерывает работу любого пользовательского потока и запускает системный код, который и определяет, можно ли дальше работать программе или ей уже хватит.
Аноним 28/04/17 Птн 16:23:17  981527
>>960640 (OP)
Как переделать программу одной ОС в программу другой ОС?
Вот, допустим, у меня программа gcc для линукса. Хочу я её перенести на мою собственную ОС. По сути надо не сильно изменить. Ведь да? Надо только поменять сигнатуру исполняемого файла, если надо, и заменить системные вызовы на вызовы специальных процедур, которые будут эмулировать системные вызовы в Линуксе. Я всё учёл?
Аноним 28/04/17 Птн 16:29:22  981529
>>981527
Всё учёл, кроме того, что люнЮфъсь — это не операционная система, а прежде всего религия.
А так-то да, зделой POSIX API, купи торговую марку, догадайся как попадать в новостные ленты (это вот не так легко, как кажется) и вперёд, у тебя есть своя ОС.
Аноним 28/04/17 Птн 16:30:58  981531
>>981527
>Вот, допустим, у меня программа gcc для линукса.
У неё есть исходные коды, изменяй @ компиляй.
>Надо только поменять сигнатуру исполняемого файла, если надо
Сами форматы исполняемых файлов отличаются, так что не всё так просто.
Целевую программу и ОС не назовёшь, или нам дальше давать общие советы?
Аноним 01/05/17 Пнд 20:10:15  983183
1.PNG (130Кб, 1206x672)
2.PNG (104Кб, 1372x727)
Репост из мертвого треда
Неофит ИТТ. Поясните пж за следующую вещь. В hex-редакторе при анализе структуры PE файла (pic 1) вижу, что VA OEP = 10212, а ImageBase = 4194304, тогда абсолютный адрес точки входа = 4194304 + 10212 = 4204516 = 0x004027E4, и вроде как в дебаггере именно это число я и должен увидеть помеченным как entry point, но чому то в ollyDbg2.01 я вижу (pic 2) 0х00CE27E6. Я неправильно считаю точку входа? Неправильно трактую значение адресов в левом столбце в ollyDbg? Или еще что то делаю не так?

Алсо, я понимаю, что в olly я вижу образ процесса, а не дизассемблированный исполняемый файл, и загрузчик может выравнивать образ по размеру страницы оперативной памяти, но не настолько много ж блеть. Или настолько?
И да, исполняемый файл не упакован/не зашифрован, т.к. написан мной.
Аноним 01/05/17 Пнд 20:39:19  983230
>>983183
Во-первых, в ольке ты видишь EP = 0xce27e4, а не 0xce27e6. Во-вторых, если в образе есть релоки, и линкер поставил в IMAGE_OPTIONAL_HEADER.DllCharacteristics флаг IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE (в современной студии /DYNAMICBASE у линкера по умолчанию), то система считает себя вправе использовать ASLR для образа, т.е., выбирать рандомный базовый адрес.

На первом пике: DllCharacteristics лежат по 0x15e, это 0x8140 = ...DYNAMIC_BASE, ...NX_COMPAT, ...TERMINAL_SERVER_AWARE.
Аноним 01/05/17 Пнд 20:47:38  983239
>>983230
Понял, спасибо.
Аноним 01/05/17 Пнд 20:58:35  983252
>>983183
>>983230
Бля, ну вот откуда вы все это умеете? (
Аноним 02/05/17 Втр 12:55:50  983493
>>983252
Я давно догадывался, что тут сидит норот с форума RSDN.
Аноним 02/05/17 Втр 13:01:04  983495
4.png (73Кб, 1227x620)
Поясните суть дауну, пожалуйста. Ковыряю туториал чит энджина, часть с поинтерами.

Нахожу поинтер и смещение (здесь равно нулю), которые всегда правильно указывают на значение, даже после перезапуска программы (на скрине правильное значение 325). Решаю глянуть в память, перехожу по актуальному адресу (01892950) и что я вижу? А нихуя я не вижу.

1. Почему в памяти по адресу 01892950 нет значения 325?
2. Если прочитать значения оффсета 00634630 в какой-то левой программе, то в нем не будет адресса 01892950. Почему так?
3. 01892950 это значение, которое должно лежать в (00634630 + BaseAddress)?
Аноним 02/05/17 Втр 15:13:32  983559
>>983495
>1. Почему в памяти по адресу 01892950 нет значения 325?
325 в hex это 0x145. А теперь смотри, что у тебя в памяти.
Аноним 02/05/17 Втр 16:20:43  983605
>>983559
Ну охуеть! И правда.

Теперь остаются остальные вопросы. Я написал маленькую тулзу, которая читает память.

Пик1. Читаю значение по финальному адресу 017F29E0, вытаскиваю правильное 545. Тут всё ок.

Пик2. Читаю значение по оффсету 00634630 в надежде получить свой финальный адрес (в нем же должен храниться указатель, разве нет?), и получаю совсем не то значение. Что я делаю не так?
Аноним 02/05/17 Втр 16:21:06  983606
7.png (29Кб, 689x271)
8.png (37Кб, 692x270)
>>983605
Уууу, отклеилось
Аноним 02/05/17 Втр 16:59:35  983621
>>983606
Всё, сам понял. Там правилольное значение, просто в десятичной системе.
Аноним 02/05/17 Втр 17:03:23  983624
>>983606
Пздц. Это весь тред такой или всё-таки стоит почитать?
Аноним 02/05/17 Втр 17:05:22  983628
>>983624
Ой, иди нахуй, я только вкатился и пытаюсь разобраться.
Аноним 02/05/17 Втр 20:57:26  983761
>>983624
В прошлом анон на асме на голом железе что-то рисовал, а в этом только шапку, если вдруг чего оттуда не читал.
ОП
Аноним 02/05/17 Втр 21:19:23  983783
Никто случаем не поделится парой логин-пароль для базы crackme на exelab по ссылке https://exelab.ru/crackme/

Или мб есть какой нибудь другой ресурс с кучей crackme и мануалом по их прохождению? Язык можно русский или английский.
Аноним 02/05/17 Втр 21:21:14  983786
>>983783
Всё, отбой. Это просто я тупой.
Аноним 02/05/17 Втр 22:27:39  983820
Допустим, я дизассемблировал программу и мне нужно заменить команду
cmp eax, 0
на
cmp eax, ebx

Как мне это сделать в ida pro? Что то там по дабл клику только eax можно заменить на другой регистр, но вот константу никак. Или в ida pro нет такого функционала, потому что при некоторых заменах придётся учитывать появившиеся сдвиги, ведь в машинном коде размер команды может измениться? Тогда мне, я так понимаю, остаётся только вручную править байты в hex редакторе. И тут вопрос, как мне понимать, что писать, чтобы получить нужные команды, регистры и тд? Типа,
cmp eax, 0 === 83 f8 00, ага. Эмпирическим путём я установил, что cmp транслируется в 0x83f, 8 означает eax (9 уже почему то ecx), а 00 - константный байт, но из каких соображений мне вбивать необходимую команду?
Аноним 02/05/17 Втр 22:33:36  983826
>>983820
Кажись нашёл онлайн конвертер. Втыкать NOP на место лишних байт нормальный подход, или плохой тон? И еще, Это сейчас мне повезло, и
cmp eax, eax занимает 2 байта, а cmp eax, 0 - 3. В другой ситуации мне придётся сдвигать машинный код на n байт вправо от места вставки? Я так понимаю, это может отразиться негативно, ведь в программе есть ссылки на константные переменные. Или если константные переменные в секции .data, а хуячу я в .text, то можно не ссать и вообще полный вперёд?
Аноним 02/05/17 Втр 22:37:18  983829
>>983820
По даблклику там переименование регистров, просто для удобства чтения дизасма. Сам код от этого не меняется. А чтобы пропатчить код есть Edit->Patch program->Assemble, но это пропатчит только базу. Чтобы сохранить изменения, там же есть Apply patches to input file.

>>983826
Втыкать нопы норм. Единственная проблема с патчами - релоки. Если ты правишь код, на который есть релоки, нужно убирать соответствующую запись из релоков, если втыкаешь абсолютый адрес - добавляешь запись. Если релоков нет, и >>983230 ASLR отключен, то просто патчишь.
Аноним 02/05/17 Втр 22:39:30  983832
>>983829
Всего 5 минут в этом вашем RE и эти релоки уже начинают мне надоедать. Чем чревато просто уебать в pe optional header в dll characteristics аргумент, в который не входит dynamic relocation? Зойчем он вообще нужен? Или в особо больших программах, которые потребляют много ОЗУ это будет полезно?
Аноним 02/05/17 Втр 22:52:16  983839
>>983832
Для .exe можешь спокойно поставить флаг relocation stripped в IMAGE_FILE_HEADER. Для .dll без релоков никак.
Аноним 03/05/17 Срд 02:00:09  983921
Это снова я >>983495

Что обозначает такая запись "App.exe"+016751A0 ? Это значит базовый адрес "App.exe" плюс смещение, или просто смещение от нуля?
Аноним 03/05/17 Срд 02:23:04  983936
>>983921
У нормальных людей да, это базовый адрес модуля со смещением. Что там в читенжине наворотили, смотри у них в мануале.
Аноним 03/05/17 Срд 02:39:16  983942
>>983936
Да и в читенджине должно быть основа плюс смещение... Вот только у меня ничего не выходит, теперь уже в 64битном приложении. Основа у него 1400000000 и даже без смещения это уже больше, чем нужно.
Аноним 06/05/17 Суб 22:48:40  986094
Можно ли как-то Hex-Rays заставить показать псевдокод ассемблерного листинга структурной обработки исключений? Просто он выдаёт код как-будто никаких try с except вообще не существует. А то я скоро Asm начну понимать.
Версия Ida 6.8, по понятным причинам.
Аноним 06/05/17 Суб 23:27:44  986121
>>986094
Насколько я знаю, нельзя. Продолжай подглядывать в дизасм. Алсо, можешь набыдлокодить плагин для простых случаев.
Аноним 07/05/17 Вск 00:29:37  986156
>>983839
Зачем нужны релоки, если можно компилить в position independent code?
Аноним 07/05/17 Вск 00:49:42  986175
>>986156
PIC тоже содержит релоки, но только для секции DATA и по одному перемещению на каждую переменную (а не на каждое обращение).
Аноним 07/05/17 Вск 00:52:01  986177
>>986156
PIC медленнее для 32-битного кода - приходится жертвовать регистром, а их и так мало.
Аноним 07/05/17 Вск 08:23:03  986221
>>986213
> Для прыщей есть книжка Линкерс-анд-лоадерс, а для спермы что есть?
Книжка линкерс энд лоадерс (там PE вниманием не обходят, да и базовые принципы везде одинаковые), книжка виндоуз интерналс, спека формата PE и многочисленные статьи.
Аноним 08/05/17 Пнд 02:56:40  986660
Допустим есть строка с байтами из памяти cc 02 77 5e e7 02 02 10 14 00 0e 00 88 18 00 и тд. Как понять, где заканчивается одно значение и начинается другое? Тут могут быть строки, 1-байтные, 2-байтные, 4-байтные переменные, я хз.
Аноним 08/05/17 Пнд 03:04:15  986663
>>986660
Нужно найти код, который работает с этими данными. Например, поставить на эти данные хардварную точку останова при чтении/записи.
Аноним 08/05/17 Пнд 03:06:22  986664
>>986663
У меня программа запакована. Допустим, я часть этих данных экспериментально могу узнать просто меняя данные. Например, я так вытащил имя пользователя, длину имени и еще пару значений. Но что с остальными, если доступа к нормальному коду нет?
Аноним 08/05/17 Пнд 03:15:02  986665
>>986664
Можно менять данные и смотреть поведение программы. Можно собрать больше таких данных, и на основе статистики что-то разбирать. Все же можно ставить бряки и смотреть код - обращаться к ним будет уже распакованная программа, если это не протектор, конечно. Можно разбирать частные случаи (как твоя длина имени) - искать длины/смещения, указатели, числа с плавающей точкой, круглые/известные/магические числа. Магии, которая позволит однозначно определить всю структуру на основании одного куска данных нет.
Аноним 08/05/17 Пнд 03:17:42  986666
>>986665
>Магии, которая позволит однозначно определить всю структуру на основании одного куска данных нет.
А жаль, именно это мне и нужно было. Игрушка онлайновая, размер огромный, библиотек тысячи, клиент запакован... тут брейкпоинты не помогут.
Аноним 08/05/17 Пнд 04:46:50  986676
>>986666
Тебе что, её всю отреверсить нужно как мне винду?
Раз нет, то ищи бряками то, что нужно.
Аноним 08/05/17 Пнд 04:49:15  986677
>>986676
Я не понимаю, как бряк будет работать с онлайновым приложением. Если связь прервется, то оно просто упадет, это же ММО.
Аноним 08/05/17 Пнд 16:57:09  986856
>>986677
Если оно падает при каждом разъединении, то это лол.
Впрочем, никто не говорил, что будет легко.
Аноним 08/05/17 Пнд 17:00:57  986860
>>986677
Можно просто в журнал писать при брейкпоинте, а не останавливаться; можно трейс запускать на некоторое время. Олька умеет вроде.
Аноним 08/05/17 Пнд 17:21:48  986876
4.png (170Кб, 482x369)
>>986856
>оно падает при каждом разъединении
Ну не просто обваливается, а культурно выдает красивую ошибку с кнопочкой ОК, после нажатия на которую процесс завершается.

>>986860
Чую, что это уже высший пилотаж, мне такое не понять без детальных пояснений.

Но суть в том, что я уже написал все то, что мне нужно - программку, которая из памяти итой игры выдирает нужный кусок, парсит его на состав группы, с сайтов собирает рейтинг по именам и выдает эту инфу в красивый списочек. Проблема только в том, что игра периодически, если долго ничего не происходит, начинает записывать поверх нужных адресов какую-то левую инфу, так что иногда в списке появляется что-то вроде OIUYaiq3q222ItGI_yG. Ну и похуй. А, еще работает только с 64битным клиентом, надо дописать 32битные оффсеты, но мне лень.
Аноним 09/05/17 Втр 10:18:21  987267
>>960640 (OP)
ЗА ЩО во многих исходных кодах используется синтаксис AT&T? Он же неудобный. Или авторы специально нам дают код в AT&T, а сами используют intelовский синтаксис?
Аноним 09/05/17 Втр 13:19:20  987404
>>960640 (OP)
дайте ссылку на код работающего кернеля, который переводит в 64-битный режим.
Аноним 09/05/17 Втр 17:30:14  987661
>>987404
Гугли Windows Research Kernel :3
Аноним 11/05/17 Чтв 20:44:38  988972
Бампну прогрессом реверса WRK что ли...
Убавил ntoswrk.lib на 520кб, вышло 922кб кода. Брал самое лёгкое, дальше сложнее. Видимо, работа эта непосильна для одного человека за разумное время. Продолжаю.
Аноним 11/05/17 Чтв 21:35:49  989000
Как в ollydbg поставить БП на нажатие кнопки?
Аноним 11/05/17 Чтв 22:47:31  989024
>>989000
F2.

Не лезь с тупыми вопросами, дебил, блядь, пока базу не освоил самостоятельно.
Аноним 11/05/17 Чтв 22:58:00  989029
>>989000
Ну примерно так и ставить, да. Только условный, на оконной процедуре, по сообщению WM_KEYDOWN и с проверкой wParam на нужную кнопку.
Аноним 11/05/17 Чтв 23:08:23  989033
>>989024
Пидорас, я знаю хот кеи. Ты дал очень точный, но абсолютно бесполезный ответ, как в анекдоте про неудачливого парашютиста и программиста. Я имел в виду, как мне в интерфейсе ollydbg найти кнопку (например, по тексту на ней), и воткнуть БП на событие нажатия.
вот этот господин >>989029 дал информативный ответ на вопрос, за что ему спасибо. правда я уже делал это, просто забыл как, но всё равно спасибо.

Аноним 11/05/17 Чтв 23:28:43  989035
>>989033
View->Windows. А раз ты говорил про кнопку интерфейса, то брейкпоинт надо на WM_COMMAND ставить.
Аноним 12/05/17 Птн 04:30:19  989106
>>989033
Когда я в подходящем настроении, я не могу пройти мимо тупых пидорасов в /pr/, не назвав их тупыми пидорасами. У меня хоть и был ДИАЛАП, когда я делал первые попытки писать кейгены, но я себе не мог позволить задать ньюфажный вопрос, не прошерстив архив статей на жестком диске на предмет информации, которая бы помогла мне самостоятельно найти ответ на свой вопрос. В каждом, сука, треде регулярно появляются аноны, которые путают форму ответа в зекаче с поисковой строкой.

Раньше трава была зеленее и на форумах ридонли за такое давали.
Аноним 12/05/17 Птн 10:25:30  989147
>>989106
> на форумах ридонли за такое давали
Пиздишь. Мне в конце 90-х в IRC, не жалея своего времени, объясняли базовые, в общем-то, вещи, на разный лад, пока я не понял. И я не помню, чтобы на каком-нибудь васме давали ридонли за вопросы по теме. Или, может быть, ты сидел в каком-нибудь ололо-преватном какерском форуме среди илиты, которая возгордилась и не могла снизойти?
Аноним 13/05/17 Суб 17:04:54  989990
>>960640 (OP)
дайте ресурс, где написано как устроены команды x86_64, где там префиксы, коды команд и всё такое.
Аноним 13/05/17 Суб 17:10:58  989992
Посоветуйте какие-нибудь программы для реверса закрытых файловых форматов. Не исполняемые, тупо хранятся данные. Под линукс желательно.
Аноним 13/05/17 Суб 17:28:05  990001
>>989990
Говоришь в гугле Intel Software Developers Manual. В начале instruction set reference будет глава про форматы, в конце - овердохуя таблиц.

>>989992
010 editor и моск. Можешь посмотреть на Kaitai Struct, но я лично считаю говном и сам кайтай, и его автора разумных доводов приводить не буду.
Аноним 13/05/17 Суб 17:47:53  990008
>>990001
>Говоришь в гугле Intel Software Developers Manual
Сложна. Короче, я просто через хекс-эдитор проверю как компилит фасм в разных комбинациях операндов и возьму результат. Я делаю компилятор своего личного языка программирования.
Аноним 13/05/17 Суб 17:55:39  990012
>>990008
> делаю компилятор своего личного языка программирования
Можешь поступить, как авторы PowerBasic - генери асм-код, используй fasm для сборки (алсо существует fasm as dll, гуглится). Ну или осиль LLVM, это гораздо более правильный подход.
Аноним 13/05/17 Суб 17:56:43  990014
>>990001
>Kaitai Struct
Наткнулся на это когда гуглил. Совсем говно? Приведи какие есть доводы, не важно насколько они разумны.
Аноним 13/05/17 Суб 18:23:29  990025
>>990012
Ох, нет, это ещё сложнее, я ничего не понял что в википедии о нём написано. Я лучше буду использовать примеры gcc, как он оптимизирует код, плюс попробую придумать своё.
Аноним 13/05/17 Суб 18:31:02  990028
>>990014
Оно решает задачи, если примириться с предлагаемым подходом. Подход говно, некоторые форматы этим не описать, некоторые существующие описывать максимум неудобно. А автор ниразбирается в реверсе файловых форматов, на многие фичи его уговаривали месяцами. Про генератор парсеров на джаве просто молчу.
Аноним 13/05/17 Суб 18:31:45  990029
>>990025
Можешь код на Си генерить, это тоже нормально, так даже сам Страуструп для крестов делал первое время.
Аноним 13/05/17 Суб 18:52:54  990042
Реквестирую максимально простую прогу, которая выводит десятичное число. Сам пытаюсь, но не выходит, несмотря на нагугленное. FASM.
Аноним 13/05/17 Суб 19:04:53  990049
>>990042
Забыл указать ОС и архитектуру.
Аноним 13/05/17 Суб 19:06:15  990052
>>990049
DOS, x86
Аноним 13/05/17 Суб 19:08:20  990055
>>990042
Посмотри здесь:
http://asmworld.ru/uchebnik/

как раз уроки на FASM. И, помнится мне, там есть пример того, что тебе нужно.
Аноним 13/05/17 Суб 19:14:00  990058
>>990029
Я и так пишу компилятор на си, я офигею его на ассемблере писать, тем более с моими сотнями ифов и елсе.
Потом постораюсь перевести си-код на код своего языка и скомпилить.
Аноним 13/05/17 Суб 19:35:22  990065
>>990055
Мне бы попроще пример. Там слишком уж комплексный. Потыкаю, коонечно
Аноним 13/05/17 Суб 20:30:29  990098
a.png (21Кб, 892x102)
>>960640 (OP)
Изучал тут команду mov с помощью того что мне выдавал фасм. И тут я наткнулся на что-то странное. Если ввести mov [r12],r13, то вместо обычных трёх байтов мне выдаёт 4. Добавляется байт 24h. Какого фига? Я и насмом проверил, он тоже добавляет такой же байт. Это что? Какой-то костыль x86-64?
Аноним 13/05/17 Суб 20:50:48  990108
>>990098
Давай ты сходишь в мануал интела и прочитаешь про форматы сначала? А потом мы уже поговорим про то, что ты не поймешь.
Аноним 14/05/17 Вск 09:23:35  990298
>>990108
Нет, там много читать. Я лучше и дальше продолжу исследовать с помощью того что выдаёт фасм. Команда mov, похоже, одна из самых сложных.
Аноним 14/05/17 Вск 17:31:46  990460
Народ, кто-то пояснит как проверить первый бит числа, один оно или два?
Аноним 14/05/17 Вск 17:32:05  990461
>>990460
Или 0
Аноним 14/05/17 Вск 19:23:07  990545
>>960640 (OP)
Как в фасме подключить динамическую библиотеку? А статическую?
Аноним 14/05/17 Вск 19:25:48  990547
>>990461
>>990460
Щито? Не совсем понял, но возможно тебе помогут битовые сдвиги. shr это сдвинуть вправо, а shl влево. Сдвинутый бит помещается в флаг cf. далее условными переходами jc (если cf = 1) и jnc (если cf = 0)
Аноним 14/05/17 Вск 19:36:51  990555
>>960640 (OP)
Почему у меня не получается дизассемблировать через objdump исполняемый файл, который я скомпилировал фасмом? Мне выводит только, что формат ELF-x86-64
Аноним 14/05/17 Вск 20:28:44  990606
>>990545
Динамическую библиотеку через data import и макросы library и import. Гуглится, есть в мануале.
Статическую, считай, никак. Линкера в фасме нет, он сразу генерит исполняемый файл. Делай format elf или format ms coff и линкуй любым внешним линкером.
Аноним 14/05/17 Вск 20:31:58  990608
>>990547
Эксперт в треде, все в Бабаяна!

Логическое И с единицей уже не в моде у нового поколения.
Аноним 14/05/17 Вск 20:33:33  990610
>>990608
В моде, но я так понял, что вопрос в определении самого старшего бита. Это не сдвигами и не test/and решается.
Аноним 14/05/17 Вск 22:27:23  990672
>>990460
mov EAX,%хранилище числа%
AND EAX,1 ;в результате логического умножение с 1 результат будет 1, если первый бит =1 и 0 если нет
JZ EIP+X ;проверяешь флаг Z и переходишь куда тебе надо.
Аноним 14/05/17 Вск 22:28:04  990673
>>990547
>>990460
Хотя этот вариант даже лучше.
Аноним 14/05/17 Вск 23:50:40  990745
>>990555
>дизассемблировать через objdump
А разве objdump это дизассемблер?

АЛСО, у меня такой вопрос. При сравнении кода в объектниках WRK и кода, скомпилированного из Win2000, часто замечаю, что вместо вызова RtlInitUnicodeString с константным значением выполняется просто присваивание размеров и строки в буфер переменной типа UNICODE_STRING. Собственно вопрос- они это блядь, в ручную меняли, или это действие какого-то макроса? Я для себя запилил INIT_CONSTANT_UNICODE_STRING и заменяю RtlInitUnicodeString на этот макрос, когда это нужно для соответствия коду XP, но не уверен, что моё решение рассово правильное, так как не нашёл подходящего готового макроса или инлайновой функции, и при этом видел, как в некоторых файлах присваивание идёт напрямую (что имхо хуита какая-то).
Аноним 15/05/17 Пнд 00:03:33  990752
>>990745
> А разве objdump это дизассемблер?
Да, там есть простой дизасм. objdump -d

> RtlInitUnicodeString
https://msdn.microsoft.com/ru-ru/library/windows/hardware/ff563617%28v=vs.85%29.aspx
Аноним 15/05/17 Пнд 00:33:18  990771
>>990752
>https://msdn.microsoft.com/ru-ru/library/windows/hardware/ff563617%28v=vs.85%29.aspx
Почти, но не то. Сама строка не объявлена как константная, поэтому этот код не подходит.
Аноним 15/05/17 Пнд 01:10:11  990785
>>990771
Код покажи.
Аноним 15/05/17 Пнд 03:27:27  990819
>>990785
Рассмотрим функцию MapperMarkKey из файла mapper.c. В сорцах Win2000 она выглядит как
buffer = 1;
RtlInitUnicodeString(&unicodeName, REGSTR_VAL_FIRMWAREMEMBER);
Всё ожидаемо и предсказуемо, компилируется в аналогичный код, только вместо константы какая-то переменная, ну это видимо особенность HexRay.

При реверсе же WRKшной функции из файла MAPPER.obj получается (после именования и расстановки типов) типа этого
unicodeName.Buffer = L"FirmwareIdentified";
buffer = 1;
unicodeName.MaximumLength = 38;
unicodeName.Length = 36;

Когда я в своём коде меняю RtlInitUnicodeString на свой макрос имена придумывать не умею, определённый как
#define INIT_CONSTANT_UNICODE_STRING(dest, source) \
dest.MaximumLength = sizeof(source);\
dest.Length = sizeof(source) - sizeof(WCHAR);\
dest.Buffer = (PWSTR)source;
То всё встаёт на свои места, код выходит аналогичным WRKшному с точностью до байта.
Вот и думаю, правильно ли я делаю, или нужно хреначить код напрямую, как это сделано в некоторых файлах WRK, десятки их. Или вообще пойти отрефакторить этот десяток файлов, ибо нехуй код повторяющийся держать.
Аноним 15/05/17 Пнд 09:31:06  990871
Напишите код для вычисление квадратного корня, пожалуйста.(FASM)
Аноним 15/05/17 Пнд 10:36:51  990904
Снимок.PNG (51Кб, 785x499)
Нужно это сделать на ассемблере FASM
Аноним 15/05/17 Пнд 11:45:59  990957
>>990819
> на свой макрос
И чего ты выделываешься тогда? Твой макрос абсолютно идентичен RTL_CONSTANT_STRING, за исключением того, что ты присваиваешь почленно, а макрос генерит литерал. И да, RTL_CONSTANT_STRING - это общепринятый способ, когда ты инициализируешь UNICODE_STRING строковым литералом.
Аноним 15/05/17 Пнд 11:46:22  990958
>>990871
$10
Аноним 15/05/17 Пнд 14:41:46  991068
>>990871
каждый раз отнимаешь одну десятую и проверяешь квадрат не меньше числа и так далее
Аноним 15/05/17 Пнд 14:58:54  991076
>>991068
sqrt(0.01)
Аноним 15/05/17 Пнд 17:14:54  991160
где можно почитать о MFC reversing?
Аноним 15/05/17 Пнд 17:31:17  991178
>>991160
Что именно ты хочешь прочитать? Вот этого достаточно для начала про кресты (статья достаточно старая, но вполне актуальная, тем более если цель - MFC):
https://www.blackhat.com/presentations/bh-dc-07/Sabanal_Yason/Paper/bh-dc-07-Sabanal_Yason-WP.pdf
Большинство методов без проблем найдет флирт. Вот это поможет создать необходимые структуры:
https://ofekshilon.com/2010/11/07/d1reportallclasslayout-dumping-object-memory-layout/
Ничего готового не знаю. Найдешь - поделись. Конкретные вопросы будут - задавай.
Аноним 15/05/17 Пнд 18:25:32  991225
>>991068
ебать, я нихуя не понял
Аноним 15/05/17 Пнд 19:35:43  991288
1.png (36Кб, 878x564)
2.png (14Кб, 1531x349)
3.png (36Кб, 635x873)
Untitled.png (1Кб, 613x31)
Пытаюсь освоить переполнение буфера
Я должен заполнить массив char своими адресами возврата, чтобы программа прыгнула на нужное мне место (пик1).
проблема в том, что эксплоит работает в виде пик2 (не обязательно именно так, но допустим программа с дырой работает через командные аргументы), и символ, нужный для верного адреса - \x00, что является терминальным символом.
Насколько я знаю, не существует способа передачи этого символа через аргументы.
Конечно же, я могу переписать код, чтобы передавать не массив char , а скажем, массив интов или чего-то подобного, но это будет уже не то. Интересно, как поступать в ситуации, в которой есть именно эта дыра, код программы - пик3, или, к примеру, нужный адрес имеет вид пик4.

Автор книги, Эриксон, для демонстрации использует никс, а там адреса с 0xffffffff идут
Аноним 16/05/17 Втр 12:23:28  991658
>>990957
> Твой макрос абсолютно идентичен RTL_CONSTANT_STRING, за исключением того
Что мой макрос работает, а RTL_CONSTANT_STRING нет.
Аноним 16/05/17 Втр 14:40:16  991707
>>991658
Блять, да почему он вдруг не работает-то? UNICODE_STRING dest = RTL_CONSTANT_STRING(L"Yoba"); Генерироваться будет код, идентичный твоему.
Аноним 16/05/17 Втр 15:33:09  991737
>>990958
>>991068
Сам додумался.
use16
org 100h

mov cx,36 ; из какого числа вывести корень
; si - записывается ответ

start:
mov ax,0000
mov ax,si
mov bx,si
mul bx
add si,1
mov bx,0000
cmp ax,cx
jne start

sub si,1
mov ax,4C00h
int 21h
Аноним 16/05/17 Втр 15:34:30  991738
>>991737


jnge, а не jne. Забыл исправить
Аноним 16/05/17 Втр 17:50:52  991837
>>991707
Очевидно, что RTL_CONSTANT_STRING работает только при инициализации переменной, иначе
error C2275: 'UNICODE_STRING' : illegal use of this type as an expression

Кстати, мой код даёт в одном месте, как и дизасм оригинального кода WRK, какой-то мусор:
db 66h, 66h
xchg ax, ax
Нафига он? Выравнивание?
Аноним 16/05/17 Втр 18:23:41  991858
>>991837
Ты так говоришь, как будто твой макрос в такой ситуации "работает". Алсо:
SomeFunc(&(UNICODE_STRING) RTL_CONSTANT_STRING(L"Если компилятор не совсем протухший, он умеет в compound literals"));

> какой-то мусор
Возможно выравнивание, возможно кусок таблицы переходов. Покажи скриншот с кодом до этой херни.
Аноним 16/05/17 Втр 18:44:51  991869
dest.png (48Кб, 1264x3069)
>>991858
>Ты так говоришь, как будто твой макрос в такой ситуации "работает".
Таки да, работает. И генерит код, аналогичный WRK.
>Если компилятор не совсем протухший
Собираю я всё тем же компилятором, которым собирался остальной код (cl.exe 14 версии), и более новый мне в моей задаче будет мешать выверять код. Обновлю потом, как всё декомпилирую.
>скриншот
Окей. Весь метод принтсринить было лень, думаю хватит. Нужное отметил стрелочкой.
Аноним 16/05/17 Втр 19:32:30  991896
>>991869
Да, это выравнивание перед циклом.
Аноним 16/05/17 Втр 19:34:40  991897
>>960640 (OP)
ананасы дизасемблер ида Криса Касперски есть смысл читать, или он устарел безнадежно? если да то что по этой теме наиболее лучше будет?
Аноним 16/05/17 Втр 19:39:10  991898
>>991897
Теперь есть beginners.re еще. Имеет смысл читать и то, и другое.
Аноним 16/05/17 Втр 20:29:05  991925
>>991896
Ясно. Странно конечно, что компилятор не делает это выравнивание при использовании RTL_CONSTANT_STRING и делает при использовании моей фиготени, притом что остальной код одинаков и замена происходит достаточно далеко от этого кода. Впрочем ладно, спишу на причуды компилятора.

В общем сейчас переношу rules.c, там идёт работа с памятью. Файл из Win2000 гвоздями прибит к 32 битам, что очевидно. Как я понимаю, для портирования на x64 мне нужно поменять тип переменных, связанных с памятью, с ULONG на ULONG_PTR, посмотреть насчёт констант и прочее из https://www.viva64.com/ru/a/0042/ ? Вот например инициализация переменной, которая будет шестым параметром при вызове ZwMapViewOfSection. В Win2000 она выглядит так:
viewBase.LowPart = Address & ~(0xFFF);
viewBase.HighPart = 0;
Правильно ли я сделал, заменив определение переменной Address с ULONG на ULONG_PTR и заменив инициализацию на
#if defined(_AMD64_)
viewBase.QuadPart = Address & (ULONG_PTR)~(0xFFF);
#elif defined(_X86_)
viewBase.LowPart = Address & ~(0xFFF);
viewBase.HighPart = 0;
#else
ASSERT(FALSE); // Кому понадобилось компилить не под х86?
#endif
Аноним 16/05/17 Втр 21:10:49  991945
>>991925
> делает при использовании моей фиготени
Это имеет смысл перед адресом, на который будет возвращаться jmp где-то в конце цикла. Гугли intel lsd например.

> Правильно ли я сделал
Каст к ULONG_PTR тебе не нужен в данном случае, Address уже ULONG_PTR, посмотри как Си integer promotions делает. Мало того, #ifdef тебе тоже не нужен, ты можешь просто писать в QuadPart в обоих случаях, не старайся быть умнее компилятора. Соответственно, код сводится к:
viewBase.QuadPart = Address & ~0xFFF;
Аноним 17/05/17 Срд 16:21:47  992268
>>991945
>intel lsd
А это вообще законно?
>Каст к ULONG_PTR тебе не нужен в данном случае
Ага, верно. Я сначала добавил каст, а уж потом сменил тип переменной.
>ты можешь просто писать в QuadPart в обоих случаях, не старайся быть умнее компилятора
Тоже верно. Просто хотел оставить вариант кода для х86 как было, мол, так вернее. Окей, так даже проще, видимо, компиляторы со времён Win2000 стали немного умнее.
Аноним 17/05/17 Срд 17:12:57  992285
>>960640 (OP)
Сегодня ночью у меня болела голова, я находился в полудрёме и мне казалось что моё одеяло это кучка ассемблерных команд, а изгибы на одеяле обозначают ту или иную команду. И мне надо было по определённому их соотнести чтобы получить нужный кусок ассемблерного кода. Но я не хотел этого делать, я хотел спать. Потом голова перестала болеть и я заснул.
Аноним 21/05/17 Вск 07:43:12  994057
За сколько тут смывает топики?
ОП
Аноним 21/05/17 Вск 21:38:56  994441
>>994057
Ну, например, мартовский Си-тредик жив.
Аноним 22/05/17 Пнд 05:25:30  994591
>>994441
Окей, значит в случае чего буду бампать раз в месяц, чтобы потом с нуля не начинать.
Аноним 23/05/17 Втр 11:13:09  995109
Можно ли на асме вызвать функции LoadLibrary и GetProcedureAddress, не зная адресов этих функций?
Аноним 23/05/17 Втр 14:09:39  995181
>>995109
Ты от соседей? Тот кун с протектором? Очевидно, что не зная адреса функции, нельзя ее вызвать. Адрес можно узнать, но асм для этого не нужен. Нужно найти kernel32 и пройтись по его экспортам: readfsdword/readgsqword, PEB, PEB_LDR_DATA, InLoadOrderModuleList, IMAGE_EXPORT_DIRECTORY - вот это все.
Алсо,
> GetProcedureAddress
вот такого в винде нет, есть GetProcAddress.
Аноним 23/05/17 Втр 17:21:19  995264


>>995181
Да, в С-треде был я.
Спасибо за совет. А разве адрес LoadLibrary и GetProcAddress будет одним и тем же например между win7 и win10? Или мне нужно как то в процессе выполнения программы прошелестить у пользователя kernel32.dll?

Аноним 23/05/17 Втр 18:57:35  995294
>>995264
Нет, адрес будет разным, и то, что я написал постом выше, как раз и позволяет пройтись по служебным переменным загрузчика исполняемых файлов, найти там kernel32, пройтись по его экспортам и узнать адреса, при этом не вызывая вообще никаких внешних функций. Каждый первый шелкод для винды рано или поздно к этому сводится.
Аноним 23/05/17 Втр 23:42:31  995445
А на вашем ассамблере интернет магазин написать можно?
Аноним 24/05/17 Срд 00:08:49  995463
>>995445
Можно, но экономически невыгодно.
Аноним 24/05/17 Срд 02:28:40  995499
Сап реверсач. Познаний в асм нихуя. Есть желание пердолиться на живом примере. В общем суть такова. Есть функция расчета упреждения. Она по идее должна выдавать 2 значения с запятой. Потом, эти значения скармливаются другим функциям. Так вот, каким образом передаются значения? Они закидываются в стек, и всё что мне понадобиться сделать, повесить бряк на функцию и просто смотреть что там лежит?
Аноним 24/05/17 Срд 03:04:37  995501
>>995499
> повесить бряк на функцию и просто смотреть что там лежит?
Да. Смотреть стек ниже адреса возврата, искать указатели на структуру или на каждое из возвращаемых значений, смотреть на состояние FPU заодно. Можешь покидать сюда скрины - посмотрим и посоветуем.
Аноним 24/05/17 Срд 18:28:48  995780
image.png (104Кб, 1382x1444)
>>995501
>>995501
Госпаде как сложно.
Вот этот кусок вроде как должен отвечать за рассчет, до этого функция принимала доп параметры для всех рассчетов. Куда тыкать даже не не знаю.
Аноним 24/05/17 Срд 18:31:36  995782
image.png (115Кб, 1382x1694)
>>995780
Не весь кусок закринил, сорян. Там правда последнии строки не триггерят бряк. А может я вообще объебался с функцией, и нужного тут нет.
Аноним 24/05/17 Срд 18:49:21  995788
>>995780
Я тебя помню по какому-то из предыдущих тредов. Во всяком случае, эту функцию я уже видел, но дело ничем не кончилось. Или ты другой анон?
Аноним 24/05/17 Срд 18:56:10  995795
>>995788
С фрилансером я тут мотался год назад наверно. Тогда пытался хукать с помощью левых либр, но только ещё больше запутался. Потом обновилась винда и фрил перестал запускаться, сейчас поставил семерку на другой диск. Сейчас же просто хочу выцепить данные и как нибудь передать другой функцие. Но в прошлый раз была другая функция котороя внезапно не тригерится и не учавствует в обсчете, так что может попутал.
Аноним 24/05/17 Срд 20:48:27  995879
после установки обновы от wannacrypt винда хр стала глючить странным, не похожим на глюк образом. Возможно это мс так стимулирует переход на 10ку. Не могли бы вы проверить обновы?
Аноним 24/05/17 Срд 20:54:52  995885
>>995879
Деньги вперед.
Аноним 24/05/17 Срд 21:08:03  995891
>>995879
Сижу на XP, обновление поставил, разницы не заметил.
Аноним 25/05/17 Чтв 13:09:00  996138
Кто нибудь может пояснить за массивы на ассемблере, а точнее как извлечь число из массива в какой либо регистр?
Аноним 25/05/17 Чтв 14:03:32  996161
Дамы и господа, может кто подскажет материалов по написанию вирусов?
Аноним 25/05/17 Чтв 14:50:24  996176
>>996161
https://youtu.be/X6Et1rzO4i4
Сайт чувака на видео погугли
Аноним 25/05/17 Чтв 17:55:55  996258
>>995780
Вот такой вопрос созрел. Если я например в CE напишу новый скрипт, который при вызове функции перекинет нас в другую функцию, которую я и буду писать, но которая отличается только тем, что будет иметь в начале вызов другой функции, которая должна будет передать данные внутри нашей новой функции, которые в естественном виде раньше приходили из другого места. Сработает?
Аноним 25/05/17 Чтв 18:17:54  996266
>>996258
Чет как всегда не подумал, но написал. Сработает, но на всех. А чтоб отличить от игрока, ужно найти структуру игрока, но эти структуры ебанутые, и не умею ходить по ветке вверх. Так например есть функция is_player, она передает значения 1 и в зависимости от того, есть ли в округе ещё нпс. Значений столько, сколько и нпс. 1 есть всегда и постоянно считывается, скорей всего игрок. Но как дальше от этого плясать? Вызывающая функция не вызывает эту функцию для проверки, и в условие просто не написать проверку по смещению.
Аноним 25/05/17 Чтв 19:41:43  996290
>>996138
Ответ нуба, не написавшего ни строчки на асм
Так же, как и положил.
Массивы в памяти- просто идущие подряд элементы, так что номер элемента, помноженный на его размер, даст адрес от начала массива. Так что LEA для вычисление эффективного адреса да MOV для загрузки.
Аноним 25/05/17 Чтв 20:03:11  996298
>>996290
Хотябы кто-то ответил. Спасибо, я что-то про это читал но ничего не понял да и fasm ошибку выдавал с командой lea наверное я не правильно ее использовал. А есть какие нибудь примеры?
Аноним 25/05/17 Чтв 21:03:43  996336
>>996298
Напиши на плюсах заполняющейся масив. Ну или на любом другом языке, да глянь. Как только найдешь переменные, которые меняются в диапазоне размерности массива, то по идее за ними, должны быть команды, отвечающие за то, что положется в этот массив. Ну и мониторь стэк.
мимо другой нуфаг
Аноним 25/05/17 Чтв 21:23:04  996345
>>996298
mov ecx,индекс
mov eax,[massiv+ecx*4]
Это для интов размером 4 байта. Леа нинужон в простых случаях.
Аноним 25/05/17 Чтв 21:24:29  996347
>>996161
Возьми старые езины типа 29A labs, читай чужие исходники. Заодно напоминаю, что в этой стране вирусы писать незаконно.
Аноним 25/05/17 Чтв 22:30:49  996380
Анон, как можно инвертировать значение аккумулятора побитно на 8080 процессоре? XRI FF это понятно, надо еще как-то да, да - сделай за меня лабу.
Аноним 25/05/17 Чтв 22:42:12  996385
>>996380
Ну кроме ксора разве что в цикле побитово, RLC и CMC, например.
Аноним 25/05/17 Чтв 22:43:44  996386
>>996385
RAL, ну ты пони.
Аноним 25/05/17 Чтв 22:47:43  996387
>>996386
Спасибо, тоже думал над этим. Буду разбираться.
Аноним 26/05/17 Птн 12:21:59  996504
>>996345
отлично спасибо
Аноним 26/05/17 Птн 14:49:40  996601
Привет, уебки. Никогда раньше ничего не реверсировал, но тут появилась необходимость в одном установщике убрать проверку на наличие файла на компьютере. То есть установщик (обычный .exe-файл) запускается, проверяет, нет ли на пека такой-то установленной программки, если есть - работает, если нет - пишет "Нетустановленногофайла". Как-то так.
Я его дизассемблировал ИДАй, но ничегонепонятно. Как познать тонкости? Я просто наудачу потыкал, убрав пару первых джампов, вернее, сделав их безусловными в надежде, что это и будет перепрыгивание условия, но хуй вам. Что делать, ребята?
Аноним 26/05/17 Птн 14:54:39  996606
>>996601
С такими вопросами меня игнорили или посылали читать манулы. Ну и по сути надо достаточно много понимать, чтоб что то сделать, так что вполне резонно, что никто не хочет все объяснять. Слишком долго и не известно, будешь ли усваивать
Аноним 26/05/17 Птн 14:55:05  996607
>>996601
Используй дебаггер
Аноним 26/05/17 Птн 18:17:05  996674
>>996601
Запатчить чужой инсталлятор очень сложно. Там обычно кастомный байткод, декомпиляторы не для всех есть. Лучше возьми песочницу, посмотри, что и куда пишет инсталлятор и сделай свой такой же. Чтобы узнать, что именно он проверяет, спользуй Filemon/Regmon/ProcMon от Руссиновича и компании.
Аноним 27/05/17 Суб 21:44:24  997182
Написал демо программу на крестах, скомпилировал. Сижу короче туплю в дизассемблер. Я нашел ассемблерный код работы своей программы, но вызывается он хуй знает когда. Пошёл от точки входа, а там call-call-je-jnz-call-jmp просто пиздец бесконечная цепь вызовов функций и переходов. Собсно вопрос: что за хуйня происходит при запуске программы? Почему собсна моя функция main начинает работать после стопицот всеразличных джампов, коллов и прочего? Разве все предварительные подготовки не загрузчик делает?
Аноним 28/05/17 Вск 00:35:13  997259
>>997182
> Почему собсна моя функция main начинает работать после стопицот всеразличных джампов
Потому что у твоей функции есть аргументы, их нужно получить и подготовить. А еще у рантайма есть состояние, его нужно инициализировать.

> Разве все предварительные подготовки не загрузчик делает?
Разным языкам нужна разная инициализация. Загрузчик не зависит от языка, поэтому для инициализации рантайма линкер втыкает соответствующий код в бинарник. Можешь сказать линкеру этого не делать (по крайней мере, в винде - в линуксах все слегка сложнее), и тогда сразу начнет работать твой код, но работать он будет с голой жопой.
Аноним 28/05/17 Вск 00:39:55  997260
Дайте гуйды по ТАСМу для даунов
Аноним 28/05/17 Вск 01:24:45  997267
>>997259
>Загрузчик не зависит от языка, поэтому для инициализации рантайма линкер втыкает соответствующий код в бинарник
А никто не писал ОС, где это будет встроено?
>>997182
>Сижу короче туплю в дизассемблер.
Нужно использовать продвинутые инструменты. IDA умеет пропускать всю эту библиотечную мишуру и сразу показывать точку входа в приложение.
Аноним 28/05/17 Вск 01:27:58  997270
>>997267
> А никто не писал ОС, где это будет встроено?
Что встроено? У нас одних компиляторов Си только под винду десяток. У всех разные рантаймы, их по-разному нужно инициализировать. Если встроить рантайм в ОС, получится msvcrt.dll, наполненный багами и несовместимостями, который даже обновить нельзя, никому ничего не сломав.

> Нужно использовать продвинутые инструменты.
Можно просто подумать и посмотреть листинг. main() не так уж глубоко от точки входа.
Аноним 28/05/17 Вск 02:53:08  997298
>>997270
>Если встроить рантайм в ОС, получится msvcrt.dll, наполненный багами и несовместимостями, который даже обновить нельзя, никому ничего не сломав.
Под каждую версию свою либу. Зато можно будет вырезать однотипный код инициализации рантайма из каждого приложения.
Но конечно же это нужно закладывать на этапе разработки ОС, к существующим это уже не прикрутить.
Аноним 28/05/17 Вск 03:11:58  997302
>>997298
> Под каждую версию свою либу.
А потом я изобрету язык YobaLang, мне в спортлото писать, чтобы мой рантайм встроили? А если я завтра YobaLang 2.0 сделаю, мне снова писать? А пока я изобретаю, чем мне пользоваться? Зачем вообще напрягаться ради экономии сраных 10 КБ (сишечка или кресты) на каждое приложение? Есть лишь одна реальная причина: статическая линковка = невозможность фиксить баги, но инициализации не так много, код вылизывается за пару версий до совершенства, и никаких сколько-нибудь критичных багов там уже нет.
Аноним 28/05/17 Вск 03:28:48  997304
>>997298
Алсо,
> однотипный
Давай возьмем винду и Visual Studio. Будут разные варианты инициализации для: MBCS/Unicode, Debug/Release, Exe/Dll, Single-/Multithreaded, не считая всяких телеметрий, TLS и прочих __fltused. Итого, у нас уже 24 = 16 вариантов (я слегка преувеличиваю - на самом деле поменьше, это на закате DOS их реально дохуя было в каждом компиляторе). И это только одна студия, а их, сколько-нибудь пригодных для кодинга под современные винды, 9 или 10 версий, не считая сервиспаков. В общем, какая-то надуманная проблема, учитывая, что писать без CRT никто, в общем-то, не запрещает.
Аноним 28/05/17 Вск 13:26:22  997401
image011.gif (7Кб, 413x449)
Привет, анончик, начал я тут читать теорию, и у меня возник вопрос. Вот тут http://life-prog.ru/1_29310_protsessori-Intel-.html пишут, что в состав блока исполнения в процессоре входят 10 регистров, при этом на пикче там же их 8 + flag register. Потом смотрю, этих флагов вообще 9 штук. Так какие же регистры входят в блок исполнения? Если конкретно? AX, BX, CX, DX, SP, BP, SI, DI... Какие еще?
Аноним 28/05/17 Вск 13:33:27  997405
>>997401
а, все, понял, тут же еще IP
Аноним 28/05/17 Вск 13:55:06  997421
Анон, помоги ньюфагу.
Есть одна прога, которая подгружает dll написанную на сильно обвусифицированном Си. В нее передаются указатели на массивы, которая эта dll модифицирует по неведомому ебанму алгоритму. И я хуй знает как мне прицепиться отладчиком к этой dll, т.к. после выполнения функции она тут же выгружается.
Как мне ее отладить?
Аноним 28/05/17 Вск 14:40:18  997453
>>997421
В OllyDbg в настройках есть Break on dll load. Когда это происходит, расставляешь бряки на EP, TLS initializers (если есть), эксортируемые функции.

>>997401
Не заморачивайся этой хуйней. С тех пор регистры потолстели в 4 раза, их стало намного больше, и вообще, то, что ты видишь в асме, не совсем отражает реально происходящие процессы внутри камня. На самом деле, машинный код для x86 - это лишь самый низкий уровень, который доступен для написания кода рандомкунами, но не самый низкий уровень, который существует в x86. Внутри проца сейчас по сути эмулятор набора инструкций x86, который транслирует его в микроинструкции для RISC-like ядра.
Аноним 28/05/17 Вск 15:56:31  997508
>>997302
>А потом я изобрету язык YobaLang, мне в спортлото писать, чтобы мой рантайм встроили?
Очевидно, что это просто пакет ОС, от которого будут зависеть соответствующие программы. С версиями, ага.
Аноним 29/05/17 Пнд 09:32:10  997819
>>997453
> В OllyDbg
Есть проблема. dll 64 битная. А олька вроде толшько 32 умеет отлаживать.
Аноним 29/05/17 Пнд 14:38:22  997949
>>997819
Есть же x64dbg.
Аноним 29/05/17 Пнд 15:42:29  997984
>>997949
Есть. Но пока не освоил.
1 - Не получается его заставить реагировать на загорузку dll
2 - Не видить функции, которые отлично видит IDA
Аноним 29/05/17 Пнд 20:20:58  998116
2.PNG (37Кб, 836x345)
1.PNG (37Кб, 950x509)
Репост из крестового треда, тематика вроде соответствует
Тамплиеры, помогите. Хочу вызвать LoadLibraryA по адресу в виртуальной памяти, при этом адрес я хочу получить сам, основываясь на данных таблицы импорта скомпилированного PE файла и ImageBase, который я получаю через FindImageBase(). Я скомпилировал приложение (код 1.png), вытащил из получившегося PE RVA функции LoadLibraryA. Как я понял, это RVA, в который будет записан VA той самой функции, но тем не менее получаемый адрес отличается от того, что я получаю по auto x = LoadLibraryA. ЧЯДНТ?
Аноним 29/05/17 Пнд 20:54:57  998151
>>998116
Это может быть как нибудь связано с relocation'ами? Типа, мне чтоб получить действительный RVA, нужно к значению из PE файла прибавить фактический ImageBase -
номинальный ImageBase?
Аноним 29/05/17 Пнд 21:01:06  998158
>>998116
Опиши еще раз подробно, что ты делаешь? Может, ты смотришь RVA в собранном файле, а потом его пересобираешь? И зачем тебе читать адрес LoadLibrary из собственных импортов в рантайме, когда компилятор может (и делает) то же самое, когда ты делаешь auto x = LoadLibraryA? И хватит в оба треда срать.
Аноним 29/05/17 Пнд 21:10:55  998166
>>998158
Я пытаюсь вручную получить VA LoadLibraryA, основываясь на ImageBase и RVA в таблице импорта PE файла. Это лишь подготовительная мера для кое чего другого.
Да, смотрю RVA в скомпилированном файле, да, потом подставляю константу и пересобираю. НО! Я смотрел в пересобранный .exe, RVA LoadLibraryA таким и остаётся, я проверяю при каждом изменении кода.
Зачем срать через ноздрю, а не использовать LoadLibraryA? Потому что я компилирую код, чтобы потом его выдернуть и вставить в оверлей секции произвольного .exe файла, и там я уже я не могу расчитывать на что либо, кроме данных самого PE-файла. На ассемблере писать не хочу, я на нём только читаю хотя это громко сказано, но не пишу.
В другие треды сру, тому шо не знаю, кто где ответит. Вдруг кто нибудь сидит в С-треде, но не в asm треде ну и наоборот.
Аноним 29/05/17 Пнд 21:13:51  998167
>>998166
Окей, а почему 0xb93c8 (RVA IMAGE_IMPORT_BY_NAME, т.е., строчки "LoadLibrraryA" с хинтом), а не 0xb4c00 (RVA ячейки IAT, куда попадет адрес LoadLibraryA при загрузке)? Это если я правильно понимаю ту мешанину, которую выдает дампер на скриншоте. Хексы и то легче читать.
Аноним 29/05/17 Пнд 21:16:16  998169
>>998166
А, я тебя вспомнил. Расскажи, что за протектор, почему это называется протектор, что ты собираешься протектить, и почему ты собираешься протектить именно так? Мы с тобой общались уже про LoadLibrary в одном их тредов.
Аноним 29/05/17 Пнд 21:23:46  998183
Снимок.PNG (17Кб, 687x191)
>>998167
Потому что address - это raw offset в самом файле, а value - это то, что там находится.
>>998169
Протектор - курсовая работа. Протектор, потому что предполагается, что это говно будет защищать проприетарное ПО от какиров хотя целью было вообще в RE вкатиться, просто тема курсовой позволила совместить приятное с полезным . Учитывая, что дедлайн уже через пару недель, хуй я успею написать DENUVO 2, хотя "научрук" сказал, что тема годная и можно сейчас на пол карасика сделать и сказать типа на дипломе доделаю бля буду. Я застрял на создании инжектора. Мне нужно как то загрузить либу протектора через LoadLibrary, потом вызвать пару функций из либы. Однако, для этого мне нужно получить VA LoadLibraryA и GetProcAddress не говоря уже о том, что мне нужно запихать в импорт защищаемого PE файла LoadLibraryA, если её там нет по умолчанию. Как это делать -
не ебу представляю, но мне страшно от
объема необходимых фиксов и даже не думаю на данный момент.
, с чем я сейчас и сражаюсь.
Аноним 29/05/17 Пнд 21:40:26  998202
>>998183
> Потому что address - это raw offset
Охуенная программа. Тогда смотри. FirstThunk - это массив, лежащий в IAT и состоящий из 32- или 64-битных слов. Последний элемент массива - 0. Пока файл не загружен (или не связан), там лежат ординалы (если импорт по ординалу) или RVA структур IMAGE_IMPORT_BY_NAME (если по имени). Когда файл загружается, туда кладутся уже адреса функций. Ты сейчас пытаешься читать значение не оттуда, а из IMAGE_IMPORT_BY_NAME, и в твою переменную z (если смотреть вычесть непонятно зачем прибавленный image_base) попадают кусок хинта и имени: 1879507877 = 0x700703A5 - 12255232 = 6F4C03A5 = 0x03a5 хинт и 4c 6f - байты 'L' 'o'.
Решение: взять любой нормальный вьювер с функций FLC (file location calculator). Преобразовать файловый офсет 0xb4c00 (адрес элемента массива FirstThunk, ссылающегося на нужный IMAGE_IMPORT_BY_NAME) в RVA. Если верить скриншоту, то получится 0xb9000. Использовать этот RVA. Не прибавлять базу к z, потому что загрузчик пишет в IAT уже готовые VA.
Аноним 30/05/17 Втр 11:15:10  998490
>>998202
Спасибо, понял. Да, В RVA под FirstThunk и всех последующих словах лежит уже VA. Не подскажешь случайно софт, который позволяет добавлять импортируемые функции в PE-файл?
Аноним 30/05/17 Втр 11:38:27  998504
>>998490
Нашёл софт.
Аноним 30/05/17 Втр 14:03:59  998558
Есть экзешник написанный на с++ и запакованный "Armadillo Pro Version v9.64 [ Private build stub ] 06-09-2013". На сколько я в жопе? Есть шансы распаковать?
Аноним 30/05/17 Втр 14:38:53  998569
>>998558
Ну скрипты есть вроде. Тебе зачем распаковывать-то: реверсить или патчить?
Аноним 30/05/17 Втр 14:50:01  998577
>>998569
Учиться патчить не на туториалах, а на настоящей программе. Я только что сидел с этим скриптом, перепробовал все варианты ответов, но отсосал. Все вроде идет нормально, но потом программа крашится. В треде могут с таким помочь или это фантастика и можно забыть?
Аноним 30/05/17 Втр 15:23:29  998595
>>998577
Я думаю, с таким лучше сразу на exelab. Тред для ньюфагов по большей части.
Аноним 30/05/17 Втр 15:35:36  998605
Заглянул к вам опять, почитал, и опять захотелось в крекинг. Жаль, что в таких вопросах я совсем криворукий, а по теме помогают очень неохотно.

>>977938
>в Германии
Закончил уже.
Аноним 01/06/17 Чтв 01:18:36  999482
>>998595
А ты сам не выглядишь ньюфагом. Может поможешь с распаковкой?
Аноним 01/06/17 Чтв 01:33:03  999484
>>999482
Мне не на чем. А виртуалку с виндой настраивать еще и некогда. Извини.
Аноним 01/06/17 Чтв 01:36:58  999486
tenor.gif (114Кб, 216x216)
>>999484
RIP
А на том же exelab помогают, если попросить распаковать реальную программу?
Аноним 01/06/17 Чтв 02:21:27  999492
>>999486
Распаковать - хз. Там есть темка с платными запросами разве что. А вот советом должны помочь.
Аноним 01/06/17 Чтв 09:40:20  999535
>>999486
На exelab сидят чмыри с охуевшим ЧСВ. Удачи.
Аноним 01/06/17 Чтв 10:29:31  999542
>>999535
Ну тогда подсказывай, где спросить о процедуре распаковки конкретно моего случая?
Аноним 01/06/17 Чтв 12:33:23  999581
>>999542
А если дамп с программы снять, что внутри? Протектор содержит виртуальную машину?
Как мне кажется, ты взялся не за то. Нужно начинать с чего-нибудь более простого.
Аноним 01/06/17 Чтв 16:03:55  999653
>>999581
Я прошел гайды Навахо, могу снимать защиту с простых крэкми. Что учить дальше, чтобы поднять уровень, раз подобные прикладные задачи я еще не в состоянии решить?
Аноним 01/06/17 Чтв 16:04:43  999655
>>999653
Напиши свою денувувмпротект, тогда поймешь, как чужие работают.
Аноним 01/06/17 Чтв 16:08:00  999661
>>999655
Ясн.
Аноним 01/06/17 Чтв 16:10:54  999662
>>999661
Я серьезно вообще-то. Во время написания своего аналога чего бы то ни было приходится вникать в детали. И по мере вникания появляется куча специальных знаний, которые иначе пришлось бы год собирать по разным блогам.
Аноним 03/06/17 Суб 17:29:17  1000505
hiew.png (128Кб, 1920x1058)
oep.jpg (571Кб, 1920x1058)
errmsg.png (8Кб, 444x160)
Реверсач, в игроразделе подняли тему с отучением игрового бота от жадности. Захотел тоже поучаствовать, можешь помочь с ответом на пару вопросов?
Экзешник бота запакован хз чем заголовок на первой пикче. После останова на EOP по мнению x64dbg и пары джампов появляется конструкция со второго пика. Если выполнить шаг не заходя в вызов F8 вываливается ворнинг, но если провалиться внутрь по F7 и затем продолжить выполнение, то никаких проблем. Это проверка присутствия отладчика, как ее можно обойти?
Аноним 03/06/17 Суб 17:40:46  1000512
>>1000505
В догонку, такое поведение только при установленных BP. Может это баг x64dbg?
Аноним 03/06/17 Суб 17:43:56  1000514
>>1000505
>>1000512
И снова в догонку, с аппаратными точками останова такого не происходит в чем их разница?.
Аноним 03/06/17 Суб 18:33:18  1000527
>>1000505
> запакован хз чем
https://pid.gamecopyworld.com/

> Это проверка присутствия отладчика, как ее можно обойти?
Ну, например, в качестве самого идиотского варианта оно проверяет наличие байта 0xcc (int3) по 0x3dc19f6, или, например, просто считает чексумму всей кодовой секции.

>>1000514
> в чем их разница?
Аппаратные точки останова пишутся в отладочные регистры (dr0-dr3, dr7), изменения кода не происходит. Single step можно делать установкой TF в Eflags, изменения кода не происходит. Для Step over приходится втыкать брейкпоинт. Если он программный, то по адресу, следующему после интересующей инструкции, втыкается int3, он вызывает exception при выполнении, отладчик его ловит и восстанавливает код, который там был изначально.
Аноним 04/06/17 Вск 01:12:22  1000728
Хочу шифровать практически целиком или частично, произвольными кусками секции PE файла, у которых есть флаги executable и/или read, расшифровывать буду импортируемой функцией из dll, подключаемой через LoadLibrary в ран тайме, этот блок кода не шифруется. Какие подводные камни меня ожидают? Загрузчик в кодовую секцию вроде подставляет адреса вызова импортируемых функций или какие то там другие данные подставляет в секции, или я не прав? Если это так, то значит, что в шифрованный файл адреса уже подставляться не будут, значит он и работать не будет, или еще того хуже, они будут подставляться, и при расшифровке я уже не получу оригинальный машинный код?

И еще, расскажите о функциях или ходя бы скажите что и где можно прочитать, используемых в активации ПО по ключу. Имею в виду, мне нужна функция, которая для некоторого множества чисел выдавала бы один и тот же результат. Типа, f(x) = x2 даёт одинаковые значения для любых чисел a,b: a =-b. По сути, это сюръективная функция, но я не могу найти примера именно для моих нужд.
Аноним 04/06/17 Вск 01:29:30  1000733
>>1000728
Добавляй свою секцию, перенаправляй все необходимые IMAGE_NT_HEADERS.OptionalHeader.DataDirectory в свою секцию (экспорты не трогай или копируй, ресурсы... ну можно сделать свои только с иконкой и манифестом, про релоки не забудь). Директорию импортов генери свою, там будет только импорт твоей длл. Когда расшифруешь, обработаешь оригинальные импорты вручную, релоки применишь, DataDirectory восстановишь.
Аноним 04/06/17 Вск 10:14:07  1000769
>>1000505
>Экзешник бота запакован хз чем
VMProtect v.3.00 - 3.0x (по мнению Exeinfo).
>После останова на EOP
Программа запакована, хотя многие проверки от VMProtect убраны (обнаружение отладчика, запрет работы в виртуальной машине). Поэтому есть возможность поизучать работу программы. Чтобы получить более-менее хороший дамп, надо поставить брейкпойнт на какую-нибудь системную функцию, например, GetSystemTimeAsFileTime. Эта функция, как правило, вызывается одной из первых при запуске приложения. И после этого можно сливать дамп или ставить брейкпойнты там, где нужно.
Подозреваю, что функция проверки ключа защищена VMProtect'ом. Не смог запустить программу на виртуальной машине, поэтому не знаю, как происходит проверка ключа. Если программа стучится на сервер, можно подделать ответ. Если где-то в программе, придётся искать место проверки. Программа статически слинкована с Qt, а там виртуальный вызов на виртуальном вызове вызывает виртуальную функцию. Хотя, если знать, как работает Qt, возможно, трудностей и не будет.
Аноним 04/06/17 Вск 10:22:49  1000770
14963361261400.jpg (124Кб, 1296x1056)
>>1000769
>Если программа стучится на сервер, можно подделать ответ.
Нашёл через гугл тред с обсуждением в vg. Так и есть, стучится на сервер. Делается мегапростой прокси и отвечает, сколько осталось боёв. Запрос идёт через HTTP, значит, не придётся заморачиваться с сертификатами, OpenSSL и прочим MITM'ом.
Аноним 04/06/17 Вск 15:09:08  1000891
>>1000733
А как работать с секциями PE файла в ран тайме вообще? Мне на ум приходит только одно - я могу определить ImageBase в ран тайме, он указывает на начало IMAGE_DOS_HEADER, и, я так понимаю. там последовательно загружены и IMAGE_NT_HEADER, там же Optional header, значит можно и в таблицу секции заглянуть, и найти RVA начала шифрованной секции. НО! Читал я о таком забавном механизме, как ASLR, который может распидорасить образ по памяти в случайном порядке, и инфа из таблицы секций мне уже ничем не поможет, или я заблуждаюсь?
Аноним 04/06/17 Вск 15:31:26  1000900
>>1000769
>>1000770
Там помимо проверки ключей есть криптованный запрос с ключом, в ответ на который прилетает криптованный ответ с какими-то данными, без которых бот отказывается работать.
Я похоже переоценил свои силенки и дальше брейкпоинта на чтение dword-а из памяти, где лежат константы, для формирования конструкции этого запроса, уйти не смог.
Кстати, этот VMProtect стоит приличных денег, неужели автор навесил такую махину, на десятирублевого бота?
Аноним 04/06/17 Вск 15:38:50  1000904
>>1000900
>криптованный запрос с ключом
Есть образец правильного запроса/ответа?
Аноним 04/06/17 Вск 16:11:17  1000923
>>1000900
>Кстати, этот VMProtect стоит приличных денег, неужели автор навесил такую махину, на десятирублевого бота?
Уверен, что он его спиздил.
Аноним 04/06/17 Вск 16:19:29  1000927
ws.png (51Кб, 1296x1056)
>>1000904
Только не говори, что ты разраб и обнулишь мой ключ или сдашь WG, лол.
Аноним 04/06/17 Вск 16:53:54  1000948
И еще нах, я правильно понимаю, что если у секции PE файла нет атрибута IMAGE_SCN_MEMORY_WRITE, то в ран тайме попытка изменения произвольного значения в какой либо из страниц виртуальной памяти, в которых располагается секция, выдаст мне исключение? Решит ли эту проблему предварительный вызов VirtualProtect с флагом PAGE_EXECUTE_READWRITE?
Аноним 04/06/17 Вск 18:47:57  1001014
>>1000927
Ещё вариант придумал. Что, если вводить один и тот же ключ и с помощью прокси отправлять один и тот же ответ. Или это не один способ подсчёта в программе? Она ещё как-то общается с сервером разработчика? Или только при запуске? Ключ, как понимаю, к оборудованию не привязывается, раз в том треде был разговор о передаче ключа. Значит, вполне возможно лениво обойти проверку ключа, даже не разбираясь, что там разработчик напридумывал. Будет желание - посмотрю. И ещё один момент - эти строки предполагается перепечатывать с экрана?
Аноним 04/06/17 Вск 18:51:31  1001023
>>1000891
> Читал я о таком забавном механизме, как ASLR
ASLR выбирает рандомную ImageBase. А образ так называется как раз потому, что более-менее четко описывает содержимое оперативной памяти после загрузки (по большей части). По большей части внутри PE все, что касается адресов - RVA, которые как раз от базы и расчитываются. Для всего остального существуют поправки (relocations).

Так что да, парсишь заголовки, добираешься до нужных структур. Спецификация PE лежит на сайте майкрософта, гуглится; в интернетах куча исходников; в winnt.h есть несколько макросов, которые могут оказаться удобными (особенно в тех местах, где дело касается секций и выравнивания).


>>1000923
> Уверен, что он его спиздил.
Ну загрузите на вирустотал. У автора вмпротекта бизнес по-русски, поэтому спизженные/сдохшие лицензии детектятся как малварь.

>>1000948
Правильно понимаешь. VirtualProtect проблему решит, не забудь потом восстановить обратно, как было. Алсо, PAGE_EXECUTE_READWRITE не любят антивирусы. Если есть возможность, делай просто RW, а потом X вернешь.
Аноним 05/06/17 Пнд 12:31:29  1001318
Кто-нибудь знает, как в Wireshark написать диссектор, который разбирает результат другого протокола.
TCP->WebSocket->Data
Вот для Data мне и надо написать. Как сделать для TCP/UDP - знаю, а как для такого случая - даже найти пример не могу.
Аноним 05/06/17 Пнд 23:35:44  1001703
x64dbg.png (13Кб, 429x572)
>>997984
> Не получается его заставить реагировать на загорузку dll
Очень странно. Потому что настройка на самом видном месте мало ли, еще актуально, скриншот валяется.
Аноним 06/06/17 Втр 01:14:07  1001766
Какие элементы PE файла подлежат перемещению через таблицу релокаций? Там же вроде как все адреса - RVA? Имею в виду, вот есть таблица релокаций, каждая структура которой - RVA, по которому находится перемещаемый элемент, а также размер блока памяти. Дак вот RVA чего именно будет помещаться в таблицу релокаций?
Аноним 06/06/17 Втр 01:27:18  1001769
>>1001766
Можешь считать, что таблица релокаций - это список патчей. Что положишь, то и пропатчит, никаких проверок (ну, кроме границ). В нормальных приложениях релоки касаются только кода и данных, больше VA нигде нет просто.
Аноним 06/06/17 Втр 01:52:22  1001776
>>1001769
Но что именно туда закладывает компилятор? И что именно использует VA-адресацию в коде? Всякие вызовы функций, условные и безусловные переходы? А в секции данных - VA области памяти, где хранится переменная, которая по тем или иным причинам не попала в стек? То есть, если у меня стопицот джампов и вызовов функции, то в таблице релокаций будет стопицот записей?
Аноним 06/06/17 Втр 02:37:49  1001785
И еще, почему я не могу просто взять и зашифровать секцию .text и .data в исполняемом файле, а потом в ран тайме расшифровать и передать управление в .text? Я понимаю, что есть подводные камни, придется некоторые задачи загрузчика брать на себя, но я не знаю какие именно. Достаточно будет просто осуществить релокацию по таблице в pe файле, или придется еще шаманить над вызовом импортируемых функций, потому что неизвестно, по какому адресу загрузится dll?
Аноним 06/06/17 Втр 03:02:55  1001789
>>1001776
> Но что именно туда закладывает компилятор?
Ну епт, возьми IDA, там в Edit->Plugins есть Jump to next fixup. Очевидно, что релокации нужны для обращений по абсолютному адресу, всегда, когда в инструкции или в данных явно или неявно встречается VA. Данные:
mov eax, offset foo ; foo - VA, фиксап.
mov dword ptr[foo],edx ; Тоже.
Функции:
push offset compare_func ; VA функции compare_func - фиксап.
push size
push num
push dword ptr[ebp-8]
call qsort ; Относительный call, нет фиксапа.

Не обязательно в асме. В секции данных, например:
static int foo; // Чтение-запись - фиксап.
static int ∗bar = &foo; // Взятие адреса - конечно же фиксап, обращения к bar - тоже.
static int some_array[100];
static int ∗element_ptr = somearray + 3; // И тут тоже. Лишь бы был VA, а указывает он на начало объекта или в середину - похуй.

Вызовы и джампы по умолчанию EIP-relative, поэтому обходятся без поправок. Но, например, switch может сгенерировать таблицу переходов:
mov eax,[ecx∗4+table] ; Обращаемся к table по VA - фиксап.
jmp eax
table dd case_1, case_2, case_3 ; Три поправки подряд.

> И еще, почему я не могу просто взять и зашифровать секцию .text и .data в исполняемом файле, а потом в ран тайме расшифровать и передать управление в .text?
Можешь. Упаковщики так и делают. >>1000733 Возможен любой вариант. Тебе нужно лишь, чтобы после окончания твоих выкрутас образ в памяти выглядел так, как он ожидает. Как именно ты будешь этого достигать - похуй. И вообще, почитал бы ты по упаковщикам/протекторам хотя бы список терминов - вопросов гораздо меньше было бы.

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

> или придется еще шаманить над вызовом импортируемых функций
На VA элемента IAT в теле инструкции call будет очевидный фиксап.
Аноним 06/06/17 Втр 03:08:02  1001790
>>1001776
И вообще, забей на релоки. У тебя же exe. Удаляй релоки, ставь файлу relocations stripped, убирай флаг dynamic base впизду, и ASLR сосет хуй, а у тебя гораздо меньше проблем. Потом добавишь корректную обработку, если желание будет.
Аноним 06/06/17 Втр 10:29:20  1001843
>>1001790
То есть, если удалить релоки и изменить флаги, то вообще не нужно будет ничего перемещать?
И еще, флаги менять в поле Characteristics FileHeader или в поле DlCharacteristics у OptionalFileHeader?
Аноним 06/06/17 Втр 20:32:15  1002190
>>1001843
Ну загугли где какой флаг лежит. Их всего два. И да, если у образа стоит relocations stripped, то загрузчик не будет его перемещать по неродной базе, а значит даже смотреть на релоки не будет.
Аноним 08/06/17 Чтв 09:00:09  1002988
>>1001318
Нашёл костыльное решение.
1. В функции plugin_register регистрируется диссектор с помощью функции register_dissector.
2. В функции plugin_reg_handoff с помощью функции heur_dissector_add регистрируется функция, которая будет вызываться всякий раз, когда у предыдущего диссектора останутся данные (если это им предусмотрено). Первый параметр - не название диссектора, а "heuristic sub-dissector list". Для, к примеру, WebSocket это ws.
3. Как обычно, с помощью dissector_add_uint добавляется порт или что-то другое, что будет связано с диссектором.
Только проблема в том, что параметр proto_tree всегда валидный и узнать, что пакет анализируется первый раз можно через pinfo->fd->flags.visited.
Аноним 09/06/17 Птн 21:20:56  1003736
Поясните разницу между прерываниями и векторами прерываний. Сколько существует прерываний всего, 256?
Аноним 09/06/17 Птн 21:47:23  1003746
>>1003736
Прерывание - это процесс, начинающийся, когда процессор дергают за ногу (или он сам себя дергает), а заканчивающийся восстановлением и возобновлением выполнявшейся задачи после обработки прерывания. Вектор прерывания - это адрес обработчика прерывания. Процессор читает вектор из таблицы векторов, таблица векторов лежит в каком-то известном месте. Всего прерываний может быть сколько угодно, если считать аппаратные и считать мультиплексоры прерываний. Векторов в таблице векторов обычно фиксированное количество, 256 в x86.
Аноним 09/06/17 Птн 21:54:02  1003751
>>1003746
int 21h это обработчик прерывания?
Аноним 09/06/17 Птн 21:58:02  1003754
>>1003751
int 21h - это инструкция, вызывающая обработчик прерывания. Она идет по 0000:21*4, читает оттуда вектор (сегмент/оффсет), и вызывает обработчик (ну и там текущий cs:ip сохраняет и т.п.).
Аноним 09/06/17 Птн 22:00:43  1003757
Что скажите за стековые процессоры?
Аноним 09/06/17 Птн 22:09:16  1003762
>>1003754
Кажется понял. Спасибо, анончик.
IDA 6.8 + IDAStealth Дмитрий 10/06/17 Суб 11:34:49  1003934
Доброго времени суток, товарищи реверсеры. У кого-нить работает IDAStealth на IDA 6.8? (Win 10). У меня постоянно сыпет в output ошибку "IDAStealth: Error in IDA callback: Unable to locate RtlDispatchException in KiUserExceptionDispatcher" и нифига не прячет отладчик. Понимаю, что исходники есть, но править их нет никакого желания пока.
Аноним 12/06/17 Пнд 11:14:49  1004811
>>960640 (OP)
Например, есть библиотека so (elf-файл), можно ли каким-то образом добавить в нее свои строки кода, а то и новую функцию из другой библиотеки? Ветки перенести не проблема, а вот как со смещением быть? Android-реверсер итт.
Аноним 28/06/17 Срд 21:07:16  1013107
Унылый бамп. Где все?
Аноним 29/06/17 Чтв 05:06:04  1013266
>>1013107
Я с реверсом ядра застопорился, а кроме меня тут было 2,5 калеки, которые видимо отвалились.
Впрочем, скоро запилю перекат, до бамплимита тут джва поста.
ОП
Аноним 30/06/17 Птн 11:53:31  1014003
>>1013107
Я тут но я только в голове отыгрываю, что я реверсер.
Аноним 01/07/17 Суб 19:00:48  1014771
>>971955
Общее
http://programmersforum.ru/showpost.php?s=14d154f5feba60f576e75bf748e5fece&p=551635&postcount=4
Про линкер:
https://habrahabr.ru/post/150327/
Аноним 01/07/17 Суб 19:33:59  1014792
>>971955
компилируй с -Ofast -ffast-math
Аноним 02/07/17 Вск 15:35:44  1015085
Перекот
>>1015083 (OP)
>>1015083 (OP)
>>1015083 (OP)
>>1015083 (OP)
>>1015083 (OP)
>>1015083 (OP)
Перекат
>>1015083 (OP)

>>1015083 (OP)

>>1015083 (OP)

>>1015083 (OP)

>>1015083 (OP)

>>1015083 (OP)

>>1015083 (OP)

>>1015083 (OP)

Перекатище


>>1015083 (OP)


>>1015083 (OP)

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 501 | 42 | 199
Назад Вверх Каталог Обновить

Топ тредов
Избранное