Сейчас на форуме: asfa, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Обсуждение Crackme
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 8.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 18 марта 2012 01:17
· Личное сообщение · #1

Как бы не нашел общий раздел для обсуждения Crackme, предлогаю тут обсуждать

После просмотра видеоуроков от Bad_guy по крекинду, и скачав вредварительно крэкми --> ОТСЮДА <--, возник вопрос насчет fant-cm4.zip.
Задача:
- Find a valid serial for your nick/name
- Patch the crackme to accept any input as valid serial


В ollydbg как бы вроде понял логику, но вот не хватает знания насчет "генераций" логин и пароля..
Вот мне кажется тут что -то мутится:
CPU Disasm
Code:
  1. Address   Hex dump          Command                                Comments
  2. 0040120A  |.  68 84304000   PUSH OFFSET 00403084                   ; |String
  3. 0040120F  |.  68 E8030000   PUSH 3E8                               ; |ItemID = 1000.
  4. 00401214  |.  FF75 08       PUSH DWORD PTR SS:[ARG.1]              ; |hDialog => [ARG.1]
  5. 00401217  |.  E8 62010000   CALL <JMP.&USER32.GetDlgItemTextA>     ; \USER32.GetDlgItemTextA
  6. 0040121C  |.  68 00010000   PUSH 100                               ; /MaxCount = 256.
  7. 00401221  |.  68 84314000   PUSH OFFSET 00403184                   ; |String
  8. 00401226  |.  68 E9030000   PUSH 3E9                               ; |ItemID = 1001.
  9. 0040122B  |.  FF75 08       PUSH DWORD PTR SS:[ARG.1]              ; |hDialog => [ARG.1]
  10. 0040122E  |.  E8 4B010000   CALL <JMP.&USER32.GetDlgItemTextA>     ; \USER32.GetDlgItemTextA
  11. 00401233  |.  FF75 08       PUSH DWORD PTR SS:[ARG.1]              ; /Arg1 => [ARG.1]
  12. 00401236  |.  E8 BE000000   CALL 004012F9                          ; \CRACKME4.004012F9
  13. 0040123B  |.  83F8 00       CMP EAX,0

А после этого выполняется JE (если равно) переход на
Code:
  1. Address   Hex dump          Command                                Comments
  2. 00401255  |> \6A 30         PUSH 30                                ; /Type = MB_OK|MB_ICONEXCLAMATION|MB_DEFBUTTON1|MB_APPLMODAL
  3. 00401257  |.  68 29304000   PUSH OFFSET 00403029                   ; |Caption = "Check Serial"
  4. 0040125C  |.  68 36304000   PUSH OFFSET 00403036                   ; |Text = "Wrong Serial! Keep trying, you'll get it!"

а если условие не выполняется, то выполняется дальше:
Code:
  1. CPU Disasm
  2. Address   Hex dump          Command                                Comments
  3. 00401240  |.  6A 40         PUSH 40                                ; /Type = MB_OK|MB_ICONASTERISK|MB_DEFBUTTON1|MB_APPLMODAL
  4. 00401242  |.  68 29304000   PUSH OFFSET 00403029                   ; |Caption = "Check Serial"
  5. 00401247  |.  68 60304000   PUSH OFFSET 00403060                   ; |Text = "You got it! Congrats! <img src="http://exelab.ruimg/smilies/s1.gif" border="0" align="" alt="">"
  6. 0040124C  |.  6A 00         PUSH 0                                 ; |hOwner = NULL
  7. 0040124E  |.  E8 49010000   CALL <JMP.&USER32.MessageBoxA>         ; \USER32.MessageBoxA

т.е. если ZF=0, то логин и пароль подошли.
Но это второй часть, я думаю место JE написать JMP и написать переход на 00401240.
А вот с первой частью не понимаю - откуда найти логин и пароль? В видеокурсе на первом Crackme пароль была написань в самом коде, а тут уже "серьезная защита"

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



Ранг: 129.0 (ветеран), 116thx
Активность: 0.060
Статус: Участник

Создано: 18 марта 2012 02:10
· Личное сообщение · #2

Contrafack пишет:
Подкажите пожалуйста как решать задачу? ненадо сказать логин и пароль, а скажите только на каком направлений копать.

Остановись по этому адресу:
00401236 |. E8 BE000000 CALL CRACKME4.004012F9
и зайди в CALL CRACKME4.004012F9 (жмешь F7), а дальше нажимаеш F8 и смотриш, там увидиш и Name и Serial...

-----
We do what we want because we can.


| Сообщение посчитали полезным: Abraham

Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 18 марта 2012 02:54 · Поправил: Vovan666
· Личное сообщение · #3

http://exelab.ru/art/?action=view&id=259
на ютубе даже мультик есть
http://www.youtube.com/watch?v=0OR5CDBH7DI&feature=related

| Сообщение посчитали полезным: Abraham

Ранг: 8.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 18 марта 2012 02:55
· Личное сообщение · #4

Сделал, но не нашел там не Name не serial
вот целый модуль, который вызывает 00401236:
Code:
  1. CPU Disasm
  2. Address   Hex dump          Command                                  Comments
  3. 00401002  |.  E8 D7030000   CALL <JMP.&KERNEL32.GetModuleHandleA>    ; \KERNEL32.GetModuleHandleA
  4. 00401007  |.  A3 7C304000   MOV DWORD PTR DS:[40307C],EAX
  5. 0040100C  |.  E8 C7030000   CALL <JMP.&KERNEL32.GetCommandLineA>     ; [KERNEL32.GetCommandLineA
  6. 00401011  |.  A3 80304000   MOV DWORD PTR DS:[403080],EAX
  7. 00401016  |.  6A 01         PUSH 1                                   ; /Arg4 = 1
  8. 00401018  |.  FF35 80304000 PUSH DWORD PTR DS:[403080]               ; |Arg3 = 0
  9. 0040101E  |.  6A 00         PUSH 0                                   ; |Arg2 = 0
  10. 00401020  |.  FF35 7C304000 PUSH DWORD PTR DS:[40307C]               ; |Arg1 = 0
  11. 00401026  |.  E8 07000000   CALL 00401032                            ; \CRACKME4.00401032
  12. 0040102B  |.  6A 00         PUSH 0                                   ; /ExitCode = 0
  13. 0040102D  \.  E8 A0030000   CALL <JMP.&KERNEL32.ExitProcess>         ; \KERNEL32.ExitProcess

перешел по стракам с F8, но нигде не было инфы такого..

P.S. Еще любопытный момент:
команда CALL 004012F9 он же значит "вызывать функцию/подпрограмму 004012F9"? верно?
а почему после нажатие F7 переходит на адрес 00401002 ?



Ранг: 8.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 18 марта 2012 03:48
· Личное сообщение · #5

Vovan666

Спасибо, на видео уже понял где смотреть данные.
только вот из за отсутсвия математических навыков хрен понял что за вычисления:
Code:
  1. CPU Disasm
  2. Address   Hex dump          Command                                            Comments
  3. 00401310  |> /803E 00       /CMP BYTE PTR DS:[ESI],0
  4. 00401313  |. |74 15         |JE SHORT 0040132A
  5. 00401315  |. |8A06          |MOV AL,BYTE PTR DS:[ESI]
  6. 00401317  |. |02C1          |ADD AL,CL
  7. 00401319  |. |32C1          |XOR AL,CL
  8. 0040131B  |. |F6F3          |DIV BL
  9. 0040131D  |. |66:C1E8 08    |SHR AX,8
  10. 00401321  |. |04 41         |ADD AL,41
  11. 00401323  |. |8807          |MOV BYTE PTR DS:[EDI],AL
  12. 00401325  |. |47            |INC EDI
  13. 00401326  |. |46            |INC ESI
  14. 00401327  |. |41            |INC ECX
  15. 00401328  |.^\EB E6         \JMP SHORT 00401310

Хоть написано по той ссылке, но все же доходит...
Ручной можно считать к логину серийник? может так пойму работу этого цикла?




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 18 марта 2012 04:00
· Личное сообщение · #6

Contrafack пишет:
может так пойму работу этого цикла?


Code:
  1. unsigned char i = 0;
  2. unsigned char _bl = ???;
  3. while(1) {
  4.   if(pass[i] == 0)
  5.      break;
  6.   serial[i] ='A' + ((((pass[i]+i)^i)/_bl) >> 8);
  7.   i++;
  8. }


-----
127.0.0.1, sweet 127.0.0.1




Ранг: 8.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 18 марта 2012 04:39 · Поправил: Contrafack
· Личное сообщение · #7

OKOB

да не, я программирование очень плохо знаю.
Просто мне хотяб логику понять: типа:
берет первую букву логина, переведет в HEX, умножает с чем то, потом делает XOR с чем то и получается первая буква(символ) серийника.. что то типа такого думаю пойму



Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 18 марта 2012 07:22 · Поправил: Djeck
· Личное сообщение · #8

Contrafack
Да там вроде всё очень просто. Главная процедура:
Code:
  1. 00401310   |> /803E 00            /CMP BYTE PTR DS:[ESI],0
  2. 00401313   |. |74 15              |JE SHORT CRACKME4.0040132A
  3. 00401315   |. |8A06               |MOV AL,BYTE PTR DS:[ESI]
  4. 00401317   |. |02C1               |ADD AL,CL
  5. 00401319   |. |32C1               |XOR AL,CL
  6. 0040131B   |. |F6F3               |DIV BL
  7. 0040131D   |. |66:C1E8 08         |SHR AX,8
  8. 00401321   |. |04 41              |ADD AL,41
  9. 00401323   |. |8807               |MOV BYTE PTR DS:[EDI],AL
  10. 00401325   |. |47                 |INC EDI
  11. 00401326   |. |46                 |INC ESI
  12. 00401327   |. |41                 |INC ECX
  13. 00401328   |.^\EB E6              \JMP SHORT CRACKME4.00401310


Каждой букве твоего имени подбирается один символ кода, т.е. сколько символов в имени, то столько и пароль будет символов. За это отвечает:
00401310 |> /803E 00 /CMP BYTE PTR DS:[ESI],0
Таким образом проверяется, что в ячейке по адресу ESI находится символ имени (если имя закончилось, то в ячейке будет 0 и мы выйдем из этого цикла)
переход на следующий символ расположен чуть ниже:
00401326 |. |46 |INC ESI
Т.е. увеличивается адрес ESI на одну единицу.
00401313 |. |74 15 |JE SHORT CRACKME4.0040132A
Собственно при окончании символов сработает прыжок и мы идем на выход.
00401315 |. |8A06 |MOV AL,BYTE PTR DS:[ESI]
в EAX копируем код символа в шестнадцатиричном формате
К этому шестнадцатидцетричному символу прибавляем значение из регистра ECX:
00401317 |. |02C1 |ADD AL,CL
Значение начинается с 0, а с каждым проходом цикла это значение увеличивается на единицу:
00401327 |. |41 |INC ECX
Затем между регистрами EAX и ECX производим операцию XOR (логическое ИЛИ)
00401319 |. |32C1 |XOR AL,CL
Делим EAX на EBX, результат в EAX.
0040131B |. |F6F3 |DIV BL
Получается, что делим на 1A всегда каждый символ имени. Значение EBX (1A) записывается чуть раньше цикла генерации пароля:
0040130E |. B3 1A MOV BL,1A
Эта величина постоянная и не меняется.
Далее сдвиг EAX на 8 разрядов вправо:
0040131D |. |66:C1E8 08 |SHR AX,8
Прибавляем к EAX значение 41:
00401321 |. |04 41 |ADD AL,41
и записываем получившийся символ пароля в ячейку по адресу EDI
00401323 |. |8807 |MOV BYTE PTR DS:[EDI],AL

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

P.S. Для генерации серийника достаточно просто калькулятора Windows

| Сообщение посчитали полезным: Contrafack

Ранг: 8.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 18 марта 2012 13:58
· Личное сообщение · #9

Djeck

Спасибо, что вы написали - тот понял, а вот сам код пока трудно дается.
например команды непонятные(CMP BYTE PTR , SHR), значение А1..
Может со временем пойму, или надо что то читать?



Ранг: 129.0 (ветеран), 116thx
Активность: 0.060
Статус: Участник

Создано: 18 марта 2012 14:22
· Личное сообщение · #10

Contrafack пишет:
или надо что то читать?

Не только нужно читать, но и много читать.

-----
We do what we want because we can.




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 18 марта 2012 15:30
· Личное сообщение · #11

Contrafack пишет:
CMP BYTE PTR DS:[ESI],0

Сравнение числового значения байта по адресу, находящемуся в регистре ESI с нулем. Это прямая суть данной инструкции. Логически же это поиск конца строки языка Си (в Си признаком конца строки служит нуль-символ).

Djeck пишет:
SHR AX,8

Логический сдвиг вправо (сокращение от англ. Shift Right - сдвиг вправо). Тут надо понимать основы двоичной логики, тот факт, что число, например, 278 в привычной нам десятичной системе счисления равно числу 100010110 в двоичной системе счисления. Логический сдвиг вправо на 8 бит по сути "стирает" 8 цифр справа, т.е. получаем число 1 (как в двоичной системе счисления, так и в десятичной). Логический сдвиг вправо эквивалентен целочисленному делению на степень двойки, в данном случае 2^8=256. Делим - 278 / 256 = 1 (22 в остатке).
Опять же это прямая логика данной инструкции. В контексте исследуемого алгоритма это получение остатка от деления на 26 (это 0x1A в шестнадцатеричной системе счисления) в регистре EAX. Далее прибавляется код символа 'A' (шестнадцатеричное число 0x41). Остатки от деления имеют значения от 0 до 25. Итого, строка с серийным номером - строго литеры верхнего регистра английской алфавита.

Что рекомендую подучить: двоичная система счисления, двоичная логика, базовая архитектура процессора (буквально базовые и сегментные регистры), базовая арифметика (сложение, вычитание, деление, умножение на базовых регистрах). Читать для этого интеловские талмуды не рекомендую, может стошнить от объема теории и желание возвращаться к реверсу пропадет на долго. Программы можно ломать не понимая до конца ассемблер и даже не разбираясь в логике программы вообще (ну кроме отдельных маленьких кусков). В этом, собственно, и красота. А уже на более сложных задачах, требуется знать не только 90 - 100%% инструкций ассемблера, но и умение понимать их смысл не по отдельности, а как шагов одного алгоритма.

| Сообщение посчитали полезным: Contrafack, zeppe1in

Ранг: 8.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 19 марта 2012 00:43
· Личное сообщение · #12

перешел на 5-й Crackme

первый пунк сделал, нашел пароль и патчил, чтб любой пароль принимал.
но вот с вторым пунктом не получается, чтоб CD-ROM проверку отключить.
вот код оригинала:
Code:
  1. CPU Disasm
  2. Address   Hex dump          Command                                  Comments
  3. 0040144E     /74 02         JE SHORT 00401452
  4. 00401450     |EB 15         JMP SHORT 00401467
  5. 00401452  |> \6A 40         PUSH 40                                  ; Type = MB_OK|MB_ICONASTERISK|MB_DEFBUTTON1|MB_APPLMODAL
  6. 00401454  |.  68 88314000   PUSH OFFSET 00403188                     ; Caption = "CD Check"
  7. 00401459  |.  68 91314000   PUSH OFFSET 00403191                     ; Text = "CDROM found!"
  8. 0040145E  |.  6A 00         PUSH 0                                   ; hOwner = NULL
  9. 00401460  |.  E8 05030000   CALL <JMP.&USER32.MessageBoxA>           ; Jump to USER32.MessageBoxA
  10. 00401465  |.  EB 15         JMP SHORT 0040147C
  11. 00401467  |>  6A 30         PUSH 30                                  ; /Type = MB_OK|MB_ICONEXCLAMATION|MB_DEFBUTTON1|MB_APPLMODAL
  12. 00401469  |.  68 88314000   PUSH OFFSET 00403188                     ; |Caption = "CD Check"
  13. 0040146E  |.  68 9E314000   PUSH OFFSET 0040319E                     ; |Text = "CDROM Not found!"
  14. 00401473  |.  6A 00         PUSH 0                                   ; |hOwner = NULL
  15. 00401475  |.  E8 F0020000   CALL <JMP.&USER32.MessageBoxA>           ; \USER32.MessageBoxA
  16. 0040147A  |.  EB 00         JMP SHORT 0040147C
  17. 0040147C  |>  58            POP EAX
  18. 0040147D  |.  5B            POP EBX
  19. 0040147E  \.  C3            RETN

вроде очень прост:
на 0040144E идет проверка ZF если равно 1, то выдать, что CDROM found, а если нет, то перейти к 00401467.
я прописал так:
Code:
  1. 0040144E     /74 02         JMP SHORT 00401452
  2. 00401450     |EB 15         JMP SHORT 00401467
  3. 00401452  |> \6A 40         PUSH 40                                  ; Type = MB_OK|MB_ICONASTERISK|MB_DEFBUTTON1|MB_APPLMODAL
, но че то все равно выдает, что CDROM Not found
Попробовал даже строку 00401450 |EB 15 JMP SHORT 00401467 забивать NOP_ом, но тоже не помог...
на Crackme 2 или 3_м была такая задача, решил на ура, а тут что то не получается.

И еще - от чего зависит ZF=1 или 0 ? может патчить так, чтоб он всегда был 1 и выполнился переход на 00401452 ?



Ранг: 129.0 (ветеран), 116thx
Активность: 0.060
Статус: Участник

Создано: 19 марта 2012 01:07 · Поправил: verdizela
· Личное сообщение · #13

Попробуй поставить бряк по адресу
Code:
  1. 0040143C  |.  E8 6B030000    CALL <JMP.&KERNEL32.GetDriveTypeA>

затем дойди до этого места
Code:
  1. 00401449  |. /75 1C          JNZ SHORT CRACKME5.00401467

забей NOPами этот переход и будет всегда CDROM found.

-----
We do what we want because we can.


| Сообщение посчитали полезным: Contrafack

Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 19 марта 2012 01:14
· Личное сообщение · #14

Contrafack пишет:
CD-ROM проверку отключить.

http://w32api.narod.ru/functions/GetDriveType.html



Ранг: 8.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 19 марта 2012 01:31
· Личное сообщение · #15

verdizela
знал бы что такое БРЯК

А может заодно и обьяснить в чем прикол? что происходит по адресу 0040143C ?



Ранг: 129.0 (ветеран), 116thx
Активность: 0.060
Статус: Участник

Создано: 19 марта 2012 01:41 · Поправил: verdizela
· Личное сообщение · #16

Contrafack пишет:
знал бы что такое БРЯК

--> Link <--
Contrafack пишет:
А может заодно и обьяснить в чем прикол? что происходит по адресу 0040143C ?

SReg пишет:
http://w32api.narod.ru/functions/GetDriveType.html

И ко всему этому я так понял, что нужно еще разъяснить, что такое NOP
NOP

-----
We do what we want because we can.




Ранг: 8.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 19 марта 2012 02:12
· Личное сообщение · #17

Спасибо, просто я не обратил на то, что ДО 00401450 есть еще условие перехода на 00401467

ну ипо поводу GetDriveType почитал. получается мы его отключили, да?
хотя так и не понял как он проверят, если в реале проверяет, то у меня есть CD-ROM, должен определить, а если там какой то механим, то вот это не понял уже.. ну ладно, может со временем пойму..
спасибо и на это



Ранг: 58.1 (постоянный), 42thx
Активность: 0.060.01
Статус: Участник

Создано: 19 марта 2012 02:13
· Личное сообщение · #18

А можно --> посмотреть <-- какие значения возвращает GetDriveTypeA и от этого плясать



Ранг: 58.1 (постоянный), 42thx
Активность: 0.060.01
Статус: Участник

Создано: 19 марта 2012 02:20 · Поправил: hlmadip
· Личное сообщение · #19

Contrafack пишет:
хотя так и не понял как он проверят, если в реале проверяет, то у меня есть CD-ROM, должен определить, а если там какой то механим, то вот это не понял уже.. ну ладно, может со временем пойму..

lpRootPathName [in, optional]
The root directory for the drive.
A trailing backslash is required. If this parameter is NULL, the function uses the root of the current directory.
.text:0040143A push 0 ; lpRootPathName <-задаём параметр pRootPathName = 0
.text:0040143C call GetDriveTypeA




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 19 марта 2012 11:01
· Личное сообщение · #20

Ребята, помогать человеку - доброе дело делать, но сдается мне, что толку было бы больше от прочтения тс хотя бы первых 10-12 глав Нарвахи, а затем просмотра (опять же порядка 10) видеков от Лены.
З.ы. Уж очень больно примитивными показались некоторые вопросы тс.

-----
ds


| Сообщение посчитали полезным: verdizela, neomant, sivorog

Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 19 марта 2012 11:09
· Личное сообщение · #21

При условии что все эти крякми давно разобраны на всех языках мира.



Ранг: 8.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 19 марта 2012 13:56
· Личное сообщение · #22

DimitarSerg

а что за Нарвахи? книгда про ассемблера?



Ранг: 58.1 (постоянный), 42thx
Активность: 0.060.01
Статус: Участник

Создано: 19 марта 2012 14:16
· Личное сообщение · #23

Contrafack пишет:
а что за Нарвахи

--> Link <--

| Сообщение посчитали полезным: Contrafack

Ранг: 8.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 19 марта 2012 14:24
· Личное сообщение · #24

hlmadip

Спасибо, буду читать параллельно.



Ранг: 25.7 (посетитель), 4thx
Активность: 0.030
Статус: Участник

Создано: 16 июня 2013 14:48
· Личное сообщение · #25

может кто помнит как назывался крякми, где надо было на панели меню в Help сделать активным пункт Secret?



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 16 июня 2013 17:38
· Личное сообщение · #26

g3r0n1m0
в аттаче

de4f_16.06.2013_EXELAB.rU.tgz - Project2.rar

| Сообщение посчитали полезным: MasterSoft, nick8606, g3r0n1m0

Ранг: 25.7 (посетитель), 4thx
Активность: 0.030
Статус: Участник

Создано: 16 июня 2013 19:09 · Поправил: g3r0n1m0
· Личное сообщение · #27

SReg вот я затупил )) действительно, проще было самому написать.



Ранг: 10.4 (новичок), 12thx
Активность: 0.030
Статус: Участник

Создано: 18 июня 2013 09:19 · Поправил: dfnsff
· Личное сообщение · #28

Решил покрякать эти крекми, штуки 3 ломанул без проблем(какие-то простые оказались).но один чёт я вообще непойму как ломануть - крякми Hard Protect by Alexey Solodovnikov. Может кто-нибудь подскажет как брякнуться на функцию обработки введённого пароля(в гайде то конечно всё прочитать можно и поставить мемори брейк, но интересен сам смысл этого): в крякми гайд нам сообщает что нужно поставить "bpx hmemcpy" - в олли конечно такого нет(POINT H не предлагать, не работает, ещё я использовал API Monitor 2 таки не нашёл никакого API на который можно былобы брякнуться).?? и ещё там пишут "Потратив неспешно! часа 3... готов поставить уровень крякмиса." - это относится к определению уровня крякми или автор гайда ломал 3 часа, а то я 3 часа только читал наваху про бряки((




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 18 июня 2013 11:20
· Личное сообщение · #29

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

63b4_18.06.2013_EXELAB.rU.tgz - (Описалово).pdf

-----
Stuck to the plan, always think that we would stand up, never ran.


| Сообщение посчитали полезным: dfnsff


Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 18 июня 2013 11:25
· Личное сообщение · #30

ARCHANGEL если уж на то пошло, то натравить EMS Source Rescuer хотя бы на дамп, нэ?

-----
[nice coder and reverser]



. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› Обсуждение Crackme
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати