Составление протокола в отсутствие лица совершившего правонарушение

Порядок обжалования протокола об административном правонарушении ГИБДД

От всевозможных происшествий на дорогах не застрахован ни один водитель. Однако не редки случаи, когда обвинение инспектора ГИБДД, в силу различных причин, является неверным или вызывает сомнения у обвиняемого.

Какое поведение будет верным в подобной ситуации? Каков порядок обжалования протокола об административном правонарушении ГИБДД? В какие сроки несогласный должен обратиться в соответствующую инстанцию? Все это мы и обсудим сегодня.

Что представляет собой протокол об административном правонарушении

Протокол ГИБДД – это официальный процессуальный документ, который составляется при выявлении фактов нарушения ПДД, когда совершивший их водитель установлен. При заполнении документа должны присутствовать обе стороны. Составляет протокол инспектор, усмотревший в действиях водителя состав административного правонарушения. Он должен описать случившееся. Водитель тоже письменно излагает в этом документе своё видение ситуации.

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

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

Можно ли обжаловать протокол

При возникновении спорной ситуации у водителя возникает вопрос, можно ли обжаловать, если не согласен с протоколом ГИБДД. Мы живём в демократическом государстве, где у гражданина есть право на защиту своих законных прав, когда их ущемляют. Ситуация с неправомерным наложением штрафов не является исключением. Право на обжалование административного взыскания оговорено в статье 30.1 КоАП РФ. Следует отметить, что оспорить можно не только протокол, но и постановление, вынесенное на его основе.

На какие нарушения необходимо ссылаться в процессе обжалования

Процедура обжалования действий инспектора ГИБДД нечасто приводит к желаемому результату. При обращении к вышестоящим должностным лицам или в судебные органы очень важно указать на нарушения, допущенные инспектором, или предъявить прямые доказательства своей невиновности, включая показания свидетелей, готовых подтвердить вашу версию. Они должны прийти на судебное заседание и свидетельствовать в вашу пользу.

Согласно требованиям статьи 28.2 КоАП РФ сотрудник ГИБДД при составлении протокола должен обязательно соблюдать следующие требования:

  1. Обозначить точное время и место составления протокола, а также свои Ф.И.О. и должность.
  2. Указать персональные и контактные данные виновного лица, свидетелей и потерпевших.
  3. Перечислить все статьи КОАП РФ, в нарушении которых он уличил водителя.
  4. Разъяснить привлекаемому к ответственности гражданину его права и обязанности.
  5. Дать возможность нарушителю, свидетелям и потерпевшим письменно изложить суть сложившейся ситуации, а также своё несогласие с позицией инспектора.
  6. Если несоблюдение ПДД привело к ДТП, к протоколу должна быть приложена его схема, а также записи с видеорегистраторов, если они имеются.
  7. Протокол обязательно подписывают инспектор и привлекаемый к ответственности гражданин, а в случае его отказа сотрудник ГИБДД отмечает этот момент в документе.
  8. Копия составленного протокола под расписку выдается водителю.
  9. Согласно 15 КоАП РФ протокол может быть составлен и при отсутствии лица, совершившего административное правонарушение. Однако нарушитель должен быть извещён об этом с помощью заказного письма или повестки с уведомлением, телеграммы, факсимильной или других видов связи, позволяющих зафиксировать факт получения извещения.

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

Протокол: ваше оружие или ваш приговор

Прежде всего, разберемся с терминологией. Обжаловать мы будем не сам протокол, а постановление, выписываемое единовременно с ним, либо решение суда, вынесенное на основании этого постановления. Протокол фиксирует лишь технические моменты: данные об участниках ДТП или нарушения и их транспортных средствах, вид нарушения, которое, якобы, было совершено, данные о свидетелях и пояснения обвиняемых лиц. Постановление же содержит решение о полагающемся наказании (штрафе, лишении прав и т. д), статью КоАП РФ, на которую опирался инспектор при вынесении решения и дополнительная информация (квитанцию, в случае штрафа, информацию о суде, в который обвиняемый будет вызван повесткой, — при административном аресте или лишении прав).

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

  • Внимательно прочитайте каждое предложение, что указано в протоколе.
  • Если заметили несоответствие схемы правонарушения действительности (или ее отсутствие), не согласны с трактовкой инспектора или считаете его действия неправомерными, обязательно укажите все это в графе «Объяснения»;
  • Настаивайте, чтобы свидетели с вашей стороны (если они имеются), например, те, кто был с вами в машине в этот момент, были обязательно вписаны в протокол. Если инспектор отказывается заносить их, сделайте это сами в графе «Объяснения»;
  • В каждой незаполненной строчке протокола ставьте прочерк, чтобы потом в ней «чудесным образом» не появилась информация, искажающая действительность.
  • По возможности сфотографируйте или снимите на видео все нюансы, относящиеся к делу, чтобы в случае чего предъявить их в качестве доказательств.
  • Не забудьте обязательно получить копию протокола. В случае появления в судебном разбирательстве иной версии, нежели была составлена, именно копия станет главным оружием для защиты ваших интересов.

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

Обжалование постановления: как, куда, когда

С протоколом разобрались, теперь перейдем непосредственно к обжалованию.

Если вы не согласны с размером штрафа, который может быть выписан как по нижнему, так и по высшему пределу, то следует обращаться к должностному лицу из группы ИАЗ (исполнение административного законодательства).

Если вы не согласны с действиями автоинспектора, то согласно установленному порядку его можно производить 2 путями:

  1. Первоначально писать жалобу вышестоящему руководству (это может быть как начальник отделения ГИБДД так и командир данного подразделения ДПС), а затем, если это не помогло, обращаться в суд.
  2. Обращаться напрямую в суд.

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

  • Кратким. Романы на 20 листов не интересно читать никому, кроме того, риск того, что читающий не обратит внимание на важные для вас моменты, крайне велик.
  • Структурированным. Жалоба может быть написана любым стилем (лучше всего деловым), однако обязана иметь выдержанную логическую последовательность: Кто обращается с жалобой, в чем его обвиняют, с чем и на основании чего он не согласен, о чем просит (отменить решение/смягчить) и какие материалы готов предоставить в качестве доказательства своей правоты.
  • Обоснованным. Чем больше законодательных документов, выдержек из КоАП РФ и т. д. вы сможете привести в свою защиту, тем выше вероятность, что ваша жалоба будет удовлетворена.

Процедура составления жалобы

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

Не все водители знают, как обжаловать протокол, когда он составлен в другом регионе, за несколько сотен километров от дома. По умолчанию рассмотрение дела производится по месту совершения нарушения. Но, если вы намерены обжаловать решение инспектора о наложении взыскания, уже при заполнении протокола можете обратиться с просьбой о переносе вашего дела на рассмотрение по месту жительства. Для этого собственноручно напишите в соответствующей графе: «Протокол прошу направить по месту моего жительства», и укажите свой адрес.

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

Действия водителя во время составления протокола

О защите своих законных прав следует задуматься уже во время составления протокола и предпринять следующие действия:

  1. Внимательно прочитайте текст, написанный инспектором.
  2. Собственноручно напишите свою версию произошедшего в графе «Объяснения». Изложите и обоснуйте своё несогласие с инспектором.
  3. Если вам не выдали копию схемы ДТП, отметьте этот факт.
  4. Внесите данные свидетелей со своей стороны, если инспектор не сделал этого.
  5. Перед тем как поставить свою подпись, зачеркните все незаполненные поля, чтобы в дальнейшем никто не смог туда что-то добавить. Помните, если подписал протокол, но изложил в нём свои аргументы, в дальнейшем обжаловать документ будет проще.
  6. Желательно сфотографировать или снять на видео все детали, которые имеют отношение к сложившейся ситуации и помогут подтвердить вашу правоту.
  7. Обязательно нужно взять копию протокола – она может понадобиться в суде, если каким-то образом появится другая версия документа.

Обращение в ГИБДД

Рассмотрение жалобы в ГИБДД, в большинстве случаев, – не больше, чем формальность. Большинство обжалований остаются без удовлетворения, после чего люди вынуждены обращаться в суд. Поскольку после направления жалобы дело будет рассматриваться без вашего участия (вам вручат лишь копию решения), то по факту ни свидетелей, ни дополнительные материалы, которые могли бы склонить чашу весов в вашу пользу, вы предоставить не сможете.

Но, если желаете испытать удачу или не имеете времени на судебные разбирательства, можете обращаться в вышеуказанные органы ГИБДД, информацию о которых найдется как в подразделении автоинспекции, так и на сайте www.gibdd.ru.

Обращение в суд

Порядок обжалования протокола об административном правонарушении ГИБДД в судебном порядке, а вернее постановления, нужно рассматривать с 2-х позиций.

  1. Когда вы оспариваете законность действий инспектора;
  2. Когда вы оспариваете предшествующее решение суда.

В первом случае, вы также пишете жалобу в суд по месту совершения административного правонарушения (узнать в какой именно можно на сайте www.sudrf.ru). Вам приходит повестка, после чего вы в назначенный день являетесь в зал судебного заседания и предоставляете все имеющиеся аргументы, доказывающие вашу позицию. Не лишним будет обратиться за помощью к адвокату.

Во втором случае, вы уже имеете на руках постановление судьи и подаете жалобу именно на него.

  • Если решение вынес мировой судья, жалоба подается в тот же районный участок, но адресуется районному суду;
  • Если решение было вынесено районным судом, то жалоба подается в него же, но адресуется в областной суд.

Вынесенное решение можно обжаловать лишь единожды.

Сроки обжалования

Независимо от того, какую инстанцию (суд или ГИБДД) вы выбрали для обжалования, срок подачи жалобы, согласно ч. 1 ст. 30.5 КоАП РФ, составляет 10 календарных дней (включая праздники и выходные). Форму подачи жалобы (лично или по почте) вы вправе выбрать самостоятельно. В данном случае срок пересылки учитываться не будет, а штемпель на конверте и квитанция об отправке станут доказательствами того, что вы уложились в срок (если жалобу откажутся принять). Та же ситуация и с повесткой, если вы пропустили судебное заседание, т. к. получили ее слишком поздно или не получили вообще.

Если вы не имели возможности по уважительной причине в надлежащем порядке оформить жалобу в установленный срок, то можете подать заявление «О восстановлении срока для обжалования», в котором эта причина (болезнь, командировка и т. д) указывается. Если ваше заявление будет удовлетворено, можете подготавливать документы для обжалования постановления инспектора.

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

Реверс-инжиниринг для самых маленьких: взлом кейгена

Этот пост будет интересно действительно тем, кто только начинает интересоваться этой темой. У людей с опытом он, возможно, вызовет только зевки. За исключением разве что, может быть, эпилога…
Реверс-инжиниринг в той менее легальной части, где он не касается отладки и оптимизации собственного продукта, касается в том числе и такой задачи: «узнать, а как у них это работает». Иначе говоря, восстановление исходного алгоритма программы, имея на руках ее исполнимый файл.
Для того, чтобы держаться азов и избежать некоторых проблем — «взломаем» не что-нибудь, а… кейген. В 90% он не будет запакован, зашифрован или иным способом защищен — в том числе и нормами международного права…

Вначале было слово. Двойное

Итак, нам нужен кейген и дизассемблер. Что касается второго — то предположим, что это будет Ida Pro. Подопытный безымянный кейген, найденный на просторах Сети:

Открыв файл кейгена в Ida, видим список функций.

Проанализировав этот список, мы видим несколько стандартных функций (WinMain, start, DialogFunc) и кучу вспомогательных-системных. Все это стандартные функции, составляющие каркас.
Пользовательские функции, которые представляют реализацию задач программы, а не ее обертку из API-шных и системных вызовов, дизассемблер не распознает и называет попросту sub_цифры. Учитывая, что такая функция здесь всего одна — она и должна привлечь наше внимание как, скорее всего, содержащая интересующий нас алгоритм или его часть.

Давайте запустим кейген. Он просит ввести две 4-значных строки. Предположим, в функцию расчета ключа отправляются сразу восемь символов. Анализируем код функции sub_401100. Ответ на гипотезу содержится в первых двух строках:
var_4= dword ptr -4
arg_0= dword ptr 8
Вторая строка недвусмысленно намекает нам на получение аргумента функции по смещению 8. Однако размер аргумента — двойное слово, равное 4 байтам, а не 8. Значит, вероятнее всего за один проход функция обрабатывает одну строку из четырех символов, а вызывается она два раза.
Вопрос, который наверняка может возникнуть: почему для получения аргумента функции резервируется смещение в 8 байт, а указывает на 4, ведь аргумент всего один? Как мы помним, стек растет вниз; при добавлении в стек значения стековый указатель уменьшается на соответствующее количество байт. Следовательно, после добавления в стек аргумента функции и до начала ее работы в стек добавляется что-то еще. Это, очевидно, адрес возврата, добавляемый в стек после вызова системной функции call.
Найдем места в программе, где встречаются вызовы функции sub401100. Таковых оказывается действительно два: по адресу DialogFunc+97 и DialogFunc+113. Интересующие нас инструкции начинаются здесь:
Относительно длинный кусок кодаloc_401196: mov esi, mov edi, ds:SendDlgItemMessageA lea ecx, push ecx ; lParam push 0Ah ; wParam push 0Dh ; Msg push 3E8h ; nIDDlgItem push esi ; hDlg call edi ; SendDlgItemMessageA lea edx, push edx ; lParam push 0Ah ; wParam push 0Dh ; Msg push 3E9h ; nIDDlgItem push esi ; hDlg call edi ; SendDlgItemMessageA pusha movsx ecx, byte ptr movsx edx, byte ptr movsx eax, byte ptr shl eax, 8 or eax, ecx movsx ecx, byte ptr shl eax, 8 or eax, edx shl eax, 8 or eax, ecx mov , eax popa mov eax, push eax call sub_401100
Сначала подряд вызываются две функции SendDlgItemMessageA. Эта функция берет хэндл элемента и посылает ему системное сообщение Msg. В нашем случае Msg в обоих случаях равен 0Dh, что является шестнадцатиричным эквивалентом константы WM_GETTEXT. Здесь извлекаются значения двух текстовых полей, в которые пользователь ввел «две 4-символьных строки». Буква А в названии функции указывает, что используется формат ASCII — по одному байту на символ.
Первая строка записывается по смещению lParam, вторая, что очевидно — по смещению var_1C.
Итак, после выполнения функций SendDlgItemMessageA текущее состояние регистров сохраняется в стеке с помощью команды pusha, затем в регистры ecx, edx и eax записывается по одному байту одной из строк. В результате каждый из регистров принимает вид: 000000##. Затем:

  1. Команда SHL сдвигает битовое содержимое регистра eax на 1 байт или, другими словами, умножает арифметическое содержимое на 100 в шестнадцатиричной системе или на 256 в десятичной. В результате еах принимает вид 0000##00 (например, 00001200).
  2. Выполняется операция OR между полученным значением eax и регистром ecx в виде 000000## (пусть это будет 00000034). В результате еах будет выглядеть так: 00001234.
  3. В «освободившийся» есх записывается последний, четвертый байт строки.
  4. Содержимое еах снова сдвигается на байт, освобождая место в младшем байте для следующей команды OR. Теперь еах выглядит так: 00123400.
  5. Инструкция OR выполняется, на этот раз между еах и edx, который содержит, допустим, 00000056. Теперь еах — 00123456.
  6. Повторяются два шага SHL eax,8 и OR, в результате чего новое содержимое ecx (00000078) добавляется в «конец» еах. В итоге, еах хранит значение 12345678.

Затем это значение сохраняется в «переменной» — в области памяти по смещению arg_4. Состояние регистров (их прежние значения), ранее сохраненное в стеке, вытаскивается из стека и раздается регистрам. Затем в регистр еах снова записывается значение по смещению arg_4 и это значение выталкивается из регистра в стек. После этого следует вызов функции sub_401100.
В чем смысл этих операций? Выяснить очень просто даже на практике, без теории. Поставим в отладчике брейкпойнт, например, на инструкции push eax (перед самым вызовом подфункции) и запустим программу на выполнение. Кейген запустится, попросит ввести строки. Введя qwer и tyui и остановившись на брейкпойнте, смотрим значение еах: 72657771. Декодируем в текст: rewq. То есть физический смысл этих операций — инверсия строки.
Теперь мы знаем, что в sub_401100 передается одна из исходных строк, перевернутая задом наперед, в размере двойного слова, целиком умещающаяся в любом из стандартных регистров. Пожалуй, можно взглянуть на инструкции sub_401100.
Еще один относительно длинный кусок кода sub_401100 proc near var_4= dword ptr -4 arg_0= dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi pusha mov ecx, mov eax, ecx shl eax, 10h not eax add ecx, eax mov eax, ecx shr eax, 5 xor eax, ecx lea ecx, mov edx, ecx shr edx, 0Dh xor ecx, edx mov eax, ecx shl eax, 9 not eax add ecx, eax mov eax, ecx shr eax, 11h xor eax, ecx mov , eax popa mov eax, pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_401100 endp
В самом начале здесь ничего интересного — состояния регистров заботливо сохраняются в стеке. А вот первая команда, которая нам интересна — следующая за инструкцией PUSHA. Она записывает в есх аргумент функции, хранящийся по смещению arg_0. Потом это значение перекидывается в еах. И обрезается наполовину: как мы помним, в нашем примере в sub_401100 передается 72657771; логический сдвиг влево на 10h (16 в десятичной) превращает значение регистра в 77710000.
После этого значение регистра инвертируется инструкцией NOT. Это значит, что в двоичном представлении регистра все нули превращаются в единицы, а единицы — в нули. Регистр после выполнения этой инструкции содержит 888ЕFFFF.
Инструкция ADD добавляет (прибавляет, плюсует, и т.д.) получившееся значение к исходному значению аргумента, которое все еще содержится в регистре есх (теперь понятно, зачем было записывать его сначала в есх, а затем в еах?). Результат сохраняется в есх. Проверим, как будет выглядеть есх после выполнения этой операции: FAF47770.
Этот результат копируется из есх в еах, после чего к содержимому еах применяется инструкция SHR. Эта операция противоположна SHL — если последняя сдвигает разряды влево, то первая сдвигает их вправо. Подобно тому, как операция логического сдвига влево эквивалентна умножению на степени двойки, операция логического сдвига вправо эквивалентна такому же делению. Посмотрим, какое значение окажется результатом этой операции: 7D7A3BB.
Теперь совершим еще одно насилие над содержимым еах и есх: инструкция XOR — сложение по модулю 2 или «исключающее ИЛИ». Суть этой операции, грубо говоря, в том, что в результат ее равен единице (истине) только, если операнды ее раЗнозначные. Например, в случае 0 xor 1 результатом будет истина, или единица. В случае 0 xor 0 или 1 xor 1 — результатом будет ложь, или ноль. В нашем случае в результате выполнения этой инструкции применительно к регистрам еах (7D7A3BB) и есх (FAF47770) в регистр еах запишется значение FD23D4CB.
Следующая команда LEA ecx, элегантно и непринужденно умножает еах на 9 и записывает результат в есх. Затем это значение копируется в edx и сдвигается вправо на 13 разрядов: получаем 73213 в еdx и E6427B23 в есх. Затем — снова ксорим есх и edx, записывая в есх E6454930. Копируем это в еах, сдвигаем влево на 9 разрядов: 8А926000, затем инвертируем это, получая 756D9FFF. Прибавляем это значение к регистру есх — имеем 5BB2E92F. Копируем это в еах, сдвигаем вправо аж на 17 разрядов — 2DD9 — и ксорим с есх. Получаем в итоге 5BB2C4F6. Затем… затем… что там у нас? Что, все?..
Итак, мы сохраняем это значение в область памяти по смещению var_4, загружаем из стека состояния регистров, снова берем из памяти итоговое значение и окончательно забираем из стека оставшиеся там состояния регистров, сохраненные в начале. Выходим из функции. Ура!.. впрочем, радоваться еще рано, пока что на выходе из первого вызова функции мы имеем максимум — четыре полупечатных символа, а ведь у нас еще целая необработанная строка есть, да и эту еще к божескому виду привести надо.
Перейдем на более высокий уровень анализа — от дизассемблера к декомпилятору. Представим всю функцию DialogFunc, в которой содержатся вызовы sub_401100, в виде С-подобного псевдокода. Собственно говоря, это дизассемблер называет его «псевдокодом», на деле это практически и есть код на С, только страшненький. Глядим:
Нужно больше кода. Нужно построить зиккурат. SendDlgItemMessageA(hDlg, 1000, 0xDu, 0xAu, (LPARAM)&lParam); SendDlgItemMessageA(hDlg, 1001, 0xDu, 0xAu, (LPARAM)&v15); v5 = sub_401100((char)lParam | ((SBYTE1(lParam) | ((SBYTE2(lParam) | (SBYTE3(lParam) << 8)) << 8)) << 8)); v6 = 0; do { v21 = v5 % 0x24; v7 = v21; v5 /= 0x24u; if ( v7 >= 10 ) v8 = v7 + 55; else v8 = v7 + 48; v21 = v8; } while ( v6 < 4 ); v22 = 0; v9 = sub_401100(v15 | ((v16 | ((v17 | (v18 << 8)) << 8)) << 8)); v10 = 0; do { v19 = v9 % 0x24; v11 = v19; v9 /= 0x24u; if ( v11 >= 10 ) v12 = v11 + 55; else v12 = v11 + 48; v19 = v12; } while ( v10 < 4 ); v20 = 0; wsprintfA(&v13, «%s-%s-%s-%s», &lParam, &v15, v21, v19); SendDlgItemMessageA(hDlg, 1002, 0xCu, 0, (LPARAM)&v13);
Это уже легче читать, чем ассемблерный листинг. Однако не во всех случаях можно положиться на декомпилятор: нужно быть готовым часами следить за нитью ассемблерной логики, за состояниями регистров и стека в отладчике… а потом давать письменные объяснения сотрудникам ФСБ или ФБР. Под вечер у меня особенно смешные шутки.
Как я уже сказал, читать это легче, но до совершенства еще далеко. Давайте проанализируем код и дадим переменным более удобочитаемые названия. Ключевым переменным дадим понятные и логичные названия, а счетчикам и временным — попроще.
То же самое, только переведенное с китайского на индусский.SendDlgItemMessageA(hDlg, 1000, 0xDu, 0xAu, (LPARAM)&first_given_string); SendDlgItemMessageA(hDlg, 1001, 0xDu, 0xAu, (LPARAM)&second_given_string); first_given_string_encoded = sub_401100((char)first_given_string | ((SBYTE1(first_given_string) | ((SBYTE2(first_given_string) | (SBYTE3(first_given_string) << 8)) << 8)) << 8)); i = 0; do { first_result_string = first_string_encoded % 0x24; temp_char = first_result_string; first_string_encoded /= 0x24u; if ( temp_char >= 10 ) next_char = temp_char + 55; else next_char = temp_char + 48; first_result_string = next_char; } while ( i < 4 ); some_kind_of_data = 0; second_string_encoded = sub_401100(byte1 | ((byte2 | ((byte3 | (byte4 << 8)) << 8)) << 8)); j = 0; do { second_result_string = second_string_encoded % 0x24; temp_char2 = second_result_string; second_string_encoded /= 0x24u; if ( temp_char2 >= 10 ) next_char2 = temp_char2 + 55; else next_char2 = temp_char2 + 48; second_result_string = next_char2; } while ( j < 4 ); yet_another_some_kind_of_data = 0; wsprintfA(&buffer, «%s-%s-%s-%s», &first_given_string, &second_given_string, first_result_string, second_result_string); SendDlgItemMessageA(hDlg, 1002, 0xCu, 0, (LPARAM)&buffer);

Эпилог

Level complete. Cледующая (и заключительная) цель — это написание своего кейгена по этому алгоритму. Писать я, по привычке, буду на языке скриптов командной оболочки Linux bash. test ${#reg1} -gt && reg1=`echo «${reg1: -8}»` — это обрезка строки, содержащей эмулированное значение регистра, до 8 младших символов. При выполнении операций туда добавлялись лишние старшие разряды. Все остальное — кропотливая эмуляция ассемблерного листинга. Я же указал вверху хаб «Ненормальное программирование», да?..
bash-реализация пресловутой sub_401100:

Основная функция кейгена:

Тестирование и сравнение:

Заключение

Теперь мы могли бы генерировать ключи к некому игровому ПО прямо из консоли Linux, однако это невозможно по нескольким причинам: во-первых, я не знаю, для какого именно ПО предназначен этот кейген — я скачал его наугад в интернете; во-вторых, использование поддельных ключей и нелицензионного проприетарного ПО запрещено нормами международного права. 😉

Федеральное государственное научно-исследовательское учреждение «Институт законодательства и сравнительного правоведения при Правительстве Российской Федерации»

Институт законодательства и сравнительного правоведения — старейшее научно-исследовательское учреждение страны.

Основные задачи Института — проведение исследований в области правового обеспечения деятельности Правительства Российской Федерации, Президента Российской Федерации и Федерального Собрания Российской Федерации; разработка научных концепций развития законодательства; проработка и научное обоснование законопроектов, вносимых в порядке законодательной инициативы Правительством Российской Федерации; анализ практики применения законодательства Российской Федерации.

Институт выполняет поручения Президента Российской Федерации, Администрации Президента, Правительства Российской Федерации, принимает активное участие в работе консультативных и совещательных органов при Президенте Российской Федерации и Правительстве Российской Федерации.

В своей научной и практической деятельности Институт постоянно взаимодействует с комитетами и комиссиями палат Федерального Собрания, Министерством юстиции Российской Федерации, а также другими федеральными органами исполнительной власти.

Одна из важнейших задач Института в условиях расширения регионального законотворчества — сравнительное исследование законодательства субъектов Российской Федерации, анализ соответствия этого законодательства федеральным законам. Информационные обзоры и аналитические материалы, содержащие доктринальные выводы, призваны оказывать помощь федеральным органам и органам власти субъектов Федерации, стран Содружества Независимых Государств при принятии ими соответствующих решений.

Институт является единственным в России специализированным научным учреждением сравнительного правоведения, исследующим проблемы стран ближнего и дальнего зарубежья в области государственно-правового строительства, парламентской деятельности, гражданского права и процесса, трудового, семейного, аграрного, природоохранного права, судоустройства, уголовного и уголовно-процессуального законодательства.
В 2003 г. по решению Правительства Российской Федерации была расширена сфера деятельности Института. Ему поручено осуществлять повышение квалификации руководящих работников и специалистов в сфере права.
Важную роль Институт играл в разработке и обсуждении проекта ныне действующей Конституции России. Активнейшее участие ученые Института приняли в подготовке трех частей нового Гражданского кодекса Российской Федерации, Семейного, Трудового, Земельного кодексов Российской Федерации и других значимых законов.