среда, 29 сентября 2010 г.

Получить десятичное число, перевести и вывести в двоичной системе счисления

Задачка уровня 1-курсника ВУЗа:

Введенное десятичное число в диапазоне от 0 до INT_MAX(константа из climit-инклуда) преобразовать в двоичную систему счисления и вывести на экран. Для вывода и ввода юзать std::cout, std::cin.

Запрещено:
  1. Использовать любые массивы;
  2. Вызывать printf;
  3. Создавать функции, кроме одной main();
  4. Использовать манипуляторы пространства std::
  5. Логические сдвиги чисел, т.е. операции '<<', '>>'
  6. Рекурсия запрещена.
  7. Логическое умножение; 
Ответ(http://www.base64.ru/):
ICAgIGludCBudW1iZXIgPSBpOwogICAgaW50IHBvd2VyICA9IDE7CiAgICB3aGlsZShwb3dlcioyPD1udW1iZXIgJiYgcG93ZXIqMiA+IHBvd2VyKQogICAgICBwb3dlcio9MjsKICAgIAogICAgd2hpbGUocG93ZXIgPiAwKSB7CiAgICAgIGNvdXQgICA8PCBudW1iZXIgLyBwb3dlcjsKICAgICAgbnVtYmVyICU9IHBvd2VyOwogICAgICBwb3dlciAgLz0gMjsKICAgIH0=

понедельник, 13 сентября 2010 г.

Забавное нововведение в использовании реестра MS Windows

Вобщем, теперь можно менять способ поиска DLL-ок, но об этом лучше почитать тут. Фактически означает еще одну "возможность" ;)

среда, 8 сентября 2010 г.

Меня догнал Python

Итак, как дикая смесь ленивого + системаного программиста + реверсера мне всегда было любопытны технологиии автоматизирующие реверс и поиск чего-либо для решения моих задач в кратчейшее время или чтобы само искалось ))) Но в этот раз технологии, а точнее язык, сам меня догнал и четко сказал мне "Я Python! Меня надо учить!" и сколько бы не убегал от его эгоцентричности, что мол он сказал и ... не убежал. Он твердо сегодня мне заявил: "А теперь я еще и в WinDbg"

О чем это я ? О том что скриптовый язык Python теперь почти в любом в более-менее значимом реверс-инструменте:

суббота, 4 сентября 2010 г.

Создание нового SVN-проекта на кряклаб

Ввиду того что команда cracklab.ru подняли SVN сервак, то я тут же воспользовался этой возможностью ) Поэтому теперь, все мои публичные исходники будут только тут .

Цель проекта:
Сбор существующего или разработка нового кода облегчающего написание приложений или исполнимых модулей, т.е. драйверов или динамических библиотек.

Пока еще все конечно сырое, но в последствии будет куда лучше ;)

четверг, 2 сентября 2010 г.

Детект машинной инструкции PUSH/POP reg

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

 switch(Opc)
 {
 case 0x50: case 0x51: case 0x52: case 0x53:
 case 0x54: case 0x55: case 0x56: case 0x57:
 {
  std::cout << "This is PUSH reg instruction" << std::endl;
  break;
 }
 case 0x58: case 0x59: case 0x5A: case 0x5B:
 case 0x5C: case 0x5D: case 0x5E: case 0x5F:
 {
  std::cout << "This is POP reg instruction"  << std::endl;
  break;
 }
 default:
  std::cout << "This isn't PUSH/POP reg instruction" << std::endl;
 }
Ответ (http://www.base64.ru/):

CS8vINCe0LTQvdC+INC40Lcg0LLQvtC30LzQvtC20L3Ri9GFINGA0LXRiNC10L3QuNC5CglpZigoT3BjICYgMHhGOCk9PTB4NTApCgkJc3RkOjpjb3V0IDw8ICJUaGlzIGlzIFBVU0ggcmVnIGluc3RydWN0aW9uIiA8PCBzdGQ6OmVuZGw7CgllbHNlIGlmKChPcGMgJiAweEY4KT09MHg1OCkKCQlzdGQ6OmNvdXQgPDwgIlRoaXMgaXMgUE9QIHJlZyBpbnN0cnVjdGlvbiIgIDw8IHN0ZDo6ZW5kbDsKCWVsc2UKCQlzdGQ6OmNvdXQgPDwgIlRoaXMgaXNuJ3QgUFVTSC9QT1AgcmVnIGluc3RydWN0aW9uIiA8PCBzdGQ6OmVuZGw7

среда, 1 сентября 2010 г.

Упаковщики, крипторы, протекторы

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

Забыл пароль от Win 7 x64, чего делать?

Задумался тут, что если у человека не стоит пароля на BIOS и как тогда мне стать админом на его компе,. если там семерка? ;) Порыскав по инэту наткнулся на:
Change your password with sticky keys

Приведу цитату:

To reset a forgotten administrator password, follow these steps:
  1. Boot from Windows PE or Windows RE and access the command prompt.
  2. Find the drive letter of the partition where Windows is installed. In Vista and Windows XP, it is usually C:, in Windows 7, it is D: in most cases because the first partition contains Startup Repair. To find the drive letter, type C: (or D:, respectively) and search for the Windows folder. Note that Windows PE (RE) usually resides on X:.
  3. Type the following command (replace “c:” with the correct drive letter if Windows is not located on C:):
    copy c:\windows\system32\sethc.exe c:\
    This creates a copy of sethc.exe to restore later.
  4. Type this command to replace sethc.exe with cmd.exe:
    copy /y c:\windows\system32\cmd.exe c:\windows\system32\sethc.exe
  5. Reboot your computer and start the Windows installation where you forgot the administrator password.
  6. After you see the logon screen, press the SHIFT key five times.
  7. You should see a command prompt where you can enter the following command to reset the Windows password (see screenshot above):
    net user you_user_name new_password
    If you don’t know your user name, just type net user to list the available user names.
  8. You can now log on with the new password.