SHOW:
|
|
- or go back to the newest paste.
1 | Аттенсион! Все очень топорно, никакого искусства реверсинга. Ну, а что вы хотели с таким crackme... | |
2 | ||
3 | В crackme.exe находится такой код: | |
4 | ||
5 | <?mmcache_load("eJxVUmFPGkEQ3Zk95KAqolS0WjyRIoJSuMDZGmpyNda2EVSkNPilWW8Pgl7TBJLG+Cv65/on+iu6w55E9sPuvDez781Ottk8cU8+nzJkjAGj4y2jdcj0ulY0N1TQD8QA8gAKUu2tjxyA0y2Y3DUIR1WEETQAIsTNYURnefSplqTAxDmM8phKce3yh02FMI4mxrr43DbzAhDj3fkZbgHmgauWmYQEwMNEgCAsYUJHPBn6QYr2ZQBJBklYwWXdj5EC+DupSFPmJa5gKrIK8DVGXJYyacWuJtdwCdOwrnVxrbs408orWMR12NT6Yc1r3NTzMDJP3U0msKUyGW4BxKdP5ttohRPL4hZuJ3cA/pFGFnPhUHa6GzOOb2ADc+/zl7shK0aD33DFCmxX2x/l77BAQYO2PVVF5j9lPVE09oBbCtieXa3Kqicq0qlXnUpdOrVqxX7nCCluD/uihMX6Zem5q7kP3FTgkwLWcGwZJbcBPKeY3qNrX3Q8u/e9HfQ67fvm2U1w03FrrbOrSuvxY9C6cz9MuzlQmgv0hcTYd2o/pO/9kr5Zxn3joIDlolMAnqef54+GIrD6Yhj4Mm59G4uBf2R5o/uy/+BbjevT9hf3/PhYv5fWfxTXTSk=");?> | |
6 | ||
7 | Гугл отвечает, что это turck mmcache loader. Ставим этот модуль (TurckLoader.dll) для php4. Запускаем пхп из под олли, передавая ему имя скрипта и параметр - серийник. Трейсим это дело и видим, что эта строка - это base64_encode(gzcompress()) от следующего: | |
8 | http://w1ck3dg0ph3r.tk/paste/mmcache.txt | |
9 | ||
10 | Очевидно, mmcache не просто кодирует исходник, а компилирует его в опкоды. Изучать, как он это делает и реверсить этот ужас у нас желания нет, поэтому идем дальше. | |
11 | ||
12 | Теперь, останавливаясь в олли на EP, ставим memory breakpoint на все вхождения нашего серийника ("testserial", в моем случае) в memory map. Останавляваясь на этих бряках, смотрим, что происходит, и, если строка копируется куда-либо, добавляем еще брейкпоинтов. Наша цель при всем этом - найти точку, где происходит сравнение с эталонным серийником или же алгоритмическая проверка его на подлинность. | |
13 | ||
14 | В определенный момент замечаем вычисление md5 от серийника: md5("testserial") = c5334ec368813eb1eeb0bccf6a0a7a58. После копирования его из стека в хип, ставим брейкпоинт и на него. В скором времени видим сравнение с еще одним хэшем: 2c211d1ca0d651605d6410286adab7fa, предположительно реального серийника. | |
15 | ||
16 | Поскольку мы, таки, ищем легких путей, просто переключаем флаг z процессора, продолжаем выполнение и наблюдаем: | |
17 | ||
18 | - | Flag is be8d11c06976adea4d0fee084d470e60 |
18 | + | Flag is ******************************** |
19 | ||
20 | ps. Ничто, в принципе, не мешает все это проделывать на crackme.exe, просто удобней трейсить, когда пхп`шные модули подключены динамически. |