Сейчас на форуме: (+3 невидимых) |
eXeL@B —› Дневники и блоги —› Demon666 blog: PyCracklab |
Посл.ответ | Сообщение |
|
Создано: 28 января 2009 21:52 · Личное сообщение · #1 !!!Варнинг! - элитные пацаны тут нихрена нового для себя не найдут!!! Так что просим их лесом нах, сторонкой обходить этот блог Ппц, наверно дахрена написал ну хрен сним, как-нибудь %)))) Тут я о питоне рассказывать буду немного, ну сталобыть пиарить ;) Один хрен все мы там рано или поздно будем ©кто-то там сакзал.. По традиции начну про установку немного, а то у легальных пользователей есть питон и у нас теперь тоже типа будет %)) Сливаем: http://idapython.googlecode.com/files/idapython-1.0.0.zip (~200kb) http://code.google.com/p/idapython/ - более подробно также советую слить в обязательном порядке http://idapython.googlecode.com/files/idapython-reference-1.0.0.zip (~900kb) да-да, это то, что нужно для полного счастья %))) короче те функи итд., которые можно заюзать копируем плагин python.plw в директорию с плагинами из архива idapython-1.0.0.zip C:\Program Files\IDA\plugins создаем папку с именем python в директории C:\Program Files\IDA и копируем туда в директорию C:\Program Files\IDA\python из архива idapython-1.0.0.zip четыре файла с именами idc.py idautils.py idaapi.py init.py вроде все!.. но.. Но этот плагин работать не может без еще одного.. и самого главного! Все наверное в свое время скачали отладчег для девочег %)) Immunity Так вот внутри этого Immunity инстала находится python-2.5.msi Надо его просто тупо установить у себя на комп копируем из C:\Python25 библиотеки python25.dll и msvcr71.dll в директорию где установлена IDA C:\Program Files\IDA и все, настройка питона закончена для нубиков, но на этом безграничные возможности питона не заканчиваются.... Здесь я покажу, как при помощи питона убрать обфускацию с TLS в файле накрытым Elemental Protector v.2.0 by Smon Скачать можно от сюда: http://exelab.ru/f/files/f7a2_27.01.2009_CRACKLAB.rU.tgz Вообще считаю, что если кто-то стремиться стать элитным крэкером, то именно надо начинать с этого прота - в нем есть все, чтобы тестировать свои движки, скрипты итд. на начальном этапе их создания Если движок не смог пройти тест на Elemental, то грош цена такому кодесу! – ИМХО %)) И так для начала при открытии Keygen.exe(именно этот файл у нас будет жертвой)далее будем называть кг(гы-гы, многие наверно сейчас дальше додумали /ам, но нет %)) фсе просто КейГен – хотя кг/ам можно перевести как: - "креатифф гуд, аффтар маладец") надо еще настроить ИДУ для удобств.. При открытии кг в ИДЕ появится окно "Load a new file" в Analysis нужно снять галочку с Enabled Фух фсе, мы быстро справились по нужде %) Теперь надо перейти на вкладку Exports и там два раза кликаем на TlsCallback_0 и мы в TLS сразу и попадаем Гы-гы, и что мы там сразу видим %))(ай-ай-ай;)) ладно не будем, ведь наша цель НЕ антиотладко, а снятие обфускации для того, чтобы взглянуть на те шалости что под ней спрятаны ;) Чтобы этот код больше не видеть, выделите код с адреса 0042DB38 до 0042DB4F и нажмите "-" на цифровой клаве Появится окно Hidden area напишите там просто тупо "ollybug" и в color выберете красный цвет и OK ИДА этот гуано кодес спрячед, но его можно всегда посмотреть установив курсор на красную полосу с именем "олибаг" и нажав на цифровой клаве клавишу "+" Еще для удобств надо немного настроить ИДУ Меню->Options->General... На вкладке Disassembly В Display disassembly lines уберите галочки с Empty lines и Borders between data/code в поле Number of opcode byte пишем 10 и поле Instructions indention 2 и OK - должны появится опкоды.. ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 28 января 2009 21:52 · Личное сообщение · #2 Для того чтобы писать деобфускатор, нужно проанализировать код.. Вообще, так немного хотелось сказать, что деобфускатор пишется под конкретный/определенный код и универсальный быть не может, он только автоматизирует определенный процесс Он будет хорошо работать на одном коде(идентичном, под который писался/делался), но будет "падать" на другом, где техника в значительной степени запутывания кода(мыслей в мозге реверсера), была другая.. .. и так, посмотрим на такой код Code:
Все банально просто, прыжок call loc_42DB59 в стеке адрес возврата увеличивается на единицу тем самым попадая на адрес 0042DB56 установим на этот адрес курсор и давим клавишу "C" получаем: Code:
Если далее посмотреть то все повторяется, хм.. что мы видим.. А видим мы что в коде присутствуют опкоды E9, EB итд. которые влияют на дизасм движки Заставляя создавать ложные прыжки, начинать дизасмить с неправильного адреса, замедлять анализ кода итд. по этой причине нам пришлось выключить анализ кода при открытии кг снятием галочки с Enabled при старте При нажатии на клавише "C" код у нас превратился в джамп с прыжком на 42DB5E Хм.. а там у нас 0042DB5E 60 pusha вот это и есть то что нам нужно остальное мусор Давайте посмотрим на опкоды которые мы включили в настройках E8 04 00 00 00 E9 EB 06 EB FF 04 24 C3 EB Константа? Вот эта сигна – и есмь зло, которое вставляет двиг обфускатора(вернее только одна лишь его функция) Каг сие побороть?, можно просто тупо занопить – хм.., а что мы ведь только начали, так таг и сделаем, понаблюдаем что произойдет дальше - мы ведь пишем скрипт, а не тупо компилируем плагин при малейшем пуке %))) поэтому нудная перекомпиляция нам не грозит ;) Хотя нопить это все-таки банально, я ща подумал это всегда успеем, а вот сворачивание гуано кода это пожалуй на начальном этапе лучше, про это пожалуй и напишу Ну вот после нудной писанины про анализ мы и начинаем писать скрипт на питоне Но вопрос в каком редакторе кода нам его писать? В вин-блокноте? Хз. наверное лучше выпить яду %)) Есть очень адская ИДЕ для питона Эрик ее зовут, но - это тоже жесть, там одни только танцы с бубном по ее настройке чего только будут стоит, но они того стоят %)) считаю лучшая ИДЕ, которую видел для написания скриптов.. тем более что написана эта ИДЕ на питоне :P Но да ладно, а то я щаз расплачусь от сентиментальности %))) Самый лучший вариант для простоты заюзать гуд блокнот EmEditor - www.emeditor.com/ там подсветка кода страшная по дефолту такая, но с помощью регулярок настраивается сносно, короче юзать для скриптов на коленке претендент хороший, ну а там кому что больше нравиццо... ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 28 января 2009 21:53 · Личное сообщение · #3 Для начала нужно подключить модули питона Ну это что-то типа LoadLibrary, которая загружает dll Тут два варианта есть from idaapi import * или import idaapi различия у них есть, но скажу пожалуй только одно если юзать import idaapi то придется при вызове функций из SDK ИДЫ писать для примера: idaapi.askaddr(0, "string") а если from idaapi import * то askaddr(0, "string") короче получается код c from idaapi import * чтобы мосх не трахать пишем тупо from idc import * from idaapi import * from idautils import * здесь символ "*" после import разрешает использовать все функции предоставляемые модулем символ "#" это комментарий в питоне теперь стоит сказать о русских буквах в скриптах, просто так их в питоне не напишешь да и вообще с кодировкой там лол неоправданный если писать в скрипте русские буквы выскочит мессага в лог типа: SyntaxError: Non-ASCII character '\xfd' in file C:/.../.../O_o.py on line 7, but no encoding declared; see www.python.org/peps/pep-0263.html for details лечится такая трабла добавлением в начале кода строчки #-*- coding: cp1251 -*- да-да, на первый взляд это комментарий, но это не так это так указывается кодировка в питоне, которая юзается в скрипте, у нас это cp1251 эта строка должна в win32 быть всегда самой первой в скрипте и неипет! ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 28 января 2009 21:53 · Личное сообщение · #4 Теперь о загадочной askaddr askaddr(address, "string") Эта та же самая API функция, вызываем и передаем ей параметры(два параметра) Первый параметр значение по умолчанию, типа адрес который появится в комбобоксе А второй просто строку, ну например пояснение что нужно вводить У нас обфускация начинается с адреса 0042DB38 Сталобыть пишем: address = askaddr(0x0042DB38, "Enter an address:") так теперь у нас есть код, который уже можно запустить на выполнение создаем пустой файл в директории с кг и назовем его чич-то O_o.py откроем его в EmEditor и копипастим туда такой код: Code:
Теперь в ИДА меню->File->Python file... и в появившемся окне выбираем файл O_o.py Должно появиццо окно Please enter an address для ввода адреса, но он уже у нас там есть по дефолту, это так чисто для примера – жмем OK Теперь момент истены – будем писать полезный код Code:
Теперь поясню что это вообще такое for i in range(35): for – это что-то типа команды loop на асме, а range(35) – это типа mov ecx,35 это цикл повторяющийся 35 раз(35 на первом этапе взято от елды, потому как мы незнаем сколько раз будет повторяццо сигна в коде) еще в питоне конец цикла ограничивается отступом лучше юзать один таб чтобы путаницы не было, его длину можно потом в редакторе кода настроить кому как больше нравится отступы надоооо строго соблюдать это синтаксис питона короче если в лог окне у ИДЫ выскочит типа такой мессаги IndentationError: expected an indented block Это значит что где-то отступ кривой ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 28 января 2009 21:54 · Личное сообщение · #5 find_binary – это функа ИДЫ для поиска по сигнатуре, принимает 5 параметров первый – стартовый адрес, второй – конечный адрес – диапазон поиска тут мы addr = address присваивали address постоянное значение 0x0042DB38 и потом присваиваем его же переменой addr ну это типа как в олиных скриптах там чета типа var addr var address только здесь можно писать почти в любом месте addr+500 питон прибавит к 0x0042DB38+500 и уже запишет нужный резултат в олиных скриптах там наверно полный изеб будет, хотя хз.. третий параметр наша сигна что ищем четвертый – это мы указываем шестнадцатеричный формат для правильного восприятия пятый - поиск вниз, короче с буржуйского хорошо переводится там еще есть другие режимы поиска, если надо SEARCH_UP SEARCH_DOWN SEARCH_NEXT SEARCH_CASE SEARCH_REGEX SEARCH_NOBRK SEARCH_NOSHOW SEARCH_UNICODE SEARCH_IDENT SEARCH_BRK print "%08X %d" % (addr, i) выводит в окно лога нужную инфу короче адреса по которым нашел сигны если кликнуть два раза на нужном, то будет переход на этот адрес ну и номер счета сигнатур чтобы видеть сколько всего нашел if addr == 0xFFFFFFFF: break это проверка на возвращаемое значение адреса где нашел если addr будет равен 0xFFFFFFFF – значед ппц больше нет сигн в коде в этой секции кода ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 28 января 2009 21:54 · Личное сообщение · #6 add_hidden_area – эта функа ИДЫ как раз тарит гуано кодес первый – стартовый адрес, второй – конечный адрес – диапазон сворачивания кода там у нас сигна 14 байт – поэтому и addr+14 третий – строка "sign" чич-то будет написана когда свернута четвертый и пятый строки когда развернут код будет написано внизу и вверху, нам оно нах не надо щаз, поэтому там просто кавычки типа пусто и последний цвет в который окрасится свернутый код, там тупо любой цвет можно сделать для каждой сигны свой цвет ну и addr += 1 это смещение чтобы на одном месте не топтаццо вроде фсе %))) ЗЫ: честно не помню на какой планете грибами питался с зелеными человечками ;) Теперь полностью код Code:
Чет подзаипался уже писать, наверно оно нах никому не надо, но хс еще чуток моно Нужно этот код тупо по-первой скопипастить в файл как раньше делали и запустить! Что видим нашел 30 сигн, ну это уже что-то %)) Теперь там под цветными строками Ставим курсор и жмем "С" ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 28 января 2009 21:55 · Личное сообщение · #7 Кусочег кода что получиццо должно: Code:
Теперь откроем EmEditor и скопипастим этот код из ИДЫ в него Хм.. все вроде гуд, но строка .SmoN:0042DBF6 ; sign Всю малину обсерает, что делать? Бу-го-га, да фсе просто В EmEditor жмем Ctrl+H и появится окно Replace там ставим галочку на Use Regular Expressions и в поле Find: пишем вот такую регулярку, надеюсь форум слеши не съест, короче должен быть первым и перед последней n(так на всякий случай) \.SmoN.*sign\n Поле Replace with: должно быть обязательно пустым и жмем кнопку Replace All Результат: Code:
Вот так за несколько минут убирается обфускация Но что мы видим у нас есть код, который не был обработан Начиная с адреса 0042DC06 Code:
Но если посмотреть то можно увидеть что и здесь есть закономерность, а сталобыть и сигна EB 03 E8 EB 03 EB FC E9 Так как эта сигна короче первой ее искать будем позже ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 28 января 2009 21:55 · Личное сообщение · #8 Пожалуй немного расскажу про свертывание кода в ИДЕ Тут действует принцип – первой сигнатуры Что это за херня, а все просто самая длинная сигна должна искаться первой Потом уже маленькие потом еще короче и так до самой маленькой Потому что в свернутом ранее коде уже ничего не будет сворачиваться, а это показывает то, что если первые будут искаться маленькие сигны они могут входить в состав больших и тем самым если потом искать большие после маленьких они вообще не будут найдены Короче.. хуй его знает, каг еще проще объяснить %)) Код: Code:
Тут поменяли сигну и цвет Но для примера еще добавлена обработка исключений try: except: pass что есмь такое ну это типа когда find_binary возвратит 0xFFFFFFFF, то это число передасццо в функу add_hidden_area в качестве параметров 1 и 2 функция аварийно завершится и будет вылет но try сделает так что вылета не будет а завершит работу скрипта правильно короче там дохуя писать надо, так что ну ее нах ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 28 января 2009 21:56 · Личное сообщение · #9 просто тупо пишите try: #... здесь опасный/глючный/кривой код except: pass и фсе таких сигн нашел 6 все это в логе ИДЫ имееццо так теперь весь код чистим в EmEditor с помощью Replace и изучаем что имеем а все просто антиотладко это гы-гы, можно сказать не одного байта нет, но лвигаццо надо дальше в коде по адресу 0042DDF6 видно какая-то "раскриптовка" кода будет хм.. сделаем тупо наверно так, чтобы не вкуривать в алго запустим атладчег ИДЫ, но перед этим поставим несколько бряков у нас же ИДА голая сталобыть ее спалят сразу нам надо чуток подкорректировать процесс дебуга ставим бряки на 0042DC04 и 0042DDF6 и жмем F9 остановились на .SmoN:0042DC04 test al, al Меняем в регистре al 01 на 00 и жмем F9 остановились на .SmoN:0042DDF6 pop esi Если посмотреть на этот цикл(не забываем жать "С" чтобы превращать в читабельный код) Code:
Этот код цикла уже очистить попробуйте сами, чтобы не было тупо сделай как я или хуже чем я %)) То выход у этого цикла будет 0042DE3B ставим там бряк и жмем F9 Тармазнулись, гы-гы Чуть тресим и.. и.. и .SmoN:0042E225 rdtsc Ну фсе я сдох заипался уже писать, надеюсь кому-нить это в трудный период жизни поможет Не стал перечитывать выложил как есть(черновик), может где есть ошибки - не бейте нубика сильно, я только учусь %)) Полностью скрипт Code:
----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 28 января 2009 22:15 · Поправил: Smon · Личное сообщение · #10 |
|
Создано: 28 января 2009 23:15 · Личное сообщение · #11 |
|
Создано: 29 января 2009 07:57 · Личное сообщение · #12 |
|
Создано: 29 января 2009 14:00 · Личное сообщение · #13 |
|
Создано: 30 января 2009 06:44 · Личное сообщение · #14 Smon пишет: Когда ждать распакованный, полностью восстановленный и закейгененный crackme? Нееее.. так не интересно %)) бгг, пусть это делает поколение "NEXT"©аффтар неизвестен Да и Отец Дерматолог где-то там уже сказал, что Я только фЭйки мОстырить умею %))) Таг что пипец, на мне клеймо неудачнега, сталобыть недостойный я %)) Мну тут просто под шумок, питон по-тихому пиарит ;) ==================================== И так продолжим юзать/пиарить питон.. %)) Мы прошлый раз остановились в отладчике ИДЫ на бряке 0042DE3B Хм.. теперь жмакаем F7 два раза Ок, остановились здесь .SmoN:0042DF04 jmp short loc_42DF08 Запускаем наш скрипт еще раз Но уже в комбобокс вбиваем адрес на котором стоим 0042DF04 и жмем окей (0042E32F) Скрипт нашел еще сигны, но уже в "раззкриптованом" коде Но если проскролить вниз до адреса 0042E17E И посмотреть на код то можно заметить что обфускация есть Но скрипт ее по каким-то причинам не асилил Так опять анализ нужен(в дебуг режиме включить надо тоже опкоды, чтобы видно было!) Хм, а оказывается все просто.. надо больше установить циклов, у нас их 35 поставим 70 И опять запустим, но сейчас просто нажмем Alt+7 и в появившемся окне ScriptBox два раза кликаем на C:/.../.../O_o.py Вбиваем еще раз 0042DF04 и ок Смотрим в лог, хмм.. нашел уже 60 сигн и 3 других Так но постоянно жать клавишу C это жопа, когда там один-два раза это хс, но 70 раз это уже изебство Подметим это и заставим скрипт сделать анализ за нас В скрипт нам надо еще добавить вот такой код: do_unknown_range(address, size, DOUNK_EXPAND) auto_make_code(address) auto_make_code – делает анализ кода и принимает всего один параметр – это адрес с которого нужно начать делать анализ do_unknown_range - эта функа заставляет убить в ИДЕ сделанный ранее анализ причина ее заюзать довольно проста, просто ИДА иногда может и не сделать новый поверх старого анализа кода, потому как там уже есть анализ сделанный ранее короче do_unknown_range должна всегда вызываться перед auto_make_code и неипет! do_unknown_range принимает 3 параметра первый - это адрес с которого нужно начать убивать анализ второй – количество байтов в области, чтобы сделать код unknown(undefined) третий – а короче, всегда ставьте там DOUNK_EXPAND, это гарантировано убьет фсе нах полностью весь код: Code:
Для начала советую в обязательном порядке удалить старую базу ИДЫ от кг и повторить все телодвижения заново с использованием нового скрипта! Все, деобфускацию убрали в TLS весь код чистенький каг слеза девственницы %)) ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 30 января 2009 06:44 · Личное сообщение · #15 И теперь мы дошли до нового этапа расширения возможностей скрипта и это decrypt Интересующие нас участки кода: Code:
Code:
Code:
Code:
Все остальное в TLS – для нас уже просто мусор Так чтобы была интрижка, когда будет свободное время и тяга, я опишу функцию декрипта И будет дано задание(простенькое) на выполнение Трое нубиков(естественно чтобы было все честно), у которых ранг от 10 до 40, должны будут его решить и приатачить здесь результаты За конкурс денег не будет %))) Но зато, будет продолжено описание реверса этого кг мной далее(а там ведь столько всего интересного %))) ) Если трех аттачей не будет в течении 2 дней после задания, блог будет закрыт сталобыть Вам решать, хотите дальше читать "дневник сумасшедшего", выполняете задание – нет, ну на нет и суда нах нет! ЗЫ: у вас еще есть время ранги подтянуть ;) ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 30 января 2009 07:39 · Личное сообщение · #16 |
|
Создано: 30 января 2009 07:50 · Личное сообщение · #17 |
|
Создано: 03 февраля 2009 22:12 · Поправил: Demon666 · Личное сообщение · #18 Задание(так просто чич-то для теста) Запускаем кг ставим бряк(железный) на kernel32.VirtualAlloc, но не как обычно на начало, а в самом конце на ret и F9 После того как тормазнулись смотрим на EAX и переходим по этому адресу в окне дампа И далее тресим F7(5-6 раз) до 0042C3A6 там F8 на CALL 0042C4CC Выделенная память заполнилась кодом – дампим и открываем в ИДЕ в полях Loading segment и Loading offset прописываем адрес на котором дампили(короче, че было в EAX) Теперь задача создать новую сигнатуру для деобфускации этого дампа Написать свой скрипт на питоне и очистить в EmEditor код от мусора Все это здесь приаттачить P. S. Тут стоит упомянуть ап одной особенности в комбобоксе при вводе адреса может быть типа 0:00360000 надо заменить просто на 00360000 ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 04 февраля 2009 11:31 · Личное сообщение · #19 Я тут прикинул дохрена че-то писать получаеццо о декрипте, решил разбить на несколько этапов Здесь я опишу как падчить в ИДЕ с помощью питона, а также акцентирую внимание на некоторые примитивные вещи ;) Патчинг в ИДЕ для нубика нетривиальная задача, ибо по дефолту там такой возможности "НЕТ" ИДА дает нам для патченга три функи(их там больше, но я опишу только три) patch_byte – патчит байт patch_word – патчит word patch_long – патчит dword принимают они всего два параметра patch_byte(0x0042DB38, 0xC3) первый – адрес(0x0042DB38), по которому запишется значение второй – сталобыть, то самое значение(0xC3) если написать в скрипте patch_byte(0x0042DB38, 0xC3) и запустить этот скрипт, то значение EB по адресу 0x0042DB38 пропатчиццо на C3 хм.. вроде все гуд, но есть одно «но», сам файл не пропатчился – пропатчилась только его база ИДЫ patch_word и patch_long аналогично patch_byte, но в качестве второго параметра передаются word и dword соответственно вот и настал момент истены %)) у нас здесь пиар питона, сталобыть средствами питона файлег падчить и будем pos = 0 # pose aka position in the file prey = open('Keygen.exe', 'r+b') open открывает жертву – короче, что-то типа CreateFile два параметра принимает первый – имя жертвы(тут жертва, база ИДЫ и скрипт, должны находится в одной директории!) Второй, а тупо всегда пишем 'r+b' ;) Пишите всегда эти две строчки кода, после раздела import – короче, чтобы точно понятно было вот код: Code:
----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 04 февраля 2009 11:32 · Личное сообщение · #20 import struct – это есмь модуль питона, который предназначен для работы с бинарным кодом чуть ниже я немного о нем расскажу вообще модули питона тем и хороши что писать ничего не надо, тупо гуглим, подключаем и юзаем(уже все давно за нас/для нас написано) процесс похож как у дельфи компоненты, только все проще – короче, у питона нет ограничений! Жертву мы открыли, теперь осталось ее пропатчить физически на диске %)) Мы знаем что смещение в файле это НЕ есть одно и тоже что смещение в адресном пространстве, которое нам показывает ИДА Но ИДА из своего SDK дает нам уже готовую функу get_fileregion_offset pos = get_fileregion_offset(addr) принимает один параметр – адрес для которого нам надо получить смещение относительно начала файла prey.seek(pos) seek – это устанавливает смещение в файле, относительно начала файла ну мы просто тупо передаем seek, то что вернула get_fileregion_offset и не о чем больше не думаем тут скажу пожалуй что prey – это "объект", а seek это его "метод", ну как-то так %)) prey.write(struct.pack('L', dd)) write – записывает в файл, то что нам нужно но скромно говоря питон работает по дефолту для записи в файл со строками и вот мы для этого и подключали новый модуль, чтобы без проблем юзать бинарный код в питоне! struct.pack – что это такое? Гы, да фсе просто.. превый параметр – это типа тип указываем, ну как в асме byte, word, dword но только символы L H B соответственно равны L -> dword (unsigned long) H -> word (unsigned short) B -> byte (unsigned char) Второй параметр – значение, которое мы хотим преобразовать для записи в файл И так у нас получилось три строчки кодеса Code:
----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 04 февраля 2009 11:32 · Личное сообщение · #21 Но так писать код не есть гуд, нам надо чтобы все было красиво и мы могли этот код юзать для отлома других протов ;)) Хм.. у нас есть patch_byte логичное название, а что если мы назовем функу file_patch_byte Полностью отражает что делает в своем названии, ОК. Заставим ее принимать идентично два параметра как у patch_byte В питоне для созданий функций юзается зарезервированное слово def и заканчивается символом : (двоеточие) и получается у нас: def file_patch_byte( addr, db): теперь изменим немного наш код и.. и.. и: Code:
Сталобыть вызов будет такой file_patch_byte(0x0042DB38, 0xC3) Так если мы жертву открывали(open), то ее всегда надо закрывать ;) Пишем всегда в конце скрипта prey.close() close – просто киляет "объект" prey ну и по традиции полностью скрипт Code:
----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
eXeL@B —› Дневники и блоги —› Demon666 blog: PyCracklab |