М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 19 июля 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

1 Кб, 250x200

ASM & Reverse engineering Имя 25 Мар, 14:27 #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/

Пополнения и исправления приветствуются.

Ответы9607139607639607919619149731199739619741659743999757599763779782869815279872679874049899909900989905459905559918979922851004811

25 Мар, 15:11 #2 #960670

Я конечно понимаю, что попрошайки идут нахуй и т.д., в общий тред написал, но думаю там не помогут.
Препод задал написать на ассемблере 2 проги: одна складывает двоичные числа размером 1 байт без учёта знака, другая - с. Либо всё это в одном, я хз. Может помочь кто-нить?

Ответы960678960694

25 Мар, 15:20 #3 #960678

>>960670
А чому сам не можешь? Ведь вы всего лишь учитесь. Сиди, пробуй, эксперементируй. На время учёбы в универе ты должен самостоятельно делать подобные вещи, ибо из тебя даже червя-пидора не выйдет

25 Мар, 15:52 #4 #960694

В инете полазил, нашёл оба варианта (там разница судя по всему только в sing и unsign, более менее понятно всё), но компилятор ругается на команду movzx, не подскажете, что с этим делать?
>>960670 - анон

Ответы960696960746

25 Мар, 15:53 #5 #960696

>>960694
sign*

25 Мар, 16:07 #6 #960699

№1 https://arhivach.org/thread/223223/

25 Мар, 16:16 #7 #960713

>>960640 (OP)
Спрошу тут может кто знает как в VS2017 С++ проект скомпилить в исполняемый файл с одной секцией. в 2013 получалось в 2017 всегда создает .rdata и .text

Ответы960746960755

25 Мар, 16:49 #8 #960746

>>960713
У меня вот такой закомментированный код есть.
//#pragma comment(linker, "/SECTION:.text,EWR")
//#pragma comment(linker, "/MERGE:.data=.text")
//#pragma comment(linker, "/MERGE:.rdata=.text")
А как ты делал в VS2013?
>>960694
Ты хотя бы ошибку напиши и компилятор укажи.

Ответы960755960780

25 Мар, 16:55 #9 #960755

>>960713
>>960746
А зачем вам это нужно? Какой с этого профит?
мимо-сишник

Ответы960773

25 Мар, 17:02 #10 #960763

>>960640 (OP)
В шапке отсутствуют https://beginners.re/ (да Юричев есть, но стоило бы сделать акцент) и http://wiki.xentax.com/index.php/DGTEFF что несколько странно.

Ответы960772

25 Мар, 17:07 #11 #960772

>>960763
Спасибо. Не знал про эту книгу.

25 Мар, 17:08 #12 #960773

>>960755
Может он вирус пишет и хочет, чтобы всё было в одной секции.
Ещё один сишник

25 Мар, 17:13 #13 #960780

>>960746
в vs2013 если не использовать внешних библиотек и указать точку входа получалось + оптимизация на минамальный размер, интересно почему .rdata всегда вставляется перед .text если использовать #pragma comment(linker, "/MERGE:.rdata=.text") и причем она генерится одинаковая для разного кода.

Ответы960783

25 Мар, 17:16 #14 #960783

>>960780
А что линкер пишет? Попробую вечером, если до этого не разберешься.

Ответы960786

25 Мар, 17:20 #15 #960786

>>960783
Я имею ввиду, они-то объединяются в одну, но данные секции вставляются перед .text, причем её можно просто удалить(.rdata) и работоспособность программы будет в норме. Мне интересно зачем vs2017 вставляет эту херню в каждый исполняемый файл.

Ответы960805

25 Мар, 17:24 #16 #960791

>>960640 (OP)
Как вы думаете реально ли быть профессионалом в программировании(неважно на каком языке) не работая нигде и никогда, но имея образование. И какое больше направление подходит для людей который не хотят(или не могут) с этим иметь дело?

Ответы961080

25 Мар, 17:34 #17 #960805

>>960786
>Мне интересно зачем vs2017 вставляет эту херню в каждый исполняемый файл.
Мб телеметрия?

26 Мар, 02:11 #18 #961080

>>960791
Реально если пишешь что-то нужное для себя хотябы. Образование в снг курам на смех.

Ответы961087

26 Мар, 02:24 #19 #961087

>>961080
В смысле нужно или не нужное для себя? Просто заметил на собеседованиях неуважительное отношение когда узнавали, что не работал, а проекты мои личные. Ребята которые сидят на работе мнят себя спецами.

26 Мар, 10:14 #20 #961129

1. VEH потокобезопасен? Одновременно может быть только один вызов?
2. Когда сработало исключение PAGE_NOACCESS, что делать дальше? Как разрешить чтение/запись только одной инструкции? Дизассемблировать и смотреть, какие регистры участвуют и самому копировать необходимые данные?
3. Как действовать после брекпойнта (программа не под отладчиком, брекпойнты мои)? Как отладчик делает, когда останавливается на брекпойнте? Ведь один байт затёрт, нужно восстановить его и заново выполнить инструкцию. А после как устанавливают брекпойнт? Отладчик включает пошаговую трассировку и после одного шага устанавливает байт?

Ответы961391

26 Мар, 17:57 #21 #961391

>>961129
1) Очень вряд ли.
2) Проверяешь тип исключения, возвращаешь родной доступ к странице, выставляешь TF в Eflags в сохраненном контексте, говоришь continue execution, получаешь исключение, проверяешь тип, восстаналвиваешь NO_ACCESS, ну ты понял (как вариант, можно ставить PAGE_GUARD вместо NO_ACCESS, тогда будет одним системным вызовом меньше). Если ты про совет из прошлого треда, то да, немного дизасма понадобится: табличка с типами инструкций (можно спиздить из опенсорсных движков) и разбор всяких SIB/ModRM/displacement (можно взять опенсорсный движок целиком).
3) Да. Алсо, есть хардварные точки останова, с ними жизнь проще.

Ответы961749

27 Мар, 12:54 #22 #961749

>>961391
1. Проверил, для каждого потока свой вызов. Поэтому не потокобезопасен.
2. Видимо, это самый простой способ. Неужели в отладчиках так же сделано? Ведь между тем, когда доступ разрешён и повторным исключением пройдёт много времени, хитро настроенный второй поток может успеть между этими событиями прочитать или запись данные и останется незамеченным. Тут нужен бы эмулятор.
>тогда будет одним системным вызовом меньше
Ты про то, что PAGE_GUARD сбрасывается? А то смотрю, что возвращает VirtualProtect, а этот бит уже сброшен.
>можно взять опенсорсный движок целиком
Взял дизассемблер от OllyDbg, а он XMM инструкций не понимает. Краем глаза посмотрел на x64dbg, так там враппер вокруг дизассемблера больше по размеру, чем сам дизассемблер. Надо от qemu ещё посмотреть.
Как и ожидал, после установки TF бита отладчик сам останавливается на следующей инструкции. Не очень удобно.
3. Слишком много мест, их не хватит.

Ответы961788

sage 27 Мар, 14:58 #23 #961788

>>961749
В x64dbg capstone вроде. capstone жирный (там овердохуя таблиц для скорости), но весьма неплохой.

Ответы961863

27 Мар, 16:32 #24 #961863

>>961788
>В x64dbg capstone вроде.
Одуреть, это ты по памяти помнишь, какой дизассемблер в отладчике. Сам только вчера смотрел, но, тем не менее, не вспомнил бы названия. Меня отпугнуло то, что очень большой враппер был вокруг него, хотя и не смотрел, что там, думал, что заставить работать его будет трудно. А оказалось, что пользоваться им очень легко. И главное, он XMM понимает, чего мне не хватало.
Может подскажешь какой-нибудь эмулятор х86. Очень бы не хотелось писать самому, долго будет очередной велосипед делать. Нужен достаточно простой, но с установкой своих начальных значений регистров и некоторых обработчиков типа записи и чтения памяти. Как в плагине к ida x86 emulator.

Ответы962054

27 Мар, 17:16 #25 #961914

>>960640 (OP)
Антохи а как можно с дженерик говнокода на асме сделать специфический для моего процессора?

Ответы962001

27 Мар, 19:31 #26 #962001

>>961914
Написать компилятор.

Ответы962632

27 Мар, 21:31 #27 #962054

>>961863
Чего-то запутался уже с исключениями. Если, попав в VEH обработчик, взвести бит TF, то после выхода из него и возобновления работы программы будет исключение EXCEPTION_SINGLE_STEP. Но флаг остаётся взведённым? Потому что у меня никак не получается поймать это исключение. Как только управление передаётся в юзер спейс, опять будет это исключение? И так до STATUS_STACK_OVERFLOW.
Читаю про dr-регистры. Их-то можно поймать в VEH обработчике? Или надо отдельный процесс делать? Первая попытка не удачная.

38 Кб, 673x514

39 Кб, 687x510

28 Мар, 21:26 #28 #962628

Анон, либо я дурак, либо создатель проги поехавший. Рассуди нас. Есть два числа C6 и 40. При сложении получаем 106. Что мы получаем во флаге SF на деле? Значение D7 или значение самого старшего бита? Заранее благодарю.

Dmitry 28 Мар, 21:30 #29 #962632

>>962001
Компилятор из С собирает асму. А у меня asm выхлоп, бинарный блоб драйвера.

Ответы962697

28 Мар, 22:38 #30 #962697

>>962632
Компилятор из C может собирать что угодно. Тебе надо сделать дизассемблер с asm, перевести его в промежуточный опкод, а потом конвертировать в ассемблер твоего специфичного кода. В llvm есть что-то подобное с возможностью переводить из одного языка программирования в другой. Тебе нужно будет написать соответственно для асма x86 и своего языка.

7 Кб, 256x411

Имя 31 Мар, 17:49 #31 #964364

Не могу понять, откуда берутся вот эти функции в IDA. Притом даже компиля свой файл, у меня получается одна из них, но я всё равно не въезжаю, как это выходит. Вроде как _fin_1 похож на код обработки исключения из finally, но не совсем.

Ответы964378964383

31 Мар, 18:03 #32 #964378

>>964364
Они нужны для работы malloc/realloc вестимо.

sage 31 Мар, 18:04 #33 #964383

>>964364
Ну судя по названию, ты прав, это exception filter и finally handler. Что-то /EHsc с собой тащит, может быть?

Ответы964389

Имя 31 Мар, 18:15 #34 #964389

>>964383
Да, так и есть, воткнул в except вызов функции- этот самый RtlZeroHeap_filt_0 объявился сам.
Правда не очень понимаю, как мой код трансформируется в эту фигатень. Ладно, буду экспериментировать и читать про структурированную обработку исключений.

01 Апр, 11:59 #35 #964702

Как получить значение xmm регистров в 32 битной Windows? Где они в структуре CONTEXT.

Ответы964774

01 Апр, 14:20 #36 #964774

>>964702
Нашёл, XMM_SAVE_AREA32. Почему-то они только для 64 битной ОС определены.

sage 02 Апр, 20:35 #37 #965627

https://github.com/hteso/iaito

03 Апр, 13:03 #38 #965975

Привет, аноны! Кто то из вас пользовался дебагером DEBUG? Если да, то можете, пожалуйста, пояснить за него? Заранее спасибо!

Ответы966066

sage 03 Апр, 16:15 #39 #966066

>>965975
А что тебе пояснять? Мануалы есть в сети. Сам по себе он 16-битное говно мамонта, про многие инструкции не знает. Если есть конкретная проблема - спрашивай.

Ответы966098

03 Апр, 17:28 #40 #966098

>>966066
А OllyDbg намного лучше? Есть ли какие нибудь задачки для начинающего дебагера?

Ответы966108

sage 03 Апр, 18:08 #41 #966108

>>966098
Да, OllyDbg намного лучше. А возможно, стоит сразу на x64dbg посмотреть.
> Есть ли какие нибудь задачки
Как же вы заебали. Придумай сам себе задачу. Отлаживай собственные программы. Возьми коллекцию крякми и взломай их все.

Ответы966109

03 Апр, 18:10 #42 #966109

>>966108
А как крякать то
как уточка?

Ответы966145

03 Апр, 19:29 #43 #966145

>>966109
Отслеживать вызовы подпрограмм, смотреть, какие регистры заполняются, какие структуры в памяти заполняются.

Ответы966153

03 Апр, 19:35 #44 #966153

>>966145
Попробую нарыть гайд по этому, спасибо!

Ответы966209

sage 03 Апр, 21:09 #45 #966209

>>966153
Статьи на экзелаб, не плагодари.

898 Кб, 1920x1044

05 Апр, 16:35 #46 #967390

Написал небольшую программку для линукса (хеловорлд) https://pastebin.com/d6Zfm8Rn
Когда скомпилировал через gcc hello.s -o hello вышло 8200 байтов. Почему?

Ответы967395967638

Dmitry 05 Апр, 16:44 #47 #967395

>>967390
>Написал небольшую программку для линукса (хеловорлд) https://pastebin.com/d6Zfm8Rn
>Когда скомпилировал через gcc hello.s -o hello вышло 8200 байтов. Почему?
А почему ты GCC юзал?
Есть as(часть gcc), и другие ассемблеры.
strip -s helloworld не забудь.

05 Апр, 22:05 #48 #967638

>>967390
Потому что crt, которая в твой main управление передаст.

Ответы967646

05 Апр, 22:10 #49 #967646

>>967638
Сам ты передаст.

Ответы967647

47 Кб, 400x400

05 Апр, 22:11 #50 #967647

>>967646

Компиляция и декомпиляция 09 Апр, 15:05 #51 #969991

Всем здарова. Вкатываюсь в реверс после курсов по ОС, архитектуре и 16-битному асму моего универа (асм на бумажке писал только). Хочу как у Юрича в Reverse Engineering писать простые программы и дизасемблировать их, но получаю гигантские простыни кода. Компилирую через
gcc code.c -o code. "-O2" не меняет ситуацию. Смотрю через objdump -d. Что я не так делаю?

Ответы970237970475

09 Апр, 18:02 #52 #970237

>>969991
>Смотрю через objdump -d.
Поэтому люди и пользуются продвинутыми средствами типа IDA, которые пропускают лишний код и показывают сразу точку входа, минуя библиотечные функции.

Ответы970321

09 Апр, 18:56 #53 #970321

>>970237
>IDA Starter Licenses start at 589 USD or 529 EUR. IDA Professional Licenses start at 1129 USD / 1019 EUR.

Ответы970368970473

09 Апр, 19:19 #54 #970368

>>970321
IDA Pro 6.8.torrent

Ответы971317

sage 09 Апр, 21:00 #55 #970473

>>970321
Демка есть. Для "посмотреть" подходит.

Ответы974193

sage 09 Апр, 21:01 #56 #970475

>>969991
gcc -S есть. Простыни остаются, но читать легче.

10 Апр, 12:18 #57 #970803

[C/C++]
Возможно ли даемону в фоне с правами 0й сессии отслеживать такие штуки как
-открытие процесса(OpenProcess)
-чтение(ReadProcessMemory)
-запись(WriteProcessMemory)
-выделение памяти (VirtualMemoryAlloc)
-создание потока выполнения (CreateRemoteThread)
И прочие штуки. Должны же как-то работать антивирусные и античит системы, информации в сети мало.
Читал, например, что VAC использует динамически загружаемые с их сервера тесты для памяти и на основе статистик принимают решения.

Ответы970832

10 Апр, 13:39 #58 #970832

>>970803
Когда придёт прошаренный человек, он тебе разъяснит. А у меня такие мысли.
>с правами 0й сессии
Что это означает? Из третьего кольца? Если из нулевого, то всё понятно. Значит юзерспейс. Да, можно. И без даемона (просто не знаю, как по другому). Подгружаешь свою dll во все процессы (с помощью реестра, загуглишь) и ставишь переходы на интересующие тебя вещи. Учитывай, что многие защиты не любят, когда на системных функциях стоит jmp в самом начале, добавь мусорных команд.
>Должны же как-то работать антивирусные
Они работают на нулевом кольце.
>и античит системы
А у этих такие же возможности, как и у тебя, если в тихую не устанавливают драйвер.
>Читал, например, что VAC использует динамически загружаемые с их сервера тесты для памяти и на основе статистик принимают решения.
Тоже читал, что VAC ищет читы по сигнатурам. Изменил опции компиляции - изменилась сигнатура. Учитывая, что существует столько читов - это очень ненадёжная система.

10 Апр, 15:26 #59 #970908

Допустим есть веб-приложение, которое обменивается информацией с запущеным сервисом. Как вклиниться и послушать, о чем они обмениваются?

Ответы970917

10 Апр, 15:52 #60 #970917

>>970908
>Как вклиниться и послушать, о чем они обмениваются?
Очевидный Wireshark очевиден.

Ответы971115

10 Апр, 18:32 #61 #971026

Аноны, где достать последнюю ИДУ$можно не самую последнюю, интересует только поддержка плагинов на питоне$ для mac os? Все что удалось найти - какой-то обрезок, где нет половины функционала(есть поддержка idc, но нет поддержки плагинов на питоне)

10 Апр, 20:04 #62 #971115

>>970917
Но вайршарк слушает то, что проходит через сетевую карту. А у меня веб приложение уже запущено, я туда уже зашел, и теперь оно взаимодействует с сервисом напрямую локально.

Ответы971117

10 Апр, 20:07 #63 #971117

>>971115
Ты поехавший?
Алсо в этой вашей балмерне есть свои замуты с WinPcap и loopback

Ответы971119

10 Апр, 20:09 #64 #971119

>>971117
>Ты поехавший?
Что не так? Все лаунчеры ммо, которые запускаются с сайта, так работают. Или у тебя другие сведения? Изложи их тогда. тогда.
>Алсо в этой вашей балмерне есть свои замуты с WinPcap и loopback
Ничего об этом не слышал.

Ответы971126

10 Апр, 20:13 #65 #971126

>>971119
С каким сервисом он работает? С апачем? Я скачал игру сиськи письки онлайн от мейлру и они мне апач поставили?

Ответы971135

10 Апр, 20:25 #66 #971135

>>971126
Какой апач, ты что несёшь? Сервисом (daemon), а не сервером.
Во всех игрушках это работает так: у тебя есть игра, клиент которой запускается через обычный экзешник; авторизируешься на сайте -> сервер сайта в бекенде выдаёт шифрованный ключ, который передаётся в сервис, который постоянно его мониторит -> если ключ правильный, сервис запускает экзешник клиента с параметрами, вроде этого ключа. Я хочу прослушать, чем сервис на пекарне обменивается с веб приложением, и потом с самым клиентом.

Ответы971139

10 Апр, 20:35 #67 #971139

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

Ответы971146

101 Кб, 512x768

10 Апр, 20:35 #68 #971141

У меня такое ощущение, что весь реверс и вообще изучение системного программирования нужно делать на винде. Так ли это?

Ответы971179971181

15 Кб, 390x165

10 Апр, 20:39 #69 #971146

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

Ответы971149971166

10 Апр, 20:43 #70 #971149

>>971146
Ты же ставишь их нативное расширение. Через него можно хоть мать выебать.

Ответы971159

10 Апр, 20:47 #71 #971159

>>971149
То есть от того, что я пропустил по незнанию аддон в списке сайт -> сервис -> клиент, я и стал поехавшим в твоих глазах, ясно.

Мой вопрос остается в силе, каким образом я должен влезть между сайтом (аддоном) и сервисом, чтобы прослушать их обмен? И если такой вариант тебе не нравится, то вариант номер два - какие образом прослушать, с какими конкретно параметрами запускается клиентский экзешник?

Ответы971166971204

10 Апр, 20:50 #72 #971166

>>971146
>каким образом кнопка на сайте запускает экзешник клиента
Быстрое гугление выдало такие ссылки:
https://toster.ru/q/89523
https://toster.ru/q/3704
Это так же, как магнет-ссылки и прочие приложения, которые можно запустить из браузера.
>>971159
И будь спокойнее.
>каким образом я должен влезть между сайтом (аддоном) и сервисом
MIMT-прокси.

Ответы971169971180

10 Апр, 20:51 #73 #971169

>>971166
>MIMT-прокси
Спасибо, ушел гуглить.

Ответы971175

10 Апр, 20:56 #74 #971175

>>971169
Простейший вариант - Fiddler, хотя сам пишу велосипеды под свои нужды: чистый C + libevent + OpenSSL и свой доверенный корневой сертификат.

Ответы971178

10 Апр, 21:00 #75 #971178

>>971175
Ты уверен что у них в клиенте сертификат не вшит? Выдирать придётся.

Ответы971191

10 Апр, 21:00 #76 #971179

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

sage 10 Апр, 21:01 #77 #971180

>>971166
> MIMT
> Man in Middle The

Ответы971191

10 Апр, 21:01 #78 #971181

>>971141
Да.

10 Апр, 21:02 #79 #971182

Пытаюсь разобраться с прошивкой ARM микроконтроллера. Отладка в IDA через JTAG работает, все вроде бы хорошо. Но проблема в том что трудно разобраться с регистрами периферии. И в документации на микроконтроллер не указаны абсолютные адреса регистров, а их смещения относительно разных базовых адресов.
Можно ли в IDA настроить нормальное отображение регистров периферии? Мне бы для начала разобраться с тем как там настроена периферия.

Ответы971184

sage 10 Апр, 21:03 #80 #971184

>>971182
Делаешь структуру для каждого периферийного устройства, скриптом или руками втыкаешь эту структуру по соответствующему адресу.

10 Апр, 21:08 #81 #971191

>>971178
Их сертификат генерируется, когда в опциях разрешишь перехват SSL трафика. При этом создаётся новый сертификат для каждого сайта (валидный год или даже больше) и он устанавливается в систему. Вот за последнее свойство и пишу сам наипростейший mitm-прокси, который не захламляет систему левыми сертификатами, а генерирует их налету и не сохраняет никуда.
>>971180
Простите, опечатался.

Ответы971200971201

10 Апр, 21:15 #82 #971200

>>971191
>Их сертификат генерируется, когда в опциях разрешишь перехват SSL трафика.
Тебе за софтину, которую ломают. Она может хуй класть на общесистемное хранилище.

Ответы971205

10 Апр, 21:15 #83 #971201

>>971191
Ещё раз. Клиент может:
1) Использовать свой сертификат, а не скачивать его по http
2) Скачивать его по http и проверять, например, что он выдан верисигном, а не вася-пупкин-ца
Сейчас 2017 год, даже хром что-то подобное делает. А тут речь идет о нативном клиенте который может извращаться с ссл как угодно.

Ответы971205

44 Кб, 438x702

10 Апр, 21:25 #84 #971204

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

Ответы971205

10 Апр, 21:26 #85 #971205

>>971200
>>971201
Ну ты чего? Один из вариантов ему предложил. Пусть смотрит, как работает софт. Очень часто он использует движок IE или использует корневые сертификаты системы. Где-то же он берёт сертификат, которому доверяет.
>Использовать свой сертификат
Заменим на свой.
>Скачивать его по http и проверять, например, что он выдан верисигном
Создать свой самоподписанный сертификат со всеми полями верисигна и установить его в систему.
>даже хром что-то подобное делает
Он использует хранилище сертификатов Windows. Mitm работал на нём, сам лично проверял, все сайты, даже гугловские.
>А тут речь идет о нативном клиенте который может извращаться с ссл как угодно.
Особенно замечательно, когда есть две dll: libeay32.dll и ssleay32.dll, достаточно две функции изменить, чтобы писали весь трафик в лог.
Но всё, само собой, зависит от приложения. Оно может параноидально проверять всё, быть зашифрованным, закриптованным, использовать VM и прочее. А может и ничего из перечисленного.
>>971204
Запусти от администратора.

Ответы971206971208

46 Кб, 427x689

10 Апр, 21:31 #86 #971206

>>971205
>Запусти от администратора.
Я и запускал. Но вот у их защитника параметры оказались очень похожы на те, что я вижу на других локализациях.

Ответы971215971216

10 Апр, 21:31 #87 #971208

>>971205
http://www.chromium.org/Home/chromium-security/security-faq#TOC-How-does-key-pinning-interact-with-local-proxies-and-filters-
У хрома там забавные правила, да. Но он защищается от недобросовестных ЦА, так что в этом плане все ок.

10 Апр, 21:40 #88 #971215

>>971206
Знакомый параметр /username, как от Sony, одна из их игр FreeRealms, которую безуспешно пытался запустить ввиду отсутствия нужных файлов. Ты немного тупишь, тебе правильно написали. Запусти Wireshark и посмотри что и куда передаётся. А чтобы не было левого трафика, закрой все приложения, которые используют сеть. Там (возможно) должен запускаться загрузчик, который общается с сервером по UDP. Ты где пароль вводишь: на сайте или в клиенте?

10 Апр, 21:41 #89 #971216

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

Ответы971218

40 Кб, 432x695

10 Апр, 21:44 #90 #971218

>>971216
Собственно, вот и всё. Достаточно один раз подсмотреть логин и пароль у фроста и потом можно запускать так. Как видно, фрост больше не является главным процессом.

Ответы971222

10 Апр, 21:47 #91 #971222

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

Ответы971228

10 Апр, 21:53 #92 #971228

>>971222
У меня нет перса, я не играю.

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

Ответы971229

10 Апр, 21:55 #93 #971229

>>971228
Может там не шифрованные логин-пароль, а одноразовые или сессионные логин-пароль?

Ответы971233

10 Апр, 22:00 #94 #971233

>>971229
This. Логин остался без изменений, а вот пароль сменился. Блядь, у этой проблемы решения нет.

Ответы971236

10 Апр, 22:02 #95 #971236

>>971233
Почему? Можно через curl на их веб-сервак ебануть свой логин-пароль и получить сессионный ключ. Скорее всего.

Ответы971239

10 Апр, 22:03 #96 #971239

>>971236
И в результате выйдет вебланчер, только свой)))00

Ответы971248

10 Апр, 22:07 #97 #971248

>>971239
А в чем смысл изначально этого всего? Может тебе просто локализацию перенести если английский клиент взломан а ты делаешь русскую пираточку?

Ответы971253

10 Апр, 22:09 #98 #971253

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

Ответы971256

10 Апр, 22:11 #99 #971256

>>971253
Но это лаунчер для онлайн игры и если они хотят сессионный ключ то тебе придется его получать. Другой вопрос - хотят ли они его?

Ответы971280

758 Кб, 851x657

10 Апр, 22:29 #100 #971280

>>971256
Вспомнил, что в запакованных файлах есть параметр use-web-launcher, перезапаковал со значением false. Теперь могу доходить до стандартного окна входа, как в других локализациях, вот только ни мыло, ни айди не подходят как логин. Мда уж, чего они наворотили там.

10 Апр, 22:52 #101 #971306

Как легче (!) всего искать поинтеры на значения?

Ответы971308

10 Апр, 22:53 #102 #971308

>>971306
Хардварный брейпоинт на чтение/запись.

Ответы971312

10 Апр, 22:56 #103 #971312

>>971308
Под "легче" я имел в виду не эффективнее, а легче для ньюфага.

10 Апр, 22:59 #104 #971317

>>970368
> 2k17
> воровать софт

Ответы971370

10 Апр, 23:14 #105 #971340

>>971327
Кстати, насчет CE. Часто не могу найти текстовое значение, хотя на экране в дрочильне четко видно текст а значит он обязан где-то храниться. С чем может быть связано?

Ответы971344

10 Апр, 23:18 #106 #971344

>>971340
ASCII/Unicode?

Ответы971349

10 Апр, 23:20 #107 #971349

>>971344
Хуй знает, но на экране никаких специальных символов, простой текст латиницей. Не должно же быть разницы, разве нет?

Ответы971360

10 Апр, 23:28 #108 #971360

>>971349
Ну нихуя себе нет! ASCII или UTF-8 для латиницы - один байт на символ, UTF-16 (UCS-16) - два байта на символ, UTF-32 (UCS-32) - четыре байта на символ. А еще могут быть шифрованные строки.

Ответы971363

10 Апр, 23:30 #109 #971363

>>971360
>UTF-16 (UCS-16) UTF-32 (UCS-32)
Да это никто и не использует в здравом уме.
>ASCII или UTF-8
Разница в поиске между этими кодировками есть?

Ответы971373

10 Апр, 23:35 #110 #971370

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

10 Апр, 23:36 #111 #971373

>>971363
> Да это никто и не использует в здравом уме.
Вся Windows API использует UTF-16 (прошлые версии - UCS-16). В крестах wstring использует UTF-16. В ресурсах PE-файлов строки хранятся как UTF-16. В андроиде нативные либы используют UTF-32. Я видел и виндовые приложения, в которых внутри UTF-32, им так проще - не нужно обрабатывать суррогатные пары.

> Разница в поиске между этими кодировками есть?
Для латиницы нет.

Ответы971377

10 Апр, 23:37 #112 #971377

>>971373
Ну окей, тогда просто ставить галку Unicode в следующий раз, если ничего не находит?

Ответы971385

10 Апр, 23:44 #113 #971385

>>971377
Да. Но если CE - это читенжин, то я им ни разу не пользовался, и не знаю, как там принято искать текст.

Препроцессинг, компиляция, линковка 11 Апр, 18:39 #114 #971955

SUP
Не понимаю, что происходит после написания кода, но перед получением исполняемого файла. Компилю все клангом или gcc, и всегда получаю кучу левого кода в файл. Где почитать об этом?

Ответы97202310147711014792

Dmitry 11 Апр, 20:40 #115 #972023

>>971955
preprocesses code>assembly>binary
Добавляется куча ссылок на либы, бойлерплейт для ядра.

Ответы972136

11 Апр, 22:57 #116 #972136

>>972023
Ну да, а вот как это конкретно происходит? Не знаю как прогуглить

Ответы972140972144

11 Апр, 23:01 #117 #972140

>>972136
Возьми gcc, погугли ключик "-save-temps". Ну и про ключик -v тоже не забывай.

11 Апр, 23:12 #118 #972144

>>972136
Ещё погугли "Understanding and Writing Compilers" (Richard Bornat).

12 Апр, 00:17 #119 #972182

https://challenges.re/53/
Мне кажется я решил, но не знаю правильно или нет. Проверьте, пожалуйста.
На винде строки хранятся в DATA-сегменте, а на линуксе в .rodata. В DATA можно писать, а в .rodata нельзя. Поэтому на винде все работает, а на линуксе нет.

Ответы972193

12 Апр, 00:45 #120 #972193

>>972182
> Поэтому на винде все работает
Какой-то странный челлендж. Вопрос уровня i += i++ + ++i. Особенности компилятора, которые могут изменяться от версии к версии, зачем их знать? В гцц строковые литералы ридонли по умолчанию, но у кого-то в системе зачем-нибудь может быть -fwritable-strings в CFLAGS, и тогда все будет работать. То же и с MSVC. По умолчанию строки доступны для записи (хуй знает насчет новых версий), но есть /GF, тогда будет как в гцц. А ответ простой: писать в строковый литерал - это undefined behavior, и все, что нужно про это знать - так делать нельзя.

Ответы972202

12 Апр, 01:06 #121 #972202

>>972193
Мега спасибо за развернутое объяснение

29 Кб, 460x215

579 Кб, 658x386

Dmitry 13 Апр, 01:25 #122 #972759

Все играли?
Или в Human Machine Resources или в tis100?

Ответы972770

Dmitry 13 Апр, 01:28 #123 #972760

На нуль есть целая доска для байтоебов
/bytesex/

Ответы972771

13 Апр, 01:59 #124 #972770

>>972759
Шенжен - 11/10, тис - говно/10, hrm - 5/10.

sage 13 Апр, 02:00 #125 #972771

>>972760
> /bytesex/
Так пиздуй, мы не расстроимся.

13 Апр, 19:21 #126 #973119

>>960640 (OP)
Изучаю системные вызовы линукса путём чтения менпейджей и экспериментов и не могу разобраться со вторым сискаллом, а именно с функцией open. А именно я не могу понять как ставятся флаги. Вот у меня получается создавать файл, но в нём всё запрещено. Я экспериментами нашёл что седьмой справа бит отвечает за создание файла, но как сделать так чтобы он был разрешён к читанию и писанию и выполнению я незнаю. Как это сделать?

Ответы973231973232

sage 13 Апр, 22:09 #127 #973231

>>973119
Как это ты читаешь маны, но man open не читал и флагов там не увидел, и грепнуть/printf-нуть флаги или заинклудить соответствующий .h ты не можешь?

13 Апр, 22:12 #128 #973232

>>973119
Смотри, у тебя есть аргумент flags. Каждый флаг, типа O_RDONLY расценивай как двоичное число типа 0000001000000. Разные флаги имеют единички в разных местах. Чтобы совместить два флага, типа O_RDWR и O_CLOEXEC, надо включить еденички с обоих позиций, то есть на позициях обоих флагов. Чтобы проставить единички с включением обоих флагов пиши так:
open(file, O_RDWR | O_CLOEXEC);
Побитовое ИЛИ проставит единички, как сумму всех флагов. Удачи в понимании этого сообщения

Ответы973250

13 Апр, 22:53 #129 #973250

>>973236
>>973232
>Расценивай
А оно разве не таким и есть?

Ответы973252973259

13 Апр, 22:56 #130 #973252

>>973250
Так и есть. Я к тому, что не думай о них как о "32" или "16"

sage 13 Апр, 23:09 #131 #973259

>>973250
> А оно разве не таким и есть?
Существуют флаги с дублирующимися битами. Если сложить 0x11 и 0x09 - получится не то, что ожидается от флагов, а вот | отработает как положено.

14 Апр, 11:11 #132 #973401

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

Ответы973628973727

14 Апр, 17:33 #133 #973628

>>973401
>брейкдаун
Наверное, брейкпойнт.
>вылетает онлайн-игрушка
Какой дебаггер, как проявляется вылет. Плагины не помогают?
>я не хочу ничего редактировать, я просто хочу считывать значения
Можно через ReadProcessMemory попробовать, если знаешь точные адреса или можешь их найти.

Ответы973728973730

14 Апр, 19:16 #134 #973727

>>973401
Вангую использует olly для поиска указателей в играх , используй CE лучше для этого,(он не останавливает процесс что в итоге не дропает процесс.

Ответы973730

14 Апр, 19:17 #135 #973728

>>973628
С этого момента поподробней как при помощи readpm найти указатель

14 Апр, 19:20 #136 #973730

>>973628
>Наверное, брейкпойнт.
Да, сорян.
>Какой дебаггер, как проявляется вылет. Плагины не помогают?
CE, выбираю пункт меню с брейкпоинтом на любой найденный адрес со значением, и игрушка моментально вылетает без ошибок. Каких heartbeat в игрушке нет, античит защита отключена разрабами.
>Можно через ReadProcessMemory попробовать, если знаешь точные адреса или можешь их найти.
Можно поподробнее? Не знаю адресов, как раз их и пытаюсь найти, ради этого и затевал.

>>973727
>Вангую использует olly для поиска указателей в играх , используй CE
А я и использую CE.

Ответы973740

14 Апр, 19:41 #137 #973740

>>973730
Запутанно ты пишешь. Если нет никакой защиты в приложении, тогда ничего и не должно срабатывать. Не знаю, как ведёт себя CE, он как отладчик присоединяется к процессу? Программа своим поведением на точку останова напоминает реакцию на исключение в каком-нибудь VEH, когда
else
{
ExitProcess(...);
}
Попробуй OllyDbg для разнообразия и поставь точку останова на ExitProcess, посмотри, кто её вызывает.
>Не знаю адресов, как раз их и пытаюсь найти
Что ты ищешь-то? Что за игра, дай немного информации, что уже сделал, что нужно сделать.

Ответы973756

14 Апр, 20:06 #138 #973756

>>973740
>как ведёт себя CE, он как отладчик присоединяется к процессу?
Ах если бы я знал. По внешним признакам НИЧЕГО не происходит, просто вылетает игрушка.
>Попробуй OllyDbg для разнообразия и поставь точку останова на ExitProcess, посмотри, кто её вызывает.
Попробую сегодня, как доберусь домой.
>Что ты ищешь-то? Что за игра, дай немного информации, что уже сделал, что нужно сделать.
Да ничего ещё не сделал. Есть группа из нескольких игроков, я хочу считывать их имена в string, а потом уже проводить с ними операции, которые не касаются этого треда. Ищу string, нахожу имя на экране, при перезапуске игрушки имени по тому адресу уже нет, очевидно. Поэтому мне и нужны указатели на эти надписи. Правой кнопкой мыши по найденному адресу и выбираю пункт меню для поиска поинтеров, игрушка моментально вылетает.

Ответы973765973940

14 Апр, 20:16 #139 #973765

>>973756
>при перезапуске игрушки имени по тому адресу уже нет, очевидно
Скорее всего, игра написана на C++. Нужно искать, где хранятся (создаются) имена, а по ним выходить по цепочке на глобальный класс. А когда найдёшь, уже с помощью ReadProcessMemory в обратном (в данном случае, прямом) направлении пройдёшь. Ну это в теории. Надо реверсить игру, искать, где, кто и что создаёт. Сам бы так делал. Возможно, можно проще.

Ответы973768

14 Апр, 20:19 #140 #973768

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

Ответы973780

14 Апр, 20:38 #141 #973780

>>973768
>Алло
Ну и аллёкай дальше, раз весь пост осилить не смог.

Ответы973886

15 Апр, 05:17 #142 #973886

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

15 Апр, 12:16 #143 #973940

>>973756
> Ищу string, нахожу имя на экране, при перезапуске игрушки имени по тому адресу уже нет, очевидно.
В CheatEngine есть охуенный туториал, где на примерах показывается как искать статические адреса указателей.
https://youtu.be/5us6a9b2zDk

Вообще советую весь туториал самому прорешать.

Ответы974111

15 Апр, 12:56 #144 #973961

>>960640 (OP)

ПРОГРАММИРУЕШЬ НА АССЕМБЛЕРЕ
@
НЕ МОЖЕШЬ РЕШИТЬ ЧЕМ ПОЖЕРТВОВАТЬ
@
СЭКОНОМИТЬ ОПЕРАТИВНУЮ ПАМЯТЬ, НО УМЕНЬШИТЬ СКОРОСТЬ ПРОГРАММЫ
@
ИЛИ УВЕЛИЧИТЬ СКОРОСТЬ, НО ЗАНЯТЬ ЕЩЁ ПАМЯТИ
@
ТВОЯ ПРОГРАММА ВЕСИТ 5 КБ

Ответы974006974058

15 Апр, 14:44 #145 #974006

>>973961
>ТВОЯ ПРОГРАММА ВЕСИТ 5 КБ
@
ТЫ ДОБАВЛЯЕШЬ ИКОНКУ
@
ДЛЯ ОТОБРАЖЕНИЯ В ПРОВОДНИКЕ ШИНДОФС
@
ПРОГРАММА НАЧИНАЕТ ВЕСИТЬ 30КБ
@
ПИШЕШЬ КОД НА АСМЕ ДЛЯ СЖАТИЯ ИКОНОК

https://habrahabr.ru/post/247425/

Ответы974032974058

sage 15 Апр, 15:39 #146 #974032

>>974006
В ФОРМАТЕ PNG ПРИ ПОМОЩИ FASM
@
НАДЕЯЛСЯ УВИДЕТЬ РЕАЛИЗАЦИЮ DEFLATE НА МАКРОЯЗЫКА FASM
@
file 'icon16.png'
@
ОПЯТЬ ХЕЛЛОВОРЛД ДЛЯ НУБОВ

15 Апр, 16:23 #147 #974058

>>973961
Производительностью только дауны жертвуют.
>>974006
Иконки не нужны.

15 Апр, 18:21 #148 #974111

>>973940
Перетолстил.

15 Апр, 18:43 #149 #974120

дайте мне, пожалуйста, аналог printf() из си на ассемблере для линукса в архитектуре x86-64. Желательно в коде фасма. А то у меня какое-то говно получается.

Ответы974277

26 Кб, 946x377

15 Апр, 19:56 #150 #974153

поможите, невкурю, в IDA мучаю ехешник сибирии 1. http://rgho.st/8Jhz5nlVz
если рядом кинуть player.ini с соджержимым 800 600 32 0 BaseCMO.cmo
то игра запустится в окне и все хорошо (ну относительно, есть бага что свернуть развернуть и она растягивается в фулскрин)
Хочется сделать окно побольше, а то мелковато. спрятать курсор, рамку и т.д. это решается за счет ultimate-ASI-Loader
Вроде нашел место где проверяются значения. Файл открывается тут :0040437D
Но что то раскурить проверку не получается, вообще не пойму что она делает.
через читэнджи искать адреса где хранится значение для разрешения - дохлый номер, в игре нельзя переключать.
хелпплз.

Ответы974157974204

15 Апр, 19:57 #151 #974157

>>974153
п.с.: первые два значения в инишники вообще по барабану, что бы не написал окно всегда 800*600

15 Апр, 20:05 #152 #974165

>>960640 (OP)
>Список книг по RE:
в список однозначно стоит добавить раз уж блог его указали https://beginners.re/

15 Апр, 21:02 #153 #974193

>>970473
демка - это ты про фри версию 5 давности?

15 Апр, 21:37 #154 #974204

>>974153
>Хочется сделать окно побольше
Там ниже переписываются значения разрешения экрана. По адресам 00404413 и 00404423. nop'ами попробуй их заменить.
Как мне кажется, в этом месте баг. Вероятно, хотели значения присваивать до открытия файла, а то какой смысл после открытия и считывания переписывать.

Ответы974220974237

873 Кб, 1026x795

15 Апр, 22:12 #155 #974220

>>974204
занопил в ольке наживую, рендер разрешение изменил. А вот задники нет.
Не всё так просто похоже будет. Эх.

Ответы974237

15 Апр, 23:06 #156 #974237

>>974220
> А вот задники нет.
Как я и думал, это не глюк, как полагал >>974204-кун, а комментирование недописанного функционала.

Ответы974250

15 Апр, 23:25 #157 #974250

>>974237
или отключенного за ненадобностью. Типа не на чем запустить такое. хехе. Игра то старая.
в сибирии 2 так же, только там разрешение жестко забито в ехешнике.
Ндо андроид версию ковырнуть будет. Где то да должно быть масштабирование текстур.

sage 16 Апр, 01:41 #158 #974277

>>974120
Внезапно printf. Посмотри в примерах к фасму, там есть хелловорлд для линуксов, в том числе и с libc.

Ответы974370

16 Апр, 11:45 #159 #974370

>>974277
да, а фасм научился наконец то дебаг инфу в эксешники пихать? или все по старому, пилишь отдельно скомпиленое, отдельно листинг ?

Ответы974520

16 Апр, 12:30 #160 #974399

>>960640 (OP)
только что экспериментальным путём узнал что syscall (по крайней мере тот, который write) в линуксе изменяет значение r11. Какие ещё регистры он изменяет?

16 Апр, 13:04 #161 #974420

не подскажите что нибудь типа GAP ( https://goo.gl/SuWQuG ), раньше при разборе алгоритмов, на ней частенько вычисления гонял, была отличная оболочка для нее GGAP, которая увы не развивается и не поддерживает актуальные версии.
Из того, что мне оч нравилось в ней, что просчитаные данные, хранятся как есть пока функцию не перезапустишь, и можно один раз обсчитав все, потом исопльзовать снова и снова.

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

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

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

или пытаться вспомнить плюсы/QT и доводить https://sourceforge.net/projects/ggap/ до работы с актуальной версией?

Ответы977264

sage 16 Апр, 19:02 #162 #974520

>>974370
Научился для COFF вроде как. Но отдельной утилитой. Плюс на fasmg можно сделать любой формат отладочной инфы, но надо понимать, что fasmg - это тормоза и костыли.

17 Апр, 17:26 #163 #975095

Есть ли какие-нибудь opensource C-библиотеки для работы с pe файлами? Без их загрузки в память, само собой. А то понадобилось мне восстановить импорт в дампе программы, такого велосипедостроения понаписал. А готового найти не смог.

18 Апр, 19:19 #164 #975759

>>960640 (OP)
Хочу на ассемблере сделать консольную игру с аскии-графикой. Но как это сделать? С выводом разноцветных символов я уже разобрался. Как сделать так чтобы либо каждый раз символы стирались и заново писались либо чтобы курсор переходил на сколько-то строк и символов вверх и заново писал символы? Это чтобы добиться изменения изображения.
Может надо использовать сискалл, который переводит курсор в файле? Ведь у консольки есть свой файловый дескриптор

Ответы975831

sage 18 Апр, 20:04 #165 #975831

>>975759
ОС?

Ответы975867

18 Апр, 20:37 #166 #975867

>>975831
linux

Ответы975935

sage 18 Апр, 21:26 #167 #975935

>>975867
Самое просто - линковаться с ncurses и не заморачиваться деталями.

Ответы976460

19 Апр, 17:24 #168 #976377

>>960640 (OP)
Привет, программач.
Пишу на NASM и сижу на Debian. Мне надо считать любой возможный сектор ЖД. С сделал INT 13h, на что получил закономерный Segmentation Fault. Попытался в гугл, а гугл говорит, что иди-ка ты нахуй с прерываниями к BIOS'у из под пинуса и пиздуй в DOS. Собственно вопрос. Можно ли мне, дегенерату, обойтись без DOS'а получить результат из Debian'а? Если нет, то помоги с материалом для дальнейшей работы. Что ставить, как сделать бочку работать и поставить свой кал NASM на на него?

В общий написал. Сюда на всякий тоже

Ответы976442976471

sage 19 Апр, 19:07 #169 #976442

>>976377
> получить результат из Debian
Если тебе именно прочитать нужно, то лучше возьми Си, open(/dev/sdX) (где X - нужный тебе накопитель), seek, read, close (в принципе на асме то же самое, можно сисколлами, можно с libc линковаться). Если это какая-то лаба, ставь DOSBox.

19 Апр, 19:23 #170 #976460

>>975935
Мне не надо самое простое. Я из тех кто любит изобретать велосипеды.

19 Апр, 19:43 #171 #976471

>>976377
> С сделал INT 13h, на что получил закономерный Segmentation Fault.
А вот нехуй в защищенном режиме прерывания теребить.
> гугл говорит, что иди-ка ты нахуй с прерываниями к BIOS'у из под пинуса
Не только из под пинуса.
> Можно ли мне, дегенерату, обойтись без DOS'а получить результат из Debian'а?
Очевидная виртуалка очевидна.
Либо пили свой загрузчик, пиши его на загрузочный носитель и в нем еби свой жд хоть через порты. Только сначала лучше убедись, что на канале есть ответ от жд.

19 Апр, 20:45 #172 #976498

С чего начать изучение реверсинга? инб4 с ассемблера, и я чуток его знаю

Ответы976527

19 Апр, 21:33 #173 #976521

Аноны, помогите. Попался в руки исходный код ядра одного китайского андроид-девайса. Одна треть фалов в нем оказалась бинарными. Сделал hexdump, в первых 256 байт хранятся символы E-SaFeNet LOCK и пустые байты. Чем эту хуергу реверсить?

Ответы976527

19 Апр, 21:38 #174 #976524

Забыл еще добавить, что MIME-тип файлов - application/octet-stream, но я знаю что должен быть text/ascii

19 Апр, 21:42 #175 #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.

Ответы976535976541

19 Апр, 21:55 #176 #976535

>>976527
Душевное.
>А если у тебя исходники на руках, посмотри в них, как с бинарными файлами работать
Это должны быть тексты на Си, при компиляции таких файлов компилятор выдает ошибку и сборка не идет.
Первые 256 байтов - литералы E-SafeNet LOCK и нулевые байты. После первого 256байт-сектора начинается шифрокаша.

Ответы976537

19 Апр, 22:02 #177 #976537

>>976535
Вот четвёртой ссылкой гугл выдал такое https://github.com/c3c/E-Safenet/blob/master/esafenet.py
Ты скинул бы куда-нибудь эти исходники. А то гадать приходится, что там у тебя уже есть, а чего нет, что в файлах, а что в исходниках.

Ответы976540976550

19 Апр, 22:06 #178 #976540

>>976537
Да щас ссылку дам, откуда я сам брал - https://yadi.sk/d/mcHadISL3GckHi

19 Апр, 22:16 #179 #976541

>>976527
>Если что-то не понятно, гуглишь, учишь и продолжаешь реверсить.
А тут спрашивать можно?

Ответы976545

19 Апр, 22:26 #180 #976545

>>976541
Для этого тред и создавал, сам нуб.
ОП

Ответы976694

19 Апр, 22:47 #181 #976550

>>976537
Доки прочитал, и еще в нете навернул. И попробовал атаки по паттернам и известному тексту. Известный текст под рукой оказался, но не подходил из-за того, что файлы неодинаковые и это были сорцы с другого ведра. По паттернам не выдает адекватные ключи и не расшифровывает. А что с атакой по шифротексту - выдается текст, который нужно очень долго править. Хз что делать.

20 Апр, 04:24 #182 #976694

>>976545
Тогда мой первый вопрос. Открываю exe в олли и ищу в string references строку, которую программа сохраняет в файл, а именно AuthnToken. Но в string references по какой-то причине этой строки нет. Что делать дальше? Я даже не знаю, как такую проблему гуглить.

Ответы976695

20 Апр, 05:24 #183 #976695

>>976694
Может файл пожат, может олька ссылку не распознала на строку. Ищи в памяти по Alt+M, ставь хардварный брейкпоинт на чтение, жди.

Ответы976696976697976698

20 Апр, 05:31 #184 #976696

>>976695
Я перед открытием проверил в PEiD не запакована ли программа, и там никаких подводных не оказалось. Пошёл пробовать твой вариант.

20 Апр, 05:35 #185 #976697

>>976695
А на что ставить брейкпоинт?

20 Апр, 05:43 #186 #976698

>>976695
Нашёл стринг! Только не в экзешнике основной программы, а там же в либах. Можно эту строчку как-то отредактировать?

Ответы976703

20 Апр, 06:24 #187 #976703

>>976698
Hiew или любой двоичный редактор.

Ответы976868

sage 20 Апр, 08:32 #188 #976728

Нихуя вы тут ебанутые.

20 Апр, 14:26 #189 #976868

>>976703
А также сама олька. Или она не сохраняет релоки при редактировании длл? (никогда не пробовал)

Ответы976968

20 Апр, 15:22 #190 #976889

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

https://pastebin.com/5FfBvp95

20 Апр, 16:18 #191 #976923

Анон, помоги получить первые 8 секторов ЖД.
sector выходит с нулями и AH тоже равен нулю. Что я делаю не так?
https://pastebin.com/2FhtHes0

20 Апр, 17:54 #192 #976968

>>976868
>Или она не сохраняет релоки при редактировании длл?
А кто-то их вообще сохраняет? Кроме как при редактировании ресурсов увеличивать строки никто не умеет, кмк.

Ответы977056

sage 20 Апр, 21:26 #193 #977056

>>976968
Ну, во-первых, изменялку строк в .exe только ленивый не писал. Это совсем просто для длл и чуть посложнее (требует предварительного анализа в IDA, хотя бы автоматического) для exe без релоков.
Во-вторых, я думал, может быть, олька при сохранении дллки дропает релоки. Но если еще подумать, то ей незачем это делать.

Ответы977377

4 Кб, 379x76

21 Апр, 14:31 #194 #977262

Есть ли в природе распаковщики для InstallAnywhere?

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

Вариант с запуском на виртуалке не подходит -- так как потом надо тратить неделю на чтение лога куда оно что писало и что делало с реестром.

Ответы977357

21 Апр, 14:38 #195 #977264

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

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

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

Еще есть Magma, но там анальная лицензия. На рутрекере вроде есть пара ломанных версий. Но я не запускал.

Ответы978007

8 Кб, 304x219

21 Апр, 14:58 #196 #977275

В общем есть одна программа на Go. Мне нужно заменить значение в уже скомпиленом экзешнике константы mystring на "Hi!" . Как это можно сделать? В реверсе нуб.

Ответы977330

6 Кб, 438x195

35 Кб, 987x215

21 Апр, 16:00 #197 #977323

>InstallAnywhere
>Anywhere
>эта цена
>Java-машина не найдена
>2017
До чего мы дожили.

Ответы977326

sage 21 Апр, 16:02 #198 #977326

>>977323
Это не дожили, этой херне много лет уже, если я правильно помню.

21 Апр, 16:18 #199 #977330

>>977275
Открой экзешник в хекс-редакторе, найди Hello, да поменяй. Если строчка короче, то проблем нет.

Ответы977361

21 Апр, 16:53 #200 #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 Апр, 17:02 #201 #977361

>>977330
Я так и делал. А что делать если длиннее?

Ответы977377978008

21 Апр, 17:44 #202 #977377

>>977361
Выше анон писал >>977056 о некоторых волшебных программах, но ссылки не дал.

Ответы977453

sage 21 Апр, 20:33 #203 #977453

>>977377
Я ссылки не дал, потому что это делается скриптом строк за 20 от силы. Длл и exe с релоками:
1) Идем по релокам, смотрим, не указывают ли адреса, к которым применяются поправки, на строку (без дизасма, тупо взяли адрес и сравнили). Собираем такие адреса. В качестве парсера можно взять pefile для питона.
2) Кладем куда-нибудь новую строку: в хвост существующей секции (если есть место), в заголовок, можно новую секцию создать и т. д.
3) Патчим адреса, собранные на шаге 1 новым адресом строки.
Для exe без релоков:
1) Натравливаем на бинарник IDA, а когда анализ завершится, скриптом выдираем все ссылки на строку (idc.DfirstB/idc.DnextB).
2-3) Аналогично.
Есть случаи, когда все это не работает (хитрые ссылки, ида не распознала весь код, не ссылки из секции данных или слажала еще как-то и т. д.), но чаще всего этого более чем достаточно.

Ответы977458

21 Апр, 20:49 #204 #977458

>>977453
>Я ссылки не дал, потому что это делается скриптом строк за 20 от силы.
Ага. И где готовый для тех, кто вообще не в теме, а просто проходил мимо и решил заменить пару строк в бинарнике?

Ответы977499978010

sage 21 Апр, 22:02 #205 #977499

>>977458
> кто вообще не в теме, а просто проходил мимо
Скрипткиддисы нинужны. Но в виде исключения вот тебе самый простой случай для 32-битных бинарников с релоками. И это только патч ссылок, саму строку легко и вручную в хекс-редакторе воткнуть:
https://gist.github.com/anonymous/8deb02d068182119b344d30617c64030

Ответы977524

21 Апр, 23:38 #206 #977524

>>977499
>Скрипткиддисы нинужны.
Но ведь я именно он, сижу, венду ковыряю. Все мы когда-то были начинающими.

Ответы977550

sage 22 Апр, 00:27 #207 #977550

>>977524
Ну так ты ведь мог и сам написать такое же по описанию на любом известном тебе языке. И написав сам, ты бы приобрел знания и навыки, которые иногда пригождаются. Например, я писал подобное, когда нужно было массово перемещать глобальные инстансы классов из одной секции длл в другую - хуй бы я готовый скрипт под это нашел.

22 Апр, 03:32 #208 #977586

Есть экзешник, в котором где-то каждый раз формируется AES ключ и мне нужно его найти. Как это делается в общих чертах?

Ответы977590

sage 22 Апр, 03:40 #209 #977590

>>977586
S-box-ы ищи сигнатурно. Сам или каким-нибудь PEiD+kanal (что сейчас вместо PEiD модно, напомните?).

Ответы977591

22 Апр, 03:51 #210 #977591

>>977590
>S-box-ы ищи сигнатурно
Эээ... А можно ли так, чтобы я мог загуглить и найти какие-то туторталы или аналогичные кейсы?

Со своей стороны я глянул туторталы по ollydbg на ютубах, и ВО ВСЕХ они ищут текст из окошка в стиле "Ваш пароль неверный", подогрел с этого. У меня нет никаких окошек, я просто знаю, что где-то в коде есть мой AES ключ.

Ответы977592

sage 22 Апр, 04:22 #211 #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?

Ответы977593

22 Апр, 04:34 #212 #977593

>>977592
>Ну сходи в вики, прочитай
Почитаю и посмотрю прямо сейчас.
>Хуй знает. Тут чисто логически понятно, что нужно делать.
Ну я вообще ничего не знаю про реверс, я просто пишу на разных языках всякую фигню как хобби.
>Я тебе уже дал кейворд: peid+kanal, ты поискал сигнатуры?
Я даже не знаю, что такое сигнатуры, лол. Вот про PEiD знаю, это тулза для просмотра не упакован ли экзешник (у меня как раз упакован, кстати, но судя потому, что я нагуглил, это не важно в моем случае).
>И вообще, ты весьма расплывчато расписал задачу. Может, тебе вообще не AES-ключ, а ключ для AES нужен?
Нужен именно AES ключ. Смотри, программка обменивается с серверами какими-то своими ключами, потом на основе этих ключей внутри себя формирует ключ, которым потом шифрует свои данные с помощью AES ECB. И чтобы расшифровать данные мне и нужен этот ключ.
>Какие-нибудь рандомные байты, которые используются в качестве входа для KDF?
Тут без понятия вообще.

Задача для меня очень сложная, но я хотел бы разобраться с реверсом на основе этого практического примера. Проблема ещё в том, что экзешник 64битный и в ollydbg не открывается.

Ответы977596

22 Апр, 06:02 #213 #977596

>>977593
> разобраться с реверсом на основе этого практического примера
Упаковщик, 64 бита, криптография (да не простая, а AES та же RSA гораздо понятнее для прогуливавших математику, сервер - все вместе это очень хуевый выбор для первой задачи.

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

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

> Я даже не знаю, что такое сигнатуры
Многие алгоритмы используют различные константы (например, у CRC32 будет полином) и массивы констант (табличка в табличной реализации CRC32 или S-box в том же Rijndael), могут быть какие-то общие для архитектуры куски кода. Все это позволяет определить алгоритм, называется сигнатурами. Ссылки на константы позволяют выйти на использующие их функции, но вручную все проверять заебешься, поэтому есть всякие скрипты и плагины, которые знают дохуя сигнатур, и показывают все, что найдется в указанном бинарнике.

Ответы977603

15 Кб, 1159x78

22 Апр, 06:27 #214 #977603

>>977596
Спасибо за пояснения, да выбор не очень, но мне бы хотелось именно этого. Ксати, есть и 32битный экзешник, так что за 64бита можно не парится. Точно известно, что как минимум два человека написал утилиты, которые этот ключ автоматически вытаскивают без распаковки (делиться, конечно же, не хотят). Пикрилейтед нашел про мой случай.

Проверил peid+kanal и ничего не нашел. Даже не знаю, как подступиться.

Ответы977607

sage 22 Апр, 06:44 #215 #977607

>>977603
> ничего не нашел
Ну сам поищи по памяти. Таблицы в вики есть.

Ответы977608

22 Апр, 06:54 #216 #977608

>>977607
Ох лол, начал смотреть видео из лекций, что ты сбросил, оказалось что это лекции и преподаватель из моего университета.

Ответы977609977938

22 Апр, 07:04 #217 #977609

>>977608
>Ох лол, начал смотреть видео из лекций, что ты сбросил, оказалось что это лекции и преподаватель из моего университета.
Укачало с первых 10 сек видео.
Кто додумался это снимать ТАК. Там Филтифранк с смартфоном в качестве оператора?

Ответы977610

30 Кб, 500x279

22 Апр, 07:07 #218 #977610

>>977609
Problems?

50 Кб, 1503x570

22 Апр, 12:46 #219 #977677

Посоны, есть 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 Апр, 16:02 #220 #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

Ответы977938

sage 22 Апр, 19:20 #221 #977938

>>977818
> Компилятор не принимает строку call calc_abs.
> Что надо изменить, чтобы всё работало?
Написать такую функцию?

>>977608
> лекции и преподаватель из моего университета
Ты уверен, что учишься в Германии?

Ответы978033998605

22 Апр, 21:33 #222 #978007

>>977264
чувак, она не для учебы. Она для работы. С группами кольцами и т.д. Это полный бесплатный, кросплатформенная херовен для объемных вычислений. Более грубый аналог Maple. один из кучи вариантов (на википедии есть)
а еще есть группа программ для численных вычислений , матлаб и прочыее прочее. всё оно для своих целей.
Но не для обучения. Грубо говоря навароченные калькуляторы.
В математике научиться чему то можно только многократно прорешивая руками. чем больше тем лучше. В мое время препод матрицы 5х5 в квадрат умел возводить без проблем. А так же на ходу считать для адекватных размерностей определеители и прочую херь.
Хочешь научиться - берешь задачи и решаешь решаешь решаешь. Заебные места с вычислениями конечно можно в любой из софтин (хоть тупо самому написать) реализовать, чтоб время не тратить. но надо идею и ход мыслей всегда понимать.

22 Апр, 21:34 #223 #978008

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

22 Апр, 21:38 #224 #978010

>>977458
для полных нулей, качай с трекеров exelab dvd, там видеокурс, или гугли Нарваха Рикардо. Введение в крэкинг с нуля
вообще, в шапке инфы предостаточно, достаточно вечерок посидеть, и такие банальные задачи проблемой не будут.

22 Апр, 22:18 #225 #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

22 Апр, 22:18 #225 #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:31 #226 #978210

Допустим, я знаю, что программа обращается ко всем файлам в папке, и например расшифровует один из них "data.dat". Как поставить брейкпоинт на именно этот момент?

Ответы978232

23 Апр, 09:16 #227 #978232

>>978210
>Как поставить брейкпоинт на именно этот момент?
CreateFileW с условием, что имя файла соответствует "data.dat".

Ответы978526

23 Апр, 12:44 #228 #978286

>>960640 (OP)
>Для ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:
Блин, они все ущербны.
Вот вижу я структуру, которая по смещению 0х30 содержит PFILE_OBJECT, а дальше что? Все эти сайты никак не помогают это найти. Это просто статические страницы.
Хочу написать нормальный сайт с возможностью поиска по списку смещений и их содержимому. То есть вводишь типа список используемых смещений "0x18 0x10 0x8", или например "0х10 POBJECT_TYPE 0х30 PFILE", а он тебе "Это возможно структура struct_name_1, struct_name_2". Кто со мной?

Ответы978409978411

23 Апр, 14:37 #229 #978409

>>978286
> сайты
Но зачем? Дали им windbg, дали команду dt, что еще нужно?

Ответы978411

23 Апр, 14:40 #230 #978411

>>978409
>Дали им windbg, дали команду dt, что еще нужно?
Как с помощью dt найти
>>978286
>То есть вводишь типа список используемых смещений "0x18 0x10 0x8", или например "0х10 POBJECT_TYPE 0х30 PFILE", а он тебе "Это возможно структура struct_name_1, struct_name_2".
???

Ответы978413

23 Апр, 14:45 #231 #978413

>>978411
>???
То есть мне нужен поиск названия структуры по частично известному содержимому, а то и вовсе частично известному списку смещений.

Ответы978418978506

23 Апр, 14:47 #232 #978418

>>978413
> по частично известному содержимому, а то и вовсе частично известному списку смещений
А, все, понял проблему. Тут windbg не поможет, да.

23 Апр, 16:45 #233 #978506

>>978413
Записать всё в базу данных. Только данные подготавливать муторно и долго.

Ответы978550

23 Апр, 17:00 #234 #978526

>>978232
Можешь показать, как ставиться такой в олли?

Ответы978558

23 Апр, 17:27 #235 #978550

>>978506
Ага. Записать, написать скрипты обработки, поиска и удобный интерфейс.
>Только данные подготавливать муторно и долго
Это как раз автоматизируется скриптами. Никто руками забивать все 9000 структур не будет.

Ответы978693

23 Апр, 17:40 #236 #978558

>>978526
Ctrl+F2
Погугли, как юникод-строку в OllyDbg проверять. Вроде надо UNICODE добавить перед строкой.

23 Апр, 17:52 #237 #978566

Есть dll. Хочу в IDA (или в чем-то другом) узнать какие ключи реестра она может читать?

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

Может эта задача как-то проще решается?

Ответы978591978630

23 Апр, 18:28 #238 #978591

>>978566
>Кстати, их много там?
Штук 10.
>Ищу все их упоминания в dll.
А потом придётся выяснять, какие параметры у функций реестра, чтобы понять, какие ключи читаются. А параметры могут (и будут) формироваться динамически, и не факт, что удастся понять из кода без его запуска.
>Может эта задача как-то проще решается?
Что за библиотека то?

Ответы978619

23 Апр, 18:55 #239 #978614

хочу вытащить из одной игрушки формулу расчета урона в зависимости от прокачки
это из вашей области?

Ответы978620

29 Кб, 691x404

23 Апр, 18:59 #240 #978619

>>978591
>Что за библиотека то?
Для чтения формул. См. скриншоты выше. Правда, это уже другая версия. С другим COM интерфейсом.

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

С реестром dll'ка работает.

23 Апр, 19:00 #241 #978620

>>978614
Морально готовься потратить на это пару месяцев.

23 Апр, 19:14 #242 #978630

>>978566
> узнать какие ключи реестра она может читать?
1) Пишется минимальный хост, берется ProcMon/RegMon от SysInternals. Так оно быстрее всего будет.
2) Можно хукнуть RegQueryValueExW/RegSetValueExW и подобные, анализировать адрес возврата, проверяя, из длл ли оно вызвано. Есть готовые утилиты для трейса API.

23 Апр, 20:53 #243 #978693

>>978550
Вот решение похожей задачи, но без сайта и вообще без каких-либо данных, только код
https://redplait.blogspot.fr/2011/02/partial-structs-matcher.html

Ответы978775

79 Кб, 1100x633

23 Апр, 22:16 #244 #978735

Посоны, скомпилил этот плагин:
https://github.com/alexhude/FRIEND
Осталось сделать к нему конфиг для Intel (ну или другой процессор, если вам надо). Не хотите со мной?

Автор захерачил только для ARMv8.

Ответы978737978762978840

23 Апр, 22:17 #245 #978737

>>978735
>8к строк xml-параши
нет, спасибо

Ответы978739

23 Апр, 22:23 #246 #978739

>>978737
Ну а я попробую сделать. Заодно прочитаю 4700 страниц мануала Intel. Всегда мечтал.

sage 23 Апр, 22:49 #247 #978762

>>978735
Вот если бы оно чтение/изменение отдельных битов в memory-mapped-регистрах документировало - была бы сказка, а референс по инструкциям нахуй не нужен. Посмотреть документацию по регистру в мануале я и сам могу.

23 Апр, 23:10 #248 #978775

>>978693
Блин, а ведь даже PDB дампить нечем. pdbdump пишет The specified module could not be found и вообще древний как говно мамонта, Dia2Dump выдаёт нечитаемую хуиту, pdbxtract гуевый и вообще проёбывает типы, pdbripper врлде норм, но тоже гуевый, pdbdump.py требует какой-то модуль winnt, который я не нагуглил. Везде хреново.

Ответы978832

sage 24 Апр, 00:14 #249 #978832

>>978775
Вбей на github в поиске cvdump.

Ответы978858

24 Апр, 00:17 #250 #978840

>>978735
Эта фигня так и не стала показывать мне хинты. Если кто хочет потестить, то можете скачать отсюда билд:
https://github.com/kamino/FRIEND/tree/multios-port/bin

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

Разбираться в ее кишках лень.

24 Апр, 00:30 #251 #978852

Офигительная программа:
http://www.rohitab.com/apimonitor
Как софт от Руссиновича, только еще лучше.

24 Апр, 00:43 #252 #978858

>>978832
И как превратить её высер в человеческий вид?

Ответы978860

sage 24 Апр, 00:44 #253 #978860

>>978858
Опенсорс жи - сразу высирай то, что требуется.

Ответы978904

24 Апр, 02:35 #254 #978904

>>978860
Осталось разобраться в 400+ кб сорцов и переписать половину, чтобы выдавала правильно. Делов на пару дней, ага, один из которых я буду учить плюсы, на которых ни строки не написал.

Ответы978911

24 Апр, 03:01 #255 #978911

>>978904
Ах да, оно ещё и не компилится, о чём и написано в репозитории. Так что перед переписыванием его ещё дописать нужно. И это явно не на пять минут, иначе кто-нибудь эту задачу уже выполнил бы.

Ответы979235

24 Апр, 03:02 #256 #978912

Нихуя не понимаю. Список нубских вопросов:
1. Когда ищешь значения в Cheat Engine и находишь адрес вида 00000000, то это адрес RAM, который занимает это знание, правильно?
2. Ollydbg в основном окне показывает дизасемблированный код экзешника не запуская его? То есть по сути это то же, что и открыть экзешник в текстовом редакторе и вручную перевести все в ассемблерный код?
3. Если всё же OllyDbg запускает экзешник, то как этот экзешник может работать правильно, когда в при настоящем запуске в него передаются команды вроде --command и подтягиваются библиотеки?
4. Если экзешник запускается, то зачем говорят, что нужно его распаковать перед дизасмом, если он в RAM находится в распакованном виде? Он же сам распаковывается при запуске, разве нет?
5. Если в запакованной программе есть ключ, то можно ли его вытащить без предварительной распаковки? Можно ли автоматизировать вытаскивание этого ключа при каждом запуске этой запакованной программы (написать небольшую утилиту)?
6. Ключ будет хранится в регистрах вроде EIX при выполнении какой-то строчки кода, правильно? А если программа запакована?

Ответы978936978939

24 Апр, 07:29 #257 #978936

>>978912
Ты почитай какую-нибудь книжку для начинающих. Много вопросов отпадёт. "Техника отладки программ без исходных текстов", например.
1. Да. Если придираться к словам, то это виртуальный адрес, он может быть и не в RAM.
2. Ollydbg запускает его, но останавливает выполнение программы (в зависимости от настроек). Поэтому нет, это не одно и тоже.
3. Экзешник запускает операционная система, Ollydbg здесь выступает как Explorer, то есть создаёт процесс, но Ollydbg запускает его как отладчик (такие опции есть при создании процесса, также можно подключиться к уже запущенному процессу). Поэтому операционная система уведомляет отладчик о событиях, таких как загрузка/выгрузка dll, создание/удаление потока, исключения в программе и некоторые другие. Это не эмулятор, это приложение запускается и работает так же, как и любое другое. С некоторыми нюансами, про которые уже написал.
4. Программа запаковывается для защиты от статического анализа, т.е. без запуска приложения (в Ida, например). При динамическом, т.е. когда программа запускается в реальной среде, проще противостоять отладке, поэтому и пакуют. Не каждая программа упакована, соответственно, не каждую надо распаковывать. Не уверен на счёт правильности терминов, но общая идея, надеюсь, понятна.
5. Нет, нельзя. Упаковка - это, с некоторыми оговорками, архив. Ты не сможешь даже узнать, что в нём, пока не распакуешь. Да, можно, даже в отладчике можно скрипт написать, есть соответствующий плагин для Ollydbg.
6. Где угодно. Зависит от того, как программист написал это. Может в секции, может в коде, в регистрах он будет, если этот участок кода написан на ассемблере, иначе как решит компилятор. Но в регистр попасть он откуда-то должен.

Ответы978940978944

sage 24 Апр, 07:33 #258 #978939

>>978912
1. Не совсем правильно. Это виртуальный адрес. Виртуальные адреса создают для процесса иллюзию, что кроме него и куска системы в памяти больше ничего нет.
2. OllyDbg - отладчик, отладчики запускают код. Но OllyDbg останавливается еще в системных библиотеках, до того, как код из exe получит управление. И нет, если попросишь, олька тебе покажет дизасм хоть от аллаха, это не обязательно будет код из exe.
3. Это и есть настоящий запуск. Библиотеки подтягиваются, аргументы командной строки можно указать. Процесс точно так же работает и управляется системой, как и при запуске без отладчика (есть некоторые исключения, их используют для детекта отладчика).
4. Упакованный exe - это тебе не архив. Он запускается, выделяет память (или не выделяет), распаковывает или расшифровывает сам себя, копирует распакованные данные поверх себя (или не копирует). Поэтому чтобы увидеть настоящий дизасм, а не код упаковщика и мусор в виде упакованного кода, нужно распаковать или дождаться, пока само распакуется. Очевидно, что если ты хочешь начать отладку с самого первого байта распакованной программы, просто подождать не получится. Алсо, многие протекторы не держат код в рам целиком в распакованном виде, а распаковывают по требованию и/или выполняют код на вм.
5. Да можно, но чтобы узнать как там все устроено, тебе нужно видеть настоящий код.
6. Регистров EIX в x86 нет, в регистрах подолгу ничего не хранится, они нужны для выполнения операций над данными. Ключ будет лежать в памяти. А может и не будет.
Не перестаю проигрывать с треда. Скрипт-кидди и ньюфаг, полезший пилить читы.

Ответы978944979215

sage 24 Апр, 07:34 #259 #978940

>>978936
Ну епт. Всю ночь пост висел, а мы одновременно написали почти одно и то же.

24 Апр, 08:10 #260 #978944

>>978936
>>978939
Благодарю, может и правда стоит почитать книжки.

24 Апр, 17:36 #261 #979215

>>978939
>Скрипт-кидди и ньюфаг, полезший пилить читы.
И сажа-фаг, который пилит полезные советы и зачем-то при этом сагает тред.

24 Апр, 18:31 #262 #979235

>>978911
В общем нашёл нормальный проект, допиленное говно мамонта. Требует msdia120.dll, но не особо об этом распространяется, можно просто скачать её из интернета и кинуть рядом, так как с разными студиями ставится разная версия этой либы, у меня она была msdia80.dll, от чего программа и помирала с невнятным The specified module could not be found.
https://redplait.blogspot.fr/2010/09/patched-pdbdump.html

Ответы979779

24 Апр, 22:46 #263 #979380

Есть ли какая-нибудь удобная программа для поиска бинарной строки во всех файлах внутри директории?

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

Гуглится только софт для поиску внутри 1 файла. Не хочу начинать скрипты писать.

Ответы979405979427

sage 24 Апр, 23:08 #264 #979405

>>979380
grep (но он под винду обычно без -P собран, а -P желательно иметь, чтобы паттерн писать без боли), bgrep (но он не умеет в glob, просто обходит указанную директорию рекурсивно). Поэтому проще всего все же написать примерно 4 строки на питоне под себя. А так, я обычно просто фаром ищу, он умеет в хексы.

24 Апр, 23:34 #265 #979427

>>979380
Total Commander?

25 Апр, 02:55 #266 #979522

Косноязычный диктор и плохое качество видео, но самый подробный и правильный (с точки зрения обучения с нуля) гайд на дебаг с олли
https://www.youtube.com/playlist?list=PL59fvn5FIiQG0CrnALLgXzdpDTOk0hrz2

Ответы979538

25 Апр, 06:45 #267 #979538

>>979522
Как мне кажется, это наихудший способ обучения. Лучше всего не видео, а текстовая статья. Гугл выдал мне это https://exelab.ru/f/index.php?action=vthread&forum=5&topic=14847
Можно погуглить автора этих статей Рикардо Нарваха (Ricardo Narvaja).

Ответы979555

165 Кб, 813x810

25 Апр, 07:54 #268 #979555

>>979538
Не согласен, насчёт видео. Мне НАМНОГО легче заходит такой способ, даже с корявым диктором.

Но если нравится текстовая версия, то вот тут есть ещё более удобная в одном файле https://yadi.sk/d/EGv70o9F3ChD9N
Добавьте в шапку на перекате, для нуфагов самое то.

25 Апр, 11:15 #269 #979656

Подкину еще канал, на полноту какую-то парниша не претендует, но мне оче нравится
http://liveoverflow.com/
https://www.youtube.com/channel/UClcE-kVhqyiHCcjYwcpfj9w
У него там в видео по асму есть ссылки на какие-то сайты, сам я нихуя не понил, но вроде как игровые задачки по RE

25 Апр, 13:39 #270 #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 выдаёт им номера, хотя, как по мне, лучше их встроить, так как все встреченные мною такие объединения были встроены.

Какие ещё заумности есть в структурах, на которых может споткнутся утилита?

32 Кб, 489x181

27 Апр, 16:05 #271 #981040

В посте присутствует слово из спам-листа
какое?

Ответы981071

27 Апр, 17:10 #272 #981071

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

28 Апр, 16:23 #273 #981527

>>960640 (OP)
Как переделать программу одной ОС в программу другой ОС?
Вот, допустим, у меня программа gcc для линукса. Хочу я её перенести на мою собственную ОС. По сути надо не сильно изменить. Ведь да? Надо только поменять сигнатуру исполняемого файла, если надо, и заменить системные вызовы на вызовы специальных процедур, которые будут эмулировать системные вызовы в Линуксе. Я всё учёл?

Ответы981529981531

28 Апр, 16:29 #274 #981529

>>981527
Всё учёл, кроме того, что люнЮфъсь — это не операционная система, а прежде всего религия.
А так-то да, зделой POSIX API, купи торговую марку, догадайся как попадать в новостные ленты (это вот не так легко, как кажется) и вперёд, у тебя есть своя ОС.

28 Апр, 16:30 #275 #981531

>>981527
>Вот, допустим, у меня программа gcc для линукса.
У неё есть исходные коды, изменяй @ компиляй.
>Надо только поменять сигнатуру исполняемого файла, если надо
Сами форматы исполняемых файлов отличаются, так что не всё так просто.
Целевую программу и ОС не назовёшь, или нам дальше давать общие советы?

130 Кб, 1206x672

104 Кб, 1372x727

01 Май, 20:10 #276 #983183

Репост из мертвого треда
Неофит ИТТ. Поясните пж за следующую вещь. В hex-редакторе при анализе структуры PE файла (pic 1) вижу, что VA OEP = 10212, а ImageBase = 4194304, тогда абсолютный адрес точки входа = 4194304 + 10212 = 4204516 = 0x004027E4, и вроде как в дебаггере именно это число я и должен увидеть помеченным как entry point, но чому то в ollyDbg2.01 я вижу (pic 2) 0х00CE27E6. Я неправильно считаю точку входа? Неправильно трактую значение адресов в левом столбце в ollyDbg? Или еще что то делаю не так?

Алсо, я понимаю, что в olly я вижу образ процесса, а не дизассемблированный исполняемый файл, и загрузчик может выравнивать образ по размеру страницы оперативной памяти, но не настолько много ж блеть. Или настолько?
И да, исполняемый файл не упакован/не зашифрован, т.к. написан мной.

Ответы983230983252

sage 01 Май, 20:39 #277 #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.

Ответы983239983252983829

01 Май, 20:47 #278 #983239

>>983230
Понял, спасибо.

01 Май, 20:58 #279 #983252

>>983183
>>983230
Бля, ну вот откуда вы все это умеете? (

Ответы983493

02 Май, 12:55 #280 #983493

>>983252
Я давно догадывался, что тут сидит норот с форума RSDN.

73 Кб, 1227x620

02 Май, 13:01 #281 #983495

Поясните суть дауну, пожалуйста. Ковыряю туториал чит энджина, часть с поинтерами.

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

1. Почему в памяти по адресу 01892950 нет значения 325?
2. Если прочитать значения оффсета 00634630 в какой-то левой программе, то в нем не будет адресса 01892950. Почему так?
3. 01892950 это значение, которое должно лежать в (00634630 + BaseAddress)?

Ответы983559983921

02 Май, 15:13 #282 #983559

>>983495
>1. Почему в памяти по адресу 01892950 нет значения 325?
325 в hex это 0x145. А теперь смотри, что у тебя в памяти.

Ответы983605

02 Май, 16:20 #283 #983605

>>983559
Ну охуеть! И правда.

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

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

Пик2. Читаю значение по оффсету 00634630 в надежде получить свой финальный адрес (в нем же должен храниться указатель, разве нет?), и получаю совсем не то значение. Что я делаю не так?

Ответы983606

29 Кб, 689x271

37 Кб, 692x270

02 Май, 16:21 #284 #983606

>>983605
Уууу, отклеилось

Ответы983621983624

02 Май, 16:59 #285 #983621

>>983606
Всё, сам понял. Там правилольное значение, просто в десятичной системе.

02 Май, 17:03 #286 #983624

>>983606
Пздц. Это весь тред такой или всё-таки стоит почитать?

Ответы983628983761

02 Май, 17:05 #287 #983628

>>983624
Ой, иди нахуй, я только вкатился и пытаюсь разобраться.

02 Май, 20:57 #288 #983761

>>983624
В прошлом анон на асме на голом железе что-то рисовал, а в этом только шапку, если вдруг чего оттуда не читал.
ОП

02 Май, 21:19 #289 #983783

Никто случаем не поделится парой логин-пароль для базы crackme на exelab по ссылке https://exelab.ru/crackme/

Или мб есть какой нибудь другой ресурс с кучей crackme и мануалом по их прохождению? Язык можно русский или английский.

Ответы983786

02 Май, 21:21 #290 #983786

>>983783
Всё, отбой. Это просто я тупой.

02 Май, 22:27 #291 #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 - константный байт, но из каких соображений мне вбивать необходимую команду?

Ответы983826983829

02 Май, 22:33 #292 #983826

>>983820
Кажись нашёл онлайн конвертер. Втыкать NOP на место лишних байт нормальный подход, или плохой тон? И еще, Это сейчас мне повезло, и
cmp eax, eax занимает 2 байта, а cmp eax, 0 - 3. В другой ситуации мне придётся сдвигать машинный код на n байт вправо от места вставки? Я так понимаю, это может отразиться негативно, ведь в программе есть ссылки на константные переменные. Или если константные переменные в секции .data, а хуячу я в .text, то можно не ссать и вообще полный вперёд?

Ответы983829

sage 02 Май, 22:37 #293 #983829

>>983820
По даблклику там переименование регистров, просто для удобства чтения дизасма. Сам код от этого не меняется. А чтобы пропатчить код есть Edit->Patch program->Assemble, но это пропатчит только базу. Чтобы сохранить изменения, там же есть Apply patches to input file.

>>983826
Втыкать нопы норм. Единственная проблема с патчами - релоки. Если ты правишь код, на который есть релоки, нужно убирать соответствующую запись из релоков, если втыкаешь абсолютый адрес - добавляешь запись. Если релоков нет, и >>983230 ASLR отключен, то просто патчишь.

Ответы983832

02 Май, 22:39 #294 #983832

>>983829
Всего 5 минут в этом вашем RE и эти релоки уже начинают мне надоедать. Чем чревато просто уебать в pe optional header в dll characteristics аргумент, в который не входит dynamic relocation? Зойчем он вообще нужен? Или в особо больших программах, которые потребляют много ОЗУ это будет полезно?

Ответы983839

sage 02 Май, 22:52 #295 #983839

>>983832
Для .exe можешь спокойно поставить флаг relocation stripped в IMAGE_FILE_HEADER. Для .dll без релоков никак.

Ответы986156

03 Май, 02:00 #296 #983921

Это снова я >>983495

Что обозначает такая запись "App.exe"+016751A0 ? Это значит базовый адрес "App.exe" плюс смещение, или просто смещение от нуля?

Ответы983936

sage 03 Май, 02:23 #297 #983936

>>983921
У нормальных людей да, это базовый адрес модуля со смещением. Что там в читенжине наворотили, смотри у них в мануале.

Ответы983942

03 Май, 02:39 #298 #983942

>>983936
Да и в читенджине должно быть основа плюс смещение... Вот только у меня ничего не выходит, теперь уже в 64битном приложении. Основа у него 1400000000 и даже без смещения это уже больше, чем нужно.

06 Май, 22:48 #299 #986094

Можно ли как-то Hex-Rays заставить показать псевдокод ассемблерного листинга структурной обработки исключений? Просто он выдаёт код как-будто никаких try с except вообще не существует. А то я скоро Asm начну понимать.
Версия Ida 6.8, по понятным причинам.

Ответы986121

sage 06 Май, 23:27 #300 #986121

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

07 Май, 00:29 #301 #986156

>>983839
Зачем нужны релоки, если можно компилить в position independent code?

Ответы986175986177

07 Май, 00:49 #302 #986175

>>986156
PIC тоже содержит релоки, но только для секции DATA и по одному перемещению на каждую переменную (а не на каждое обращение).

sage 07 Май, 00:52 #303 #986177

>>986156
PIC медленнее для 32-битного кода - приходится жертвовать регистром, а их и так мало.

sage 07 Май, 08:23 #304 #986221

>>986213
> Для прыщей есть книжка Линкерс-анд-лоадерс, а для спермы что есть?
Книжка линкерс энд лоадерс (там PE вниманием не обходят, да и базовые принципы везде одинаковые), книжка виндоуз интерналс, спека формата PE и многочисленные статьи.

08 Май, 02:56 #305 #986660

Допустим есть строка с байтами из памяти cc 02 77 5e e7 02 02 10 14 00 0e 00 88 18 00 и тд. Как понять, где заканчивается одно значение и начинается другое? Тут могут быть строки, 1-байтные, 2-байтные, 4-байтные переменные, я хз.

Ответы986663

sage 08 Май, 03:04 #306 #986663

>>986660
Нужно найти код, который работает с этими данными. Например, поставить на эти данные хардварную точку останова при чтении/записи.

Ответы986664

08 Май, 03:06 #307 #986664

>>986663
У меня программа запакована. Допустим, я часть этих данных экспериментально могу узнать просто меняя данные. Например, я так вытащил имя пользователя, длину имени и еще пару значений. Но что с остальными, если доступа к нормальному коду нет?

Ответы986665

sage 08 Май, 03:15 #308 #986665

>>986664
Можно менять данные и смотреть поведение программы. Можно собрать больше таких данных, и на основе статистики что-то разбирать. Все же можно ставить бряки и смотреть код - обращаться к ним будет уже распакованная программа, если это не протектор, конечно. Можно разбирать частные случаи (как твоя длина имени) - искать длины/смещения, указатели, числа с плавающей точкой, круглые/известные/магические числа. Магии, которая позволит однозначно определить всю структуру на основании одного куска данных нет.

Ответы986666

08 Май, 03:17 #309 #986666

>>986665
>Магии, которая позволит однозначно определить всю структуру на основании одного куска данных нет.
А жаль, именно это мне и нужно было. Игрушка онлайновая, размер огромный, библиотек тысячи, клиент запакован... тут брейкпоинты не помогут.

Ответы986676

08 Май, 04:46 #310 #986676

>>986666
Тебе что, её всю отреверсить нужно как мне винду?
Раз нет, то ищи бряками то, что нужно.

Ответы986677

08 Май, 04:49 #311 #986677

>>986676
Я не понимаю, как бряк будет работать с онлайновым приложением. Если связь прервется, то оно просто упадет, это же ММО.

Ответы986856986860

08 Май, 16:57 #312 #986856

>>986677
Если оно падает при каждом разъединении, то это лол.
Впрочем, никто не говорил, что будет легко.

Ответы986876

sage 08 Май, 17:00 #313 #986860

>>986677
Можно просто в журнал писать при брейкпоинте, а не останавливаться; можно трейс запускать на некоторое время. Олька умеет вроде.

Ответы986876

170 Кб, 482x369

08 Май, 17:21 #314 #986876

>>986856
>оно падает при каждом разъединении
Ну не просто обваливается, а культурно выдает красивую ошибку с кнопочкой ОК, после нажатия на которую процесс завершается.

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

Но суть в том, что я уже написал все то, что мне нужно - программку, которая из памяти итой игры выдирает нужный кусок, парсит его на состав группы, с сайтов собирает рейтинг по именам и выдает эту инфу в красивый списочек. Проблема только в том, что игра периодически, если долго ничего не происходит, начинает записывать поверх нужных адресов какую-то левую инфу, так что иногда в списке появляется что-то вроде OIUYaiq3q222ItGI_yG. Ну и похуй. А, еще работает только с 64битным клиентом, надо дописать 32битные оффсеты, но мне лень.

09 Май, 10:18 #315 #987267

>>960640 (OP)
ЗА ЩО во многих исходных кодах используется синтаксис AT&T? Он же неудобный. Или авторы специально нам дают код в AT&T, а сами используют intelовский синтаксис?

09 Май, 13:19 #316 #987404

>>960640 (OP)
дайте ссылку на код работающего кернеля, который переводит в 64-битный режим.

Ответы987661

09 Май, 17:30 #317 #987661

>>987404
Гугли Windows Research Kernel :3

11 Май, 20:44 #318 #988972

Бампну прогрессом реверса WRK что ли...
Убавил ntoswrk.lib на 520кб, вышло 922кб кода. Брал самое лёгкое, дальше сложнее. Видимо, работа эта непосильна для одного человека за разумное время. Продолжаю.

11 Май, 21:35 #319 #989000

Как в ollydbg поставить БП на нажатие кнопки?

Ответы989024989029

11 Май, 22:47 #320 #989024

>>989000
F2.

Не лезь с тупыми вопросами, дебил, блядь, пока базу не освоил самостоятельно.

Ответы989033

11 Май, 22:58 #321 #989029

>>989000
Ну примерно так и ставить, да. Только условный, на оконной процедуре, по сообщению WM_KEYDOWN и с проверкой wParam на нужную кнопку.

Ответы989033

11 Май, 23:08 #322 #989033

>>989024
Пидорас, я знаю хот кеи. Ты дал очень точный, но абсолютно бесполезный ответ, как в анекдоте про неудачливого парашютиста и программиста. Я имел в виду, как мне в интерфейсе ollydbg найти кнопку (например, по тексту на ней), и воткнуть БП на событие нажатия.
вот этот господин >>989029 дал информативный ответ на вопрос, за что ему спасибо. правда я уже делал это, просто забыл как, но всё равно спасибо.

Ответы989035989106

sage 11 Май, 23:28 #323 #989035

>>989033
View->Windows. А раз ты говорил про кнопку интерфейса, то брейкпоинт надо на WM_COMMAND ставить.

12 Май, 04:30 #324 #989106

>>989033
Когда я в подходящем настроении, я не могу пройти мимо тупых пидорасов в /pr/, не назвав их тупыми пидорасами. У меня хоть и был ДИАЛАП, когда я делал первые попытки писать кейгены, но я себе не мог позволить задать ньюфажный вопрос, не прошерстив архив статей на жестком диске на предмет информации, которая бы помогла мне самостоятельно найти ответ на свой вопрос. В каждом, сука, треде регулярно появляются аноны, которые путают форму ответа в зекаче с поисковой строкой.

Раньше трава была зеленее и на форумах ридонли за такое давали.

Ответы989147

sage 12 Май, 10:25 #325 #989147

>>989106
> на форумах ридонли за такое давали
Пиздишь. Мне в конце 90-х в IRC, не жалея своего времени, объясняли базовые, в общем-то, вещи, на разный лад, пока я не понял. И я не помню, чтобы на каком-нибудь васме давали ридонли за вопросы по теме. Или, может быть, ты сидел в каком-нибудь ололо-преватном какерском форуме среди илиты, которая возгордилась и не могла снизойти?

13 Май, 17:04 #326 #989990

>>960640 (OP)
дайте ресурс, где написано как устроены команды x86_64, где там префиксы, коды команд и всё такое.

Ответы990001

13 Май, 17:10 #327 #989992

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

Ответы990001

sage 13 Май, 17:28 #328 #990001

>>989990
Говоришь в гугле Intel Software Developers Manual. В начале instruction set reference будет глава про форматы, в конце - овердохуя таблиц.

>>989992
010 editor и моск. Можешь посмотреть на Kaitai Struct, но я лично считаю говном и сам кайтай, и его автора разумных доводов приводить не буду.

Ответы990008990014

13 Май, 17:47 #329 #990008

>>990001
>Говоришь в гугле Intel Software Developers Manual
Сложна. Короче, я просто через хекс-эдитор проверю как компилит фасм в разных комбинациях операндов и возьму результат. Я делаю компилятор своего личного языка программирования.

Ответы990012

sage 13 Май, 17:55 #330 #990012

>>990008
> делаю компилятор своего личного языка программирования
Можешь поступить, как авторы PowerBasic - генери асм-код, используй fasm для сборки (алсо существует fasm as dll, гуглится). Ну или осиль LLVM, это гораздо более правильный подход.

Ответы990025

13 Май, 17:56 #331 #990014

>>990001
>Kaitai Struct
Наткнулся на это когда гуглил. Совсем говно? Приведи какие есть доводы, не важно насколько они разумны.

Ответы990028

13 Май, 18:23 #332 #990025

>>990012
Ох, нет, это ещё сложнее, я ничего не понял что в википедии о нём написано. Я лучше буду использовать примеры gcc, как он оптимизирует код, плюс попробую придумать своё.

Ответы990029

sage 13 Май, 18:31 #333 #990028

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

sage 13 Май, 18:31 #334 #990029

>>990025
Можешь код на Си генерить, это тоже нормально, так даже сам Страуструп для крестов делал первое время.

Ответы990058

13 Май, 18:52 #335 #990042

Реквестирую максимально простую прогу, которая выводит десятичное число. Сам пытаюсь, но не выходит, несмотря на нагугленное. FASM.

Ответы990049990055

sage 13 Май, 19:04 #336 #990049

>>990042
Забыл указать ОС и архитектуру.

Ответы990052

13 Май, 19:06 #337 #990052

>>990049
DOS, x86

13 Май, 19:08 #338 #990055

>>990042
Посмотри здесь:
http://asmworld.ru/uchebnik/

как раз уроки на FASM. И, помнится мне, там есть пример того, что тебе нужно.

Ответы990065

13 Май, 19:14 #339 #990058

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

13 Май, 19:35 #340 #990065

>>990055
Мне бы попроще пример. Там слишком уж комплексный. Потыкаю, коонечно

21 Кб, 892x102

13 Май, 20:30 #341 #990098

>>960640 (OP)
Изучал тут команду mov с помощью того что мне выдавал фасм. И тут я наткнулся на что-то странное. Если ввести mov [r12],r13, то вместо обычных трёх байтов мне выдаёт 4. Добавляется байт 24h. Какого фига? Я и насмом проверил, он тоже добавляет такой же байт. Это что? Какой-то костыль x86-64?

Ответы990108

sage 13 Май, 20:50 #342 #990108

>>990098
Давай ты сходишь в мануал интела и прочитаешь про форматы сначала? А потом мы уже поговорим про то, что ты не поймешь.

Ответы990298

14 Май, 09:23 #343 #990298

>>990108
Нет, там много читать. Я лучше и дальше продолжу исследовать с помощью того что выдаёт фасм. Команда mov, похоже, одна из самых сложных.

14 Май, 17:31 #344 #990460

Народ, кто-то пояснит как проверить первый бит числа, один оно или два?

Ответы990461990547990672990673

14 Май, 17:32 #345 #990461

>>990460
Или 0

Ответы990547

14 Май, 19:23 #346 #990545

>>960640 (OP)
Как в фасме подключить динамическую библиотеку? А статическую?

Ответы990606

14 Май, 19:25 #347 #990547

>>990461
>>990460
Щито? Не совсем понял, но возможно тебе помогут битовые сдвиги. shr это сдвинуть вправо, а shl влево. Сдвинутый бит помещается в флаг cf. далее условными переходами jc (если cf = 1) и jnc (если cf = 0)

Ответы990608990673

14 Май, 19:36 #348 #990555

>>960640 (OP)
Почему у меня не получается дизассемблировать через objdump исполняемый файл, который я скомпилировал фасмом? Мне выводит только, что формат ELF-x86-64

Ответы990745

14 Май, 20:28 #349 #990606

>>990545
Динамическую библиотеку через data import и макросы library и import. Гуглится, есть в мануале.
Статическую, считай, никак. Линкера в фасме нет, он сразу генерит исполняемый файл. Делай format elf или format ms coff и линкуй любым внешним линкером.

14 Май, 20:31 #350 #990608

>>990547
Эксперт в треде, все в Бабаяна!

Логическое И с единицей уже не в моде у нового поколения.

Ответы990610

14 Май, 20:33 #351 #990610

>>990608
В моде, но я так понял, что вопрос в определении самого старшего бита. Это не сдвигами и не test/and решается.

14 Май, 22:27 #352 #990672

>>990460
mov EAX,%хранилище числа%
AND EAX,1 ;в результате логического умножение с 1 результат будет 1, если первый бит =1 и 0 если нет
JZ EIP+X ;проверяешь флаг Z и переходишь куда тебе надо.

14 Май, 22:28 #353 #990673

>>990547
>>990460
Хотя этот вариант даже лучше.

14 Май, 23:50 #354 #990745

>>990555
>дизассемблировать через objdump
А разве objdump это дизассемблер?

АЛСО, у меня такой вопрос. При сравнении кода в объектниках WRK и кода, скомпилированного из Win2000, часто замечаю, что вместо вызова RtlInitUnicodeString с константным значением выполняется просто присваивание размеров и строки в буфер переменной типа UNICODE_STRING. Собственно вопрос- они это блядь, в ручную меняли, или это действие какого-то макроса? Я для себя запилил INIT_CONSTANT_UNICODE_STRING и заменяю RtlInitUnicodeString на этот макрос, когда это нужно для соответствия коду XP, но не уверен, что моё решение рассово правильное, так как не нашёл подходящего готового макроса или инлайновой функции, и при этом видел, как в некоторых файлах присваивание идёт напрямую (что имхо хуита какая-то).

Ответы990752

15 Май, 00:03 #355 #990752

>>990745
> А разве objdump это дизассемблер?
Да, там есть простой дизасм. objdump -d

> RtlInitUnicodeString
https://msdn.microsoft.com/ru-ru/library/windows/hardware/ff563617(v=vs.85).aspx

Ответы990771

15 Май, 00:33 #356 #990771

>>990752
>https://msdn.microsoft.com/ru-ru/library/windows/hardware/ff563617(v=vs.85).aspx
Почти, но не то. Сама строка не объявлена как константная, поэтому этот код не подходит.

Ответы990785

15 Май, 01:10 #357 #990785

>>990771
Код покажи.

Ответы990819

sage 15 Май, 03:27 #358 #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, десятки их. Или вообще пойти отрефакторить этот десяток файлов, ибо нехуй код повторяющийся держать.

Ответы990957

15 Май, 09:31 #359 #990871

Напишите код для вычисление квадратного корня, пожалуйста.(FASM)

Ответы990958991068

51 Кб, 785x499

15 Май, 10:36 #360 #990904

Нужно это сделать на ассемблере FASM

15 Май, 11:45 #361 #990957

>>990819
> на свой макрос
И чего ты выделываешься тогда? Твой макрос абсолютно идентичен RTL_CONSTANT_STRING, за исключением того, что ты присваиваешь почленно, а макрос генерит литерал. И да, RTL_CONSTANT_STRING - это общепринятый способ, когда ты инициализируешь UNICODE_STRING строковым литералом.

Ответы991658

sage 15 Май, 11:46 #362 #990958

>>990871
$10

Ответы991737

15 Май, 14:41 #363 #991068

>>990871
каждый раз отнимаешь одну десятую и проверяешь квадрат не меньше числа и так далее

Ответы991076991225991737

15 Май, 14:58 #364 #991076

>>991068
sqrt(0.01)

15 Май, 17:14 #365 #991160

где можно почитать о MFC reversing?

Ответы991178

sage 15 Май, 17:31 #366 #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 Май, 18:25 #367 #991225

>>991068
ебать, я нихуя не понял

36 Кб, 878x564

14 Кб, 1531x349

36 Кб, 635x873

1 Кб, 613x31

15 Май, 19:35 #368 #991288

Пытаюсь освоить переполнение буфера
Я должен заполнить массив char своими адресами возврата, чтобы программа прыгнула на нужное мне место (пик1).
проблема в том, что эксплоит работает в виде пик2 (не обязательно именно так, но допустим программа с дырой работает через командные аргументы), и символ, нужный для верного адреса - \x00, что является терминальным символом.
Насколько я знаю, не существует способа передачи этого символа через аргументы.
Конечно же, я могу переписать код, чтобы передавать не массив char , а скажем, массив интов или чего-то подобного, но это будет уже не то. Интересно, как поступать в ситуации, в которой есть именно эта дыра, код программы - пик3, или, к примеру, нужный адрес имеет вид пик4.

Автор книги, Эриксон, для демонстрации использует никс, а там адреса с 0xffffffff идут

16 Май, 12:23 #369 #991658

>>990957
> Твой макрос абсолютно идентичен RTL_CONSTANT_STRING, за исключением того
Что мой макрос работает, а RTL_CONSTANT_STRING нет.

Ответы991707

16 Май, 14:40 #370 #991707

>>991658
Блять, да почему он вдруг не работает-то? UNICODE_STRING dest = RTL_CONSTANT_STRING(L"Yoba"); Генерироваться будет код, идентичный твоему.

Ответы991837

16 Май, 15:33 #371 #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

Ответы991738

16 Май, 15:34 #372 #991738

>>991737

jnge, а не jne. Забыл исправить

16 Май, 17:50 #373 #991837

>>991707
Очевидно, что RTL_CONSTANT_STRING работает только при инициализации переменной, иначе
error C2275: 'UNICODE_STRING' : illegal use of this type as an expression

Кстати, мой код даёт в одном месте, как и дизасм оригинального кода WRK, какой-то мусор:
db 66h, 66h
xchg ax, ax
Нафига он? Выравнивание?

Ответы991858

sage 16 Май, 18:23 #374 #991858

>>991837
Ты так говоришь, как будто твой макрос в такой ситуации "работает". Алсо:
SomeFunc(&(UNICODE_STRING) RTL_CONSTANT_STRING(L"Если компилятор не совсем протухший, он умеет в compound literals"));

> какой-то мусор
Возможно выравнивание, возможно кусок таблицы переходов. Покажи скриншот с кодом до этой херни.

Ответы991869

48 Кб, 1264x3069

16 Май, 18:44 #375 #991869

>>991858
>Ты так говоришь, как будто твой макрос в такой ситуации "работает".
Таки да, работает. И генерит код, аналогичный WRK.
>Если компилятор не совсем протухший
Собираю я всё тем же компилятором, которым собирался остальной код (cl.exe 14 версии), и более новый мне в моей задаче будет мешать выверять код. Обновлю потом, как всё декомпилирую.
>скриншот
Окей. Весь метод принтсринить было лень, думаю хватит. Нужное отметил стрелочкой.

Ответы991896

sage 16 Май, 19:32 #376 #991896

>>991869
Да, это выравнивание перед циклом.

Ответы991925

16 Май, 19:34 #377 #991897

>>960640 (OP)
ананасы дизасемблер ида Криса Касперски есть смысл читать, или он устарел безнадежно? если да то что по этой теме наиболее лучше будет?

Ответы991898

sage 16 Май, 19:39 #378 #991898

>>991897
Теперь есть beginners.re еще. Имеет смысл читать и то, и другое.

16 Май, 20:29 #379 #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

Ответы991945

sage 16 Май, 21:10 #380 #991945

>>991925
> делает при использовании моей фиготени
Это имеет смысл перед адресом, на который будет возвращаться jmp где-то в конце цикла. Гугли intel lsd например.

> Правильно ли я сделал
Каст к ULONG_PTR тебе не нужен в данном случае, Address уже ULONG_PTR, посмотри как Си integer promotions делает. Мало того, #ifdef тебе тоже не нужен, ты можешь просто писать в QuadPart в обоих случаях, не старайся быть умнее компилятора. Соответственно, код сводится к:
viewBase.QuadPart = Address & ~0xFFF;

Ответы992268

17 Май, 16:21 #381 #992268

>>991945
>intel lsd
А это вообще законно?
>Каст к ULONG_PTR тебе не нужен в данном случае
Ага, верно. Я сначала добавил каст, а уж потом сменил тип переменной.
>ты можешь просто писать в QuadPart в обоих случаях, не старайся быть умнее компилятора
Тоже верно. Просто хотел оставить вариант кода для х86 как было, мол, так вернее. Окей, так даже проще, видимо, компиляторы со времён Win2000 стали немного умнее.

17 Май, 17:12 #382 #992285

>>960640 (OP)
Сегодня ночью у меня болела голова, я находился в полудрёме и мне казалось что моё одеяло это кучка ассемблерных команд, а изгибы на одеяле обозначают ту или иную команду. И мне надо было по определённому их соотнести чтобы получить нужный кусок ассемблерного кода. Но я не хотел этого делать, я хотел спать. Потом голова перестала болеть и я заснул.

21 Май, 07:43 #383 #994057

За сколько тут смывает топики?
ОП

Ответы994441

sage 21 Май, 21:38 #384 #994441

>>994057
Ну, например, мартовский Си-тредик жив.

Ответы994591

sage 22 Май, 05:25 #385 #994591

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

23 Май, 11:13 #386 #995109

Можно ли на асме вызвать функции LoadLibrary и GetProcedureAddress, не зная адресов этих функций?

Ответы995181

sage 23 Май, 14:09 #387 #995181

>>995109
Ты от соседей? Тот кун с протектором? Очевидно, что не зная адреса функции, нельзя ее вызвать. Адрес можно узнать, но асм для этого не нужен. Нужно найти kernel32 и пройтись по его экспортам: readfsdword/readgsqword, PEB, PEB_LDR_DATA, InLoadOrderModuleList, IMAGE_EXPORT_DIRECTORY - вот это все.
Алсо,
> GetProcedureAddress
вот такого в винде нет, есть GetProcAddress.

Ответы995264

23 Май, 17:21 #388 #995264

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

Ответы995294

sage 23 Май, 18:57 #389 #995294

>>995264
Нет, адрес будет разным, и то, что я написал постом выше, как раз и позволяет пройтись по служебным переменным загрузчика исполняемых файлов, найти там kernel32, пройтись по его экспортам и узнать адреса, при этом не вызывая вообще никаких внешних функций. Каждый первый шелкод для винды рано или поздно к этому сводится.

23 Май, 23:42 #390 #995445

А на вашем ассамблере интернет магазин написать можно?

Ответы995463

sage 24 Май, 00:08 #391 #995463

>>995445
Можно, но экономически невыгодно.

24 Май, 02:28 #392 #995499

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

Ответы995501

sage 24 Май, 03:04 #393 #995501

>>995499
> повесить бряк на функцию и просто смотреть что там лежит?
Да. Смотреть стек ниже адреса возврата, искать указатели на структуру или на каждое из возвращаемых значений, смотреть на состояние FPU заодно. Можешь покидать сюда скрины - посмотрим и посоветуем.

Ответы995780

104 Кб, 1382x1444

24 Май, 18:28 #394 #995780

>>995501
>>995501
Госпаде как сложно.
Вот этот кусок вроде как должен отвечать за рассчет, до этого функция принимала доп параметры для всех рассчетов. Куда тыкать даже не не знаю.

Ответы995782995788996258

115 Кб, 1382x1694

24 Май, 18:31 #395 #995782

>>995780
Не весь кусок закринил, сорян. Там правда последнии строки не триггерят бряк. А может я вообще объебался с функцией, и нужного тут нет.

sage 24 Май, 18:49 #396 #995788

>>995780
Я тебя помню по какому-то из предыдущих тредов. Во всяком случае, эту функцию я уже видел, но дело ничем не кончилось. Или ты другой анон?

Ответы995795

24 Май, 18:56 #397 #995795

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

24 Май, 20:48 #398 #995879

после установки обновы от wannacrypt винда хр стала глючить странным, не похожим на глюк образом. Возможно это мс так стимулирует переход на 10ку. Не могли бы вы проверить обновы?

Ответы995885995891

24 Май, 20:54 #399 #995885

>>995879
Деньги вперед.

24 Май, 21:08 #400 #995891

>>995879
Сижу на XP, обновление поставил, разницы не заметил.

25 Май, 13:09 #401 #996138

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

Ответы996290

25 Май, 14:03 #402 #996161

Дамы и господа, может кто подскажет материалов по написанию вирусов?

Ответы996176996347

25 Май, 14:50 #403 #996176

>>996161
https://youtu.be/X6Et1rzO4i4
Сайт чувака на видео погугли

25 Май, 17:55 #404 #996258

>>995780
Вот такой вопрос созрел. Если я например в CE напишу новый скрипт, который при вызове функции перекинет нас в другую функцию, которую я и буду писать, но которая отличается только тем, что будет иметь в начале вызов другой функции, которая должна будет передать данные внутри нашей новой функции, которые в естественном виде раньше приходили из другого места. Сработает?

Ответы996266

25 Май, 18:17 #405 #996266

>>996258
Чет как всегда не подумал, но написал. Сработает, но на всех. А чтоб отличить от игрока, ужно найти структуру игрока, но эти структуры ебанутые, и не умею ходить по ветке вверх. Так например есть функция is_player, она передает значения 1 и в зависимости от того, есть ли в округе ещё нпс. Значений столько, сколько и нпс. 1 есть всегда и постоянно считывается, скорей всего игрок. Но как дальше от этого плясать? Вызывающая функция не вызывает эту функцию для проверки, и в условие просто не написать проверку по смещению.

25 Май, 19:41 #406 #996290

>>996138
Ответ нуба, не написавшего ни строчки на асм
Так же, как и положил.
Массивы в памяти- просто идущие подряд элементы, так что номер элемента, помноженный на его размер, даст адрес от начала массива. Так что LEA для вычисление эффективного адреса да MOV для загрузки.

Ответы996298

25 Май, 20:03 #407 #996298

>>996290
Хотябы кто-то ответил. Спасибо, я что-то про это читал но ничего не понял да и fasm ошибку выдавал с командой lea наверное я не правильно ее использовал. А есть какие нибудь примеры?

Ответы996336996345

25 Май, 21:03 #408 #996336

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

25 Май, 21:23 #409 #996345

>>996298
mov ecx,индекс
mov eax,[massiv+ecx*4]
Это для интов размером 4 байта. Леа нинужон в простых случаях.

Ответы996504

25 Май, 21:24 #410 #996347

>>996161
Возьми старые езины типа 29A labs, читай чужие исходники. Заодно напоминаю, что в этой стране вирусы писать незаконно.

25 Май, 22:30 #411 #996380

Анон, как можно инвертировать значение аккумулятора побитно на 8080 процессоре? XRI FF это понятно, надо еще как-то да, да - сделай за меня лабу.

Ответы996385

25 Май, 22:42 #412 #996385

>>996380
Ну кроме ксора разве что в цикле побитово, RLC и CMC, например.

Ответы996386

sage 25 Май, 22:43 #413 #996386

>>996385
RAL, ну ты пони.

Ответы996387

25 Май, 22:47 #414 #996387

>>996386
Спасибо, тоже думал над этим. Буду разбираться.

26 Май, 12:21 #415 #996504

>>996345
отлично спасибо

26 Май, 14:49 #416 #996601

Привет, уебки. Никогда раньше ничего не реверсировал, но тут появилась необходимость в одном установщике убрать проверку на наличие файла на компьютере. То есть установщик (обычный .exe-файл) запускается, проверяет, нет ли на пека такой-то установленной программки, если есть - работает, если нет - пишет "Нетустановленногофайла". Как-то так.
Я его дизассемблировал ИДАй, но ничегонепонятно. Как познать тонкости? Я просто наудачу потыкал, убрав пару первых джампов, вернее, сделав их безусловными в надежде, что это и будет перепрыгивание условия, но хуй вам. Что делать, ребята?

Ответы996606996607996674

26 Май, 14:54 #417 #996606

>>996601
С такими вопросами меня игнорили или посылали читать манулы. Ну и по сути надо достаточно много понимать, чтоб что то сделать, так что вполне резонно, что никто не хочет все объяснять. Слишком долго и не известно, будешь ли усваивать

26 Май, 14:55 #418 #996607

>>996601
Используй дебаггер

sage 26 Май, 18:17 #419 #996674

>>996601
Запатчить чужой инсталлятор очень сложно. Там обычно кастомный байткод, декомпиляторы не для всех есть. Лучше возьми песочницу, посмотри, что и куда пишет инсталлятор и сделай свой такой же. Чтобы узнать, что именно он проверяет, спользуй Filemon/Regmon/ProcMon от Руссиновича и компании.

27 Май, 21:44 #420 #997182

Написал демо программу на крестах, скомпилировал. Сижу короче туплю в дизассемблер. Я нашел ассемблерный код работы своей программы, но вызывается он хуй знает когда. Пошёл от точки входа, а там call-call-je-jnz-call-jmp просто пиздец бесконечная цепь вызовов функций и переходов. Собсно вопрос: что за хуйня происходит при запуске программы? Почему собсна моя функция main начинает работать после стопицот всеразличных джампов, коллов и прочего? Разве все предварительные подготовки не загрузчик делает?

Ответы997259997267

sage 28 Май, 00:35 #421 #997259

>>997182
> Почему собсна моя функция main начинает работать после стопицот всеразличных джампов
Потому что у твоей функции есть аргументы, их нужно получить и подготовить. А еще у рантайма есть состояние, его нужно инициализировать.

> Разве все предварительные подготовки не загрузчик делает?
Разным языкам нужна разная инициализация. Загрузчик не зависит от языка, поэтому для инициализации рантайма линкер втыкает соответствующий код в бинарник. Можешь сказать линкеру этого не делать (по крайней мере, в винде - в линуксах все слегка сложнее), и тогда сразу начнет работать твой код, но работать он будет с голой жопой.

Ответы997267

28 Май, 00:39 #422 #997260

Дайте гуйды по ТАСМу для даунов

28 Май, 01:24 #423 #997267

>>997259
>Загрузчик не зависит от языка, поэтому для инициализации рантайма линкер втыкает соответствующий код в бинарник
А никто не писал ОС, где это будет встроено?
>>997182
>Сижу короче туплю в дизассемблер.
Нужно использовать продвинутые инструменты. IDA умеет пропускать всю эту библиотечную мишуру и сразу показывать точку входа в приложение.

Ответы997270

sage 28 Май, 01:27 #424 #997270

>>997267
> А никто не писал ОС, где это будет встроено?
Что встроено? У нас одних компиляторов Си только под винду десяток. У всех разные рантаймы, их по-разному нужно инициализировать. Если встроить рантайм в ОС, получится msvcrt.dll, наполненный багами и несовместимостями, который даже обновить нельзя, никому ничего не сломав.

> Нужно использовать продвинутые инструменты.
Можно просто подумать и посмотреть листинг. main() не так уж глубоко от точки входа.

Ответы997298

28 Май, 02:53 #425 #997298

>>997270
>Если встроить рантайм в ОС, получится msvcrt.dll, наполненный багами и несовместимостями, который даже обновить нельзя, никому ничего не сломав.
Под каждую версию свою либу. Зато можно будет вырезать однотипный код инициализации рантайма из каждого приложения.
Но конечно же это нужно закладывать на этапе разработки ОС, к существующим это уже не прикрутить.

Ответы997302997304

sage 28 Май, 03:11 #426 #997302

>>997298
> Под каждую версию свою либу.
А потом я изобрету язык YobaLang, мне в спортлото писать, чтобы мой рантайм встроили? А если я завтра YobaLang 2.0 сделаю, мне снова писать? А пока я изобретаю, чем мне пользоваться? Зачем вообще напрягаться ради экономии сраных 10 КБ (сишечка или кресты) на каждое приложение? Есть лишь одна реальная причина: статическая линковка = невозможность фиксить баги, но инициализации не так много, код вылизывается за пару версий до совершенства, и никаких сколько-нибудь критичных багов там уже нет.

Ответы997508

sage 28 Май, 03:28 #427 #997304

>>997298
Алсо,
> однотипный
Давай возьмем винду и Visual Studio. Будут разные варианты инициализации для: MBCS/Unicode, Debug/Release, Exe/Dll, Single-/Multithreaded, не считая всяких телеметрий, TLS и прочих __fltused. Итого, у нас уже 24 = 16 вариантов (я слегка преувеличиваю - на самом деле поменьше, это на закате DOS их реально дохуя было в каждом компиляторе). И это только одна студия, а их, сколько-нибудь пригодных для кодинга под современные винды, 9 или 10 версий, не считая сервиспаков. В общем, какая-то надуманная проблема, учитывая, что писать без CRT никто, в общем-то, не запрещает.

7 Кб, 413x449

28 Май, 13:26 #428 #997401

Привет, анончик, начал я тут читать теорию, и у меня возник вопрос. Вот тут http://life-prog.ru/1_29310_protsessori-Intel-.html пишут, что в состав блока исполнения в процессоре входят 10 регистров, при этом на пикче там же их 8 + flag register. Потом смотрю, этих флагов вообще 9 штук. Так какие же регистры входят в блок исполнения? Если конкретно? AX, BX, CX, DX, SP, BP, SI, DI... Какие еще?

Ответы997405997453

28 Май, 13:33 #429 #997405

>>997401
а, все, понял, тут же еще IP

28 Май, 13:55 #430 #997421

Анон, помоги ньюфагу.
Есть одна прога, которая подгружает dll написанную на сильно обвусифицированном Си. В нее передаются указатели на массивы, которая эта dll модифицирует по неведомому ебанму алгоритму. И я хуй знает как мне прицепиться отладчиком к этой dll, т.к. после выполнения функции она тут же выгружается.
Как мне ее отладить?

Ответы997453

sage 28 Май, 14:40 #431 #997453

>>997421
В OllyDbg в настройках есть Break on dll load. Когда это происходит, расставляешь бряки на EP, TLS initializers (если есть), эксортируемые функции.

>>997401
Не заморачивайся этой хуйней. С тех пор регистры потолстели в 4 раза, их стало намного больше, и вообще, то, что ты видишь в асме, не совсем отражает реально происходящие процессы внутри камня. На самом деле, машинный код для x86 - это лишь самый низкий уровень, который доступен для написания кода рандомкунами, но не самый низкий уровень, который существует в x86. Внутри проца сейчас по сути эмулятор набора инструкций x86, который транслирует его в микроинструкции для RISC-like ядра.

Ответы997819

28 Май, 15:56 #432 #997508

>>997302
>А потом я изобрету язык YobaLang, мне в спортлото писать, чтобы мой рантайм встроили?
Очевидно, что это просто пакет ОС, от которого будут зависеть соответствующие программы. С версиями, ага.

29 Май, 09:32 #433 #997819

>>997453
> В OllyDbg
Есть проблема. dll 64 битная. А олька вроде толшько 32 умеет отлаживать.

Ответы997949

sage 29 Май, 14:38 #434 #997949

>>997819
Есть же x64dbg.

Ответы997984

29 Май, 15:42 #435 #997984

>>997949
Есть. Но пока не освоил.
1 - Не получается его заставить реагировать на загорузку dll
2 - Не видить функции, которые отлично видит IDA

Ответы1001703

37 Кб, 836x345

37 Кб, 950x509

29 Май, 20:20 #436 #998116

Репост из крестового треда, тематика вроде соответствует
Тамплиеры, помогите. Хочу вызвать LoadLibraryA по адресу в виртуальной памяти, при этом адрес я хочу получить сам, основываясь на данных таблицы импорта скомпилированного PE файла и ImageBase, который я получаю через FindImageBase(). Я скомпилировал приложение (код 1.png), вытащил из получившегося PE RVA функции LoadLibraryA. Как я понял, это RVA, в который будет записан VA той самой функции, но тем не менее получаемый адрес отличается от того, что я получаю по auto x = LoadLibraryA. ЧЯДНТ?

Ответы998151998158

29 Май, 20:54 #437 #998151

>>998116
Это может быть как нибудь связано с relocation'ами? Типа, мне чтоб получить действительный RVA, нужно к значению из PE файла прибавить фактический ImageBase -
номинальный ImageBase?

sage 29 Май, 21:01 #438 #998158

>>998116
Опиши еще раз подробно, что ты делаешь? Может, ты смотришь RVA в собранном файле, а потом его пересобираешь? И зачем тебе читать адрес LoadLibrary из собственных импортов в рантайме, когда компилятор может (и делает) то же самое, когда ты делаешь auto x = LoadLibraryA? И хватит в оба треда срать.

Ответы998166

29 Май, 21:10 #439 #998166

>>998158
Я пытаюсь вручную получить VA LoadLibraryA, основываясь на ImageBase и RVA в таблице импорта PE файла. Это лишь подготовительная мера для кое чего другого.
Да, смотрю RVA в скомпилированном файле, да, потом подставляю константу и пересобираю. НО! Я смотрел в пересобранный .exe, RVA LoadLibraryA таким и остаётся, я проверяю при каждом изменении кода.
Зачем срать через ноздрю, а не использовать LoadLibraryA? Потому что я компилирую код, чтобы потом его выдернуть и вставить в оверлей секции произвольного .exe файла, и там я уже я не могу расчитывать на что либо, кроме данных самого PE-файла. На ассемблере писать не хочу, я на нём только читаю хотя это громко сказано, но не пишу.
В другие треды сру, тому шо не знаю, кто где ответит. Вдруг кто нибудь сидит в С-треде, но не в asm треде ну и наоборот.

Ответы998167998169

sage 29 Май, 21:13 #440 #998167

>>998166
Окей, а почему 0xb93c8 (RVA IMAGE_IMPORT_BY_NAME, т.е., строчки "LoadLibrraryA" с хинтом), а не 0xb4c00 (RVA ячейки IAT, куда попадет адрес LoadLibraryA при загрузке)? Это если я правильно понимаю ту мешанину, которую выдает дампер на скриншоте. Хексы и то легче читать.

Ответы998183

sage 29 Май, 21:16 #441 #998169

>>998166
А, я тебя вспомнил. Расскажи, что за протектор, почему это называется протектор, что ты собираешься протектить, и почему ты собираешься протектить именно так? Мы с тобой общались уже про LoadLibrary в одном их тредов.

Ответы998183

17 Кб, 687x191

29 Май, 21:23 #442 #998183

>>998167
Потому что address - это raw offset в самом файле, а value - это то, что там находится.
>>998169
Протектор - курсовая работа. Протектор, потому что предполагается, что это говно будет защищать проприетарное ПО от какиров хотя целью было вообще в RE вкатиться, просто тема курсовой позволила совместить приятное с полезным . Учитывая, что дедлайн уже через пару недель, хуй я успею написать DENUVO 2, хотя "научрук" сказал, что тема годная и можно сейчас на пол карасика сделать и сказать типа на дипломе доделаю бля буду. Я застрял на создании инжектора. Мне нужно как то загрузить либу протектора через LoadLibrary, потом вызвать пару функций из либы. Однако, для этого мне нужно получить VA LoadLibraryA и GetProcAddress не говоря уже о том, что мне нужно запихать в импорт защищаемого PE файла LoadLibraryA, если её там нет по умолчанию. Как это делать -
не ебу представляю, но мне страшно от
объема необходимых фиксов и даже не думаю на данный момент., с чем я сейчас и сражаюсь.

Ответы998202

sage 29 Май, 21:40 #443 #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.

Ответы998490

30 Май, 11:15 #444 #998490

>>998202
Спасибо, понял. Да, В RVA под FirstThunk и всех последующих словах лежит уже VA. Не подскажешь случайно софт, который позволяет добавлять импортируемые функции в PE-файл?

Ответы998504

30 Май, 11:38 #445 #998504

>>998490
Нашёл софт.

30 Май, 14:03 #446 #998558

Есть экзешник написанный на с++ и запакованный "Armadillo Pro Version v9.64 [ Private build stub ] 06-09-2013". На сколько я в жопе? Есть шансы распаковать?

Ответы998569

sage 30 Май, 14:38 #447 #998569

>>998558
Ну скрипты есть вроде. Тебе зачем распаковывать-то: реверсить или патчить?

Ответы998577

30 Май, 14:50 #448 #998577

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

Ответы998595

sage 30 Май, 15:23 #449 #998595

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

Ответы999482

30 Май, 15:35 #450 #998605

Заглянул к вам опять, почитал, и опять захотелось в крекинг. Жаль, что в таких вопросах я совсем криворукий, а по теме помогают очень неохотно.

>>977938
>в Германии
Закончил уже.

01 Июн, 01:18 #451 #999482

>>998595
А ты сам не выглядишь ньюфагом. Может поможешь с распаковкой?

Ответы999484

sage 01 Июн, 01:33 #452 #999484

>>999482
Мне не на чем. А виртуалку с виндой настраивать еще и некогда. Извини.

Ответы999486

114 Кб, 216x216

01 Июн, 01:36 #453 #999486

>>999484
RIP
А на том же exelab помогают, если попросить распаковать реальную программу?

Ответы999492999535

sage 01 Июн, 02:21 #454 #999492

>>999486
Распаковать - хз. Там есть темка с платными запросами разве что. А вот советом должны помочь.

01 Июн, 09:40 #455 #999535

>>999486
На exelab сидят чмыри с охуевшим ЧСВ. Удачи.

Ответы999542

01 Июн, 10:29 #456 #999542

>>999535
Ну тогда подсказывай, где спросить о процедуре распаковки конкретно моего случая?

Ответы999581

01 Июн, 12:33 #457 #999581

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

Ответы999653

01 Июн, 16:03 #458 #999653

>>999581
Я прошел гайды Навахо, могу снимать защиту с простых крэкми. Что учить дальше, чтобы поднять уровень, раз подобные прикладные задачи я еще не в состоянии решить?

Ответы999655

01 Июн, 16:04 #459 #999655

>>999653
Напиши свою денувувмпротект, тогда поймешь, как чужие работают.

Ответы999661

01 Июн, 16:08 #460 #999661

>>999655
Ясн.

Ответы999662

01 Июн, 16:10 #461 #999662

>>999661
Я серьезно вообще-то. Во время написания своего аналога чего бы то ни было приходится вникать в детали. И по мере вникания появляется куча специальных знаний, которые иначе пришлось бы год собирать по разным блогам.

128 Кб, 1920x1058

571 Кб, 1920x1058

8 Кб, 444x160

03 Июн, 17:29 #462 #1000505

Реверсач, в игроразделе подняли тему с отучением игрового бота от жадности. Захотел тоже поучаствовать, можешь помочь с ответом на пару вопросов?
Экзешник бота запакован хз чем заголовок на первой пикче. После останова на EOP по мнению x64dbg и пары джампов появляется конструкция со второго пика. Если выполнить шаг не заходя в вызов F8 вываливается ворнинг, но если провалиться внутрь по F7 и затем продолжить выполнение, то никаких проблем. Это проверка присутствия отладчика, как ее можно обойти?

Ответы1000512100051410005271000769

03 Июн, 17:40 #463 #1000512

>>1000505
В догонку, такое поведение только при установленных BP. Может это баг x64dbg?

Ответы1000514

03 Июн, 17:43 #464 #1000514

>>1000505
>>1000512
И снова в догонку, с аппаратными точками останова такого не происходит в чем их разница?.

Ответы1000527

sage 03 Июн, 18:33 #465 #1000527

>>1000505
> запакован хз чем
https://pid.gamecopyworld.com/

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

>>1000514
> в чем их разница?
Аппаратные точки останова пишутся в отладочные регистры (dr0-dr3, dr7), изменения кода не происходит. Single step можно делать установкой TF в Eflags, изменения кода не происходит. Для Step over приходится втыкать брейкпоинт. Если он программный, то по адресу, следующему после интересующей инструкции, втыкается int3, он вызывает exception при выполнении, отладчик его ловит и восстанавливает код, который там был изначально.

04 Июн, 01:12 #466 #1000728

Хочу шифровать практически целиком или частично, произвольными кусками секции PE файла, у которых есть флаги executable и/или read, расшифровывать буду импортируемой функцией из dll, подключаемой через LoadLibrary в ран тайме, этот блок кода не шифруется. Какие подводные камни меня ожидают? Загрузчик в кодовую секцию вроде подставляет адреса вызова импортируемых функций или какие то там другие данные подставляет в секции, или я не прав? Если это так, то значит, что в шифрованный файл адреса уже подставляться не будут, значит он и работать не будет, или еще того хуже, они будут подставляться, и при расшифровке я уже не получу оригинальный машинный код?

И еще, расскажите о функциях или ходя бы скажите что и где можно прочитать, используемых в активации ПО по ключу. Имею в виду, мне нужна функция, которая для некоторого множества чисел выдавала бы один и тот же результат. Типа, f(x) = x2 даёт одинаковые значения для любых чисел a,b: a =-b. По сути, это сюръективная функция, но я не могу найти примера именно для моих нужд.

Ответы1000733

sage 04 Июн, 01:29 #467 #1000733

>>1000728
Добавляй свою секцию, перенаправляй все необходимые IMAGE_NT_HEADERS.OptionalHeader.DataDirectory в свою секцию (экспорты не трогай или копируй, ресурсы... ну можно сделать свои только с иконкой и манифестом, про релоки не забудь). Директорию импортов генери свою, там будет только импорт твоей длл. Когда расшифруешь, обработаешь оригинальные импорты вручную, релоки применишь, DataDirectory восстановишь.

Ответы10008911001789

04 Июн, 10:14 #468 #1000769

>>1000505
>Экзешник бота запакован хз чем
VMProtect v.3.00 - 3.0x (по мнению Exeinfo).
>После останова на EOP
Программа запакована, хотя многие проверки от VMProtect убраны (обнаружение отладчика, запрет работы в виртуальной машине). Поэтому есть возможность поизучать работу программы. Чтобы получить более-менее хороший дамп, надо поставить брейкпойнт на какую-нибудь системную функцию, например, GetSystemTimeAsFileTime. Эта функция, как правило, вызывается одной из первых при запуске приложения. И после этого можно сливать дамп или ставить брейкпойнты там, где нужно.
Подозреваю, что функция проверки ключа защищена VMProtect'ом. Не смог запустить программу на виртуальной машине, поэтому не знаю, как происходит проверка ключа. Если программа стучится на сервер, можно подделать ответ. Если где-то в программе, придётся искать место проверки. Программа статически слинкована с Qt, а там виртуальный вызов на виртуальном вызове вызывает виртуальную функцию. Хотя, если знать, как работает Qt, возможно, трудностей и не будет.

Ответы10007701000900

124 Кб, 1296x1056

04 Июн, 10:22 #469 #1000770

>>1000769
>Если программа стучится на сервер, можно подделать ответ.
Нашёл через гугл тред с обсуждением в vg. Так и есть, стучится на сервер. Делается мегапростой прокси и отвечает, сколько осталось боёв. Запрос идёт через HTTP, значит, не придётся заморачиваться с сертификатами, OpenSSL и прочим MITM'ом.

Ответы1000900

04 Июн, 15:09 #470 #1000891

>>1000733
А как работать с секциями PE файла в ран тайме вообще? Мне на ум приходит только одно - я могу определить ImageBase в ран тайме, он указывает на начало IMAGE_DOS_HEADER, и, я так понимаю. там последовательно загружены и IMAGE_NT_HEADER, там же Optional header, значит можно и в таблицу секции заглянуть, и найти RVA начала шифрованной секции. НО! Читал я о таком забавном механизме, как ASLR, который может распидорасить образ по памяти в случайном порядке, и инфа из таблицы секций мне уже ничем не поможет, или я заблуждаюсь?

Ответы1001023

04 Июн, 15:31 #471 #1000900

>>1000769
>>1000770
Там помимо проверки ключей есть криптованный запрос с ключом, в ответ на который прилетает криптованный ответ с какими-то данными, без которых бот отказывается работать.
Я похоже переоценил свои силенки и дальше брейкпоинта на чтение dword-а из памяти, где лежат константы, для формирования конструкции этого запроса, уйти не смог.
Кстати, этот VMProtect стоит приличных денег, неужели автор навесил такую махину, на десятирублевого бота?

Ответы10009041000923

04 Июн, 15:38 #472 #1000904

>>1000900
>криптованный запрос с ключом
Есть образец правильного запроса/ответа?

Ответы1000927

04 Июн, 16:11 #473 #1000923

>>1000900
>Кстати, этот VMProtect стоит приличных денег, неужели автор навесил такую махину, на десятирублевого бота?
Уверен, что он его спиздил.

Ответы1001023

51 Кб, 1296x1056

04 Июн, 16:19 #474 #1000927

>>1000904
Только не говори, что ты разраб и обнулишь мой ключ или сдашь WG, лол.

Ответы1001014

04 Июн, 16:53 #475 #1000948

И еще нах, я правильно понимаю, что если у секции PE файла нет атрибута IMAGE_SCN_MEMORY_WRITE, то в ран тайме попытка изменения произвольного значения в какой либо из страниц виртуальной памяти, в которых располагается секция, выдаст мне исключение? Решит ли эту проблему предварительный вызов VirtualProtect с флагом PAGE_EXECUTE_READWRITE?

Ответы1001023

04 Июн, 18:47 #476 #1001014

>>1000927
Ещё вариант придумал. Что, если вводить один и тот же ключ и с помощью прокси отправлять один и тот же ответ. Или это не один способ подсчёта в программе? Она ещё как-то общается с сервером разработчика? Или только при запуске? Ключ, как понимаю, к оборудованию не привязывается, раз в том треде был разговор о передаче ключа. Значит, вполне возможно лениво обойти проверку ключа, даже не разбираясь, что там разработчик напридумывал. Будет желание - посмотрю. И ещё один момент - эти строки предполагается перепечатывать с экрана?

sage 04 Июн, 18:51 #477 #1001023

>>1000891
> Читал я о таком забавном механизме, как ASLR
ASLR выбирает рандомную ImageBase. А образ так называется как раз потому, что более-менее четко описывает содержимое оперативной памяти после загрузки (по большей части). По большей части внутри PE все, что касается адресов - RVA, которые как раз от базы и расчитываются. Для всего остального существуют поправки (relocations).

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

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

>>1000948
Правильно понимаешь. VirtualProtect проблему решит, не забудь потом восстановить обратно, как было. Алсо, PAGE_EXECUTE_READWRITE не любят антивирусы. Если есть возможность, делай просто RW, а потом X вернешь.

05 Июн, 12:31 #478 #1001318

Кто-нибудь знает, как в Wireshark написать диссектор, который разбирает результат другого протокола.
TCP->WebSocket->Data
Вот для Data мне и надо написать. Как сделать для TCP/UDP - знаю, а как для такого случая - даже найти пример не могу.

Ответы1002988

13 Кб, 429x572

sage 05 Июн, 23:35 #479 #1001703

>>997984
> Не получается его заставить реагировать на загорузку dll
Очень странно. Потому что настройка на самом видном месте мало ли, еще актуально, скриншот валяется.

06 Июн, 01:14 #480 #1001766

Какие элементы PE файла подлежат перемещению через таблицу релокаций? Там же вроде как все адреса - RVA? Имею в виду, вот есть таблица релокаций, каждая структура которой - RVA, по которому находится перемещаемый элемент, а также размер блока памяти. Дак вот RVA чего именно будет помещаться в таблицу релокаций?

Ответы1001769

sage 06 Июн, 01:27 #481 #1001769

>>1001766
Можешь считать, что таблица релокаций - это список патчей. Что положишь, то и пропатчит, никаких проверок (ну, кроме границ). В нормальных приложениях релоки касаются только кода и данных, больше VA нигде нет просто.

Ответы1001776

06 Июн, 01:52 #482 #1001776

>>1001769
Но что именно туда закладывает компилятор? И что именно использует VA-адресацию в коде? Всякие вызовы функций, условные и безусловные переходы? А в секции данных - VA области памяти, где хранится переменная, которая по тем или иным причинам не попала в стек? То есть, если у меня стопицот джампов и вызовов функции, то в таблице релокаций будет стопицот записей?

Ответы10017891001790

06 Июн, 02:37 #483 #1001785

И еще, почему я не могу просто взять и зашифровать секцию .text и .data в исполняемом файле, а потом в ран тайме расшифровать и передать управление в .text? Я понимаю, что есть подводные камни, придется некоторые задачи загрузчика брать на себя, но я не знаю какие именно. Достаточно будет просто осуществить релокацию по таблице в pe файле, или придется еще шаманить над вызовом импортируемых функций, потому что неизвестно, по какому адресу загрузится dll?

sage 06 Июн, 03:02 #484 #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 будет очевидный фиксап.

sage 06 Июн, 03:02 #484 #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 будет очевидный фиксап.

Показать весь текст

sage 06 Июн, 03:08 #485 #1001790

>>1001776
И вообще, забей на релоки. У тебя же exe. Удаляй релоки, ставь файлу relocations stripped, убирай флаг dynamic base впизду, и ASLR сосет хуй, а у тебя гораздо меньше проблем. Потом добавишь корректную обработку, если желание будет.

Ответы1001843

06 Июн, 10:29 #486 #1001843

>>1001790
То есть, если удалить релоки и изменить флаги, то вообще не нужно будет ничего перемещать?
И еще, флаги менять в поле Characteristics FileHeader или в поле DlCharacteristics у OptionalFileHeader?

Ответы1002190

sage 06 Июн, 20:32 #487 #1002190

>>1001843
Ну загугли где какой флаг лежит. Их всего два. И да, если у образа стоит relocations stripped, то загрузчик не будет его перемещать по неродной базе, а значит даже смотреть на релоки не будет.

08 Июн, 09:00 #488 #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 Июн, 21:20 #489 #1003736

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

Ответы1003746

09 Июн, 21:47 #490 #1003746

>>1003736
Прерывание - это процесс, начинающийся, когда процессор дергают за ногу (или он сам себя дергает), а заканчивающийся восстановлением и возобновлением выполнявшейся задачи после обработки прерывания. Вектор прерывания - это адрес обработчика прерывания. Процессор читает вектор из таблицы векторов, таблица векторов лежит в каком-то известном месте. Всего прерываний может быть сколько угодно, если считать аппаратные и считать мультиплексоры прерываний. Векторов в таблице векторов обычно фиксированное количество, 256 в x86.

Ответы1003751

09 Июн, 21:54 #491 #1003751

>>1003746
int 21h это обработчик прерывания?

Ответы1003754

09 Июн, 21:58 #492 #1003754

>>1003751
int 21h - это инструкция, вызывающая обработчик прерывания. Она идет по 0000:21*4, читает оттуда вектор (сегмент/оффсет), и вызывает обработчик (ну и там текущий cs:ip сохраняет и т.п.).

Ответы1003762

09 Июн, 22:00 #493 #1003757

Что скажите за стековые процессоры?

09 Июн, 22:09 #494 #1003762

>>1003754
Кажется понял. Спасибо, анончик.

IDA 6.8 + IDAStealth Дмитрий 10 Июн, 11:34 #495 #1003934

Доброго времени суток, товарищи реверсеры. У кого-нить работает IDAStealth на IDA 6.8? (Win 10). У меня постоянно сыпет в output ошибку "IDAStealth: Error in IDA callback: Unable to locate RtlDispatchException in KiUserExceptionDispatcher" и нифига не прячет отладчик. Понимаю, что исходники есть, но править их нет никакого желания пока.

12 Июн, 11:14 #496 #1004811

>>960640 (OP)
Например, есть библиотека so (elf-файл), можно ли каким-то образом добавить в нее свои строки кода, а то и новую функцию из другой библиотеки? Ветки перенести не проблема, а вот как со смещением быть? Android-реверсер итт.

28 Июн, 21:07 #497 #1013107

Унылый бамп. Где все?

Ответы10132661014003

29 Июн, 05:06 #498 #1013266

>>1013107
Я с реверсом ядра застопорился, а кроме меня тут было 2,5 калеки, которые видимо отвалились.
Впрочем, скоро запилю перекат, до бамплимита тут джва поста.
ОП

30 Июн, 11:53 #499 #1014003

>>1013107
Я тут но я только в голове отыгрываю, что я реверсер.

01 Июл, 19:00 #500 #1014771

>>971955
Общее
http://programmersforum.ru/showpost.php?s=14d154f5feba60f576e75bf748e5fece&p=551635&postcount=4
Про линкер:
https://habrahabr.ru/post/150327/

01 Июл, 19:33 #501 #1014792

>>971955
компилируй с -Ofast -ffast-math

02 Июл, 15:35 #502 #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)

02 Июл, 15:35 #502 #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)

Показать весь текст

Тред утонул или удален.
Это копия, сохраненная 19 июля 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion