ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

07.09.2008, 16:12
|
|
Постоянный
Регистрация: 19.10.2007
Сообщений: 794
Провел на форуме: 1013791
Репутация:
711
|
|
Код:
.text:00418EA4 mov edi, 0ADF89ED0h ; init
.text:00418EA9 mov eax, 0F158FDEAh
.text:00418EAE mov edx, 589485FCh
.text:00418EB3 mov ecx, 15898FCEh
.text:00418EB8 mov [esi+0DCh], edi
.text:00418EBE mov [esi+0ECh], edi
.text:00418EC4 mov [esi+0FCh], edi
.text:00418ECA mov [esi+0E8h], eax
.text:00418ED0 mov [esi+0F8h], eax
.text:00418ED6 mov [esi+108h], eax
.text:00418EDC pop edi
.text:00418EDD mov [esi+0E0h], edx
.text:00418EE3 mov [esi+0E4h], ecx
.text:00418EE9 mov [esi+0F0h], edx
.text:00418EEF mov [esi+0F4h], ecx
.text:00418EF5 mov [esi+100h], edx
.text:00418EFB mov [esi+104h], ecx
.text:00418F01 mov dword ptr [esi+10Ch], 0F53h
.text:00418F0B mov dword ptr [esi+110h], 0F52h
==================================================
.text:004188C6 mov dword ptr [esi], 0FC148ABh ; init
.text:004188CC mov dword ptr [edi], 1C1F87B0h ; init
==================================================
.text:0041CD4C mov edx, [eax+0E8h] ; edx=0A889F8A5h
.text:0041CD52 cmp edx, [eax+0E0h] ; [eax+0E0h]=0A889F8A5h
.text:0041CD58 jz short loc_41CD84
==================================================
.text:0040BA4A mov ecx, [eax+104h] ; ecx=1AEA103Bh
.text:0040BA50 cmp ecx, [eax+0FCh] ; [eax+0FCh]=1AEA103Bh
.text:0040BA56 jz short loc_40BA65
==================================================
.text:00406255 mov edx, [eax+0ECh] ; edx=162063EFh
.text:0040625B mov ecx, [eax+0F4h] ; ecx=162063EFh
.text:00406261 cmp ecx, edx
.text:00406263 setz dl
==================================================
.text:00405094 mov ecx, [eax+0F4h] ; ecx=162063EFh
.text:0040509A cmp ecx, [eax+0ECh] ; [eax+0ECh]=162063EFh
.text:004050A0 jz short loc_4050A4
==================================================
.text:00406305 mov edx, [eax+0E0h] ; edx=0A889F8A5h
.text:0040630B mov ecx, [eax+0E8h] ; ecx=0A889F8A5h
.text:00406311 cmp ecx, edx
.text:00406313 setz dl
Беглого осмотра достаточно чтобы понять что команды читающие значения crc - одинаковые. Поэтому можно их все найти поиском с помощью Olly.
Код:
.text:0041EB10 ; [0000000A BYTES: COLLAPSED FUNCTION SetCRCFlag01. PRESS KEYPAD "+" TO EXPAND]
.text:0041EB1A align 10h
.text:0041EB20 ; [0000000A BYTES: COLLAPSED FUNCTION SetCRCFlag04. PRESS KEYPAD "+" TO EXPAND]
.text:0041EB2A align 10h
.text:0041EB30 ; [0000000A BYTES: COLLAPSED FUNCTION SetCRCFlag03. PRESS KEYPAD "+" TO EXPAND]
Ну а тут все функции переименованы для наглядности. Каждая ставит флаг Bool: IsCrcValid; Далее флаги проверяются там сям при работе.
Ну вот как-то так.
|
|
|

07.09.2008, 18:18
|
|
Познающий
Регистрация: 02.09.2008
Сообщений: 38
Провел на форуме: 88361
Репутация:
0
|
|
2 fromRIDDER and 2 Everybody
в 3й остановке бряка написано
00419821 |> \FF15 CC424400 CALL DWORD PTR DS:[<&KERNEL32.CreateFile>; \CreateFileA
00419827 |. 8946 04 MOV DWORD PTR DS:[ESI+4],EAX
0041982A |. 8B4E 04 MOV ECX,DWORD PTR DS:[ESI+4]
0041982D |. 33C0 XOR EAX,EAX
-------------Stack Window------------------
0012F8DC 0012F914 щ. |FileName = "D:\Program Files\pro\regkey.dat"
0012F8E0 80000000 ...Ђ |Access = GENERIC_READ
0012F8E4 00000001 ... |ShareMode = FILE_SHARE_READ
0012F8E8 00000000 .... |pSecurity = NULL
0012F8EC 00000003 ... |Mode = OPEN_EXISTING
0012F8F0 00000020 ... |Attributes = ARCHIVE
0012F8F4 00000000 .... \hTemplateFile = NULL
-------------------------------------------------
потом я ставил мемори бряк на 00419827и 0041982A
и нечего не происходит,ставил бряк на еси+4 и тоже нечего,как попасть в функцию проверки? где именно ставить мемори бряк?
|
|
|

07.09.2008, 19:20
|
|
Новичок
Регистрация: 02.08.2008
Сообщений: 8
Провел на форуме: 8620
Репутация:
12
|
|
Почему брикпоинт на CreateFileA.
Функций открытия файла на так уж много, и все они в конечном счёте вызывают CreateFileW. Но если поставить бряк на него, то будет слишком много ложных остановок: функция используется не только для работы с файловой системой. Я всегда ставлю бряк на CreateFileA, а после остановки жму Alt+F9 (OllyDbg), какая бы функция не использовалась, почти всегда попадешь в пользовательский код.
На что ставить memory breakpoint.
После нужной остановки на бряке CreateFileA, ставишь бряк на ReadFile (или трейсишь до её использования). Когда остановишься: проверяешь по дескриптору из какого объекта происходит чтение; смотришь в аргументах указатель буфера, в который будет чтение; по какому смещению в объекте. Редко когда обработка прочитанных данных идёт сразу вслед за чтением, поэтому, чтобы не тратить время, ставим memory breakpoint на кусок памяти, куда прочитали. После срабатывания бряка анализируем ситуацию.
|
|
|

07.09.2008, 19:29
|
|
Новичок
Регистрация: 02.08.2008
Сообщений: 8
Провел на форуме: 8620
Репутация:
12
|
|
to neprovad
Всё не так сложно: сразу же после запуска программы, она создаёт crc файла на жёстком диске, сравнивает с оригинальным, дописанным в конец файла. Всё, больше проверок целостности экзешника нет.
|
|
|

08.09.2008, 20:21
|
|
Познающий
Регистрация: 02.09.2008
Сообщений: 38
Провел на форуме: 88361
Репутация:
0
|
|
2 fromRIDDER
Извены я новичок в этом деле,не могу понять как ставить бряк на мемори в олли,вот это место например где вызевается ReadFile
004198E5 |. FF15 C4424400 CALL DWORD PTR DS:[<&KERNEL32.ReadFile>] ; \ReadFile
004198EB |. 8B4424 08 MOV EAX,DWORD PTR SS:[ESP+8]
004198EF \. C2 0800 RETN 8
0012F8E8 00000128 (.. |hFile = 00000128 (window)
0012F8EC 01DF2A9A љ*Я |Buffer = 01DF2A9A
0012F8F0 0000000C .... |BytesToRead = C (12.)
0012F8F4 0012F904 щ. |pBytesRead = 0012F904
0012F8F8 00000000 .... \pOverlapped = NULL
0012F8FC 00418798 ?‡A. RETURN to HistoryK.00418798 from HistoryK.004198D0
как ставить бряк на буффер ?
что писать чтоб ставить бряк на мемори ?
если можно по подробнее,я только учусь
|
|
|

08.09.2008, 20:30
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
Сообщение от ProTeuS
0x0c0de неправа
А по-моему, как раз таки ответ на поставленный вопрос должен быть именно таким)
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

08.09.2008, 21:14
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
Сообщение от cryptX
2 fromRIDDER
Извены я новичок в этом деле,не могу понять как ставить бряк на мемори в олли,вот это место например где вызевается ReadFile
004198E5 |. FF15 C4424400 CALL DWORD PTR DS:[<&KERNEL32.ReadFile>] ; \ReadFile
004198EB |. 8B4424 08 MOV EAX,DWORD PTR SS:[ESP+8]
004198EF \. C2 0800 RETN 8
0012F8E8 00000128 (.. |hFile = 00000128 (window)
0012F8EC 01DF2A9A љ*Я |Buffer = 01DF2A9A
0012F8F0 0000000C .... |BytesToRead = C (12.)
0012F8F4 0012F904 щ. |pBytesRead = 0012F904
0012F8F8 00000000 .... \pOverlapped = NULL
0012F8FC 00418798 ?‡A. RETURN to HistoryK.00418798 from HistoryK.004198D0
как ставить бряк на буффер ?
что писать чтоб ставить бряк на мемори ?
если можно по подробнее,я только учусь
Folow in dump, адрес, где расположен буфер, а потом уже в окне дампа Breakpoint->Memory on access/write
|
|
|

09.09.2008, 06:03
|
|
Новичок
Регистрация: 02.08.2008
Сообщений: 8
Провел на форуме: 8620
Репутация:
12
|
|
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|