Правила Форума редакция от 22.06.2020 |
|
|
|
|
|
Опции темы | Опции просмотра | Language |
09.09.2005, 02:10 | #1 |
Вопросы по Assembler/Dizassembler и взлому...
В данном разделе будем разбирать сам ассемблер, способы дизасемблирования и взлома, приемы защит от отладчиков, дизассемблеров и др...
__________________
Все великие люди мало жили. Вот и мне что-то нездоровится... Последний раз редактировалось ErrorMs; 09.09.2005 в 02:11.. |
|
Реклама: | театр луна билеты | концерт иванушек в москве 30 | med ( utr ) 90-50 fkr h13 | глубокий шугаринг | Супермаркет техники KNSneva.ru - aspire 7 - доставкой по Санкт-Петербургу и СЗАО |
09.09.2005, 15:23 | #2 |
Ответ: Вопросы по Assembler/Dizassembler и взлому...
Ломаем компоненты Delphi.
Самая распространенная защита компонент связана с проверкой в памяти работающей IDE. Следовательно либо нужно эмулировать IDE либо перешагнуть через проверку IDE. Информацию для размышления я дал. Поэтому не стесняемся, высказываем свои идеи, задаем вопросы. Позже выскажу свои варианты. :xe
__________________
Все великие люди мало жили. Вот и мне что-то нездоровится... |
|
09.09.2005, 15:29 | #3 |
Гость
Сообщений: n/a
|
Re: Вопросы по Assembler/Dizassembler и взлому...
а что если удалить проверку памяти :7:
|
09.09.2005, 15:42 | #4 |
Ответ: Вопросы по Assembler/Dizassembler и взлому...
Поясни, что ты под вырубанием памяти подразумеваешь?
__________________
Все великие люди мало жили. Вот и мне что-то нездоровится... |
|
24.09.2005, 23:36 | #5 |
Ответ: Вопросы по Assembler/Dizassembler и взлому...
Взлом WinRar 3.0 !
Для осуществления взлома потребуется только отладчик SoftIce, но позже понадобится и шестнадцатиричный редактор (WinHEX) и Delphi. Допустим, вы запустили WinRAR 3.0, увидели всё то же окошко и задумались какой же ставить брэйкпойнт? Попробуем… засечём время. Раз триальный срок 40 дней – значит ставим брэйк в SoftIce: :bpx GetLocalTime Имеется надпись - "незарегистрированная версия" в заголовке окна - проверяем :bpx SetWindowTextA Теперь, как сделает программист: Сначала поставит "незарегистрированная версия" в заголовке окна, а потом узнает время - вряд ли, что подтверждается на практике. Попробуем, насколько "солёненький" WinRAR нам попался - запускаем его. 004367B3 - здесь у нас GetLocalTime; 0043FA27 - а здесь SetWindowTextA; Скорее всего между этими двумя адресами и будет вычисление "зарегистрированности" версии. Сразу после 004367B3 идёт вызов какой-то процедуры, которая возвращает результат в AL в виде 0 или 1, а затем значение AL закидывается в некоторый адрес памяти. Поглядев внимательно внутрь этой процедуры, видим, что она начинает проверять файл RARReg.Key (его нужно положить в папку с WinRar 3.0 можно с старых версий), знаем, что в принципе она должна как-то возвратить значение AL не 0, а 1, но идем дальше. AL закидывается в некоторый адрес памяти - заменяем AL перед этим и "отпустил" программу на выполнение, программа загрузилась как "незарегистрированная", но когда она прервалась по SetWindowTextA при создании НАГ-окна видим тот адрес памяти, где должна была быть 1 и увидел там 0 и ставим брэйкпойнт на память и посмотреть, что программа всё-таки делает с этой переменной ? :bpm 48dd1c rw За всё количество прерываний по этому брэйку, два раза меняем значение по этому адресу (48dd1c) с 0 на 1 (команда :eb - для тех, кто не знает) и увидел на экране зарегистрированную версию WinRAR 3.0 beta 4 Rus. Посмотрим, где же в память записывается 0, в какой процедуре ? - а в той же, что и в первом случае, значит просто находим место в ней где сделаем, чтобы в AL ВСЕГДА возвращалось значение 1 и будем писать крэк для WinRAR 3.0 beta 4 Rus. Как оказалось технология та же и для WinRAR 3.0 Full, по этому же принципу можно будет создать кряк и для WinRAR 3.1, 3.2 и может 3.3… Вот вам ещё исходники патчера для WinRAR 3.00 Full (между прочим для минимизации размера написаны на Delphi без использования VCL, то есть на WinAPI): //--------------PATCHER.DPR---------------- Program Patch; Uses windows,messages, shellapi; const ar : array[1..6] of byte = ($e8,$bd,$07,$00,$00,$58); ar2 : array[1..6] of byte = ($b8,$01,$00,$00,$00,$90); var msg: tmsg; win: hwnd; bol: boolean; i,b: byte; f: file of byte; {$R API.RES} Procedure CreateReg; var f1:textfile; str:lptstr; begin Assignfile(f1,'RarReg.b_g'); rewrite(f1); Writeln(f1, 'RAR registration data'); Writeln(f1, 'ErrorMs'); Writeln(f1, 'Advanced GOD Pro version'); Writeln(f1, 'UID=fd402b81950501fbd1a1'); Writeln(f1, '6412212250d1a118e384ae1996cdea4f90d100b3dcd53ea5f a77c2'); Writeln(f1, 'a2a9458b4636334c81d46035c6ab9048e2c5c62f0238f183d 28519'); Writeln(f1, 'aa87488bf38f5b634cf28190bdf438ac593b1857cdb55a7fc b0eb0'); Writeln(f1, 'c3e4c2736090b3dfa45384e18e9de05c5860c0cbfb4a4cbbe 9549e'); Writeln(f1, 'b4ca3bc23f80d0cde2d91ba211839f05b0a5de11631072687 e814d'); Writeln(f1, 'd0fa0ace9439b90564d3ba7de5413d0824487a50f64e6ea36 0c858'); Writeln(f1, 'ee31cdacb655824a7a443ec0da598dfb6e79f305d8bf42605 23534'); closefile(f1); end; Function SettingsDlgProc(Window : hWnd; Msg,WParam,LParam : Integer): Integer; StdCall; Var S : String; Begin Result := 0; Case Msg of wm_InitDialog : Begin Result := 0; End; wm_Command : Begin case LoWord(WParam) of 50: begin AssignFile(f,'winrar.exe'); {$i-} Reset(f); {$i+} If IoResult <> 0 then Messagebox(Win,'An error ocured while opening file','Error',MB_OK) else begin If Filesize(f) = 752640 then begin Seek(f,$B26A); bol := true; for i:=1 to 6 do begin Read(f,b); If b <> ar[i] then bol := false; end; if bol then begin Seek(f,$B26A); for i:=1 to 6 do Write(f,ar2[i]); Closefile(f); CreateReg; Messagebox(win,'Patched succesfully','Congratulation',MB_OK); end else Messagebox(win,'An error ocured while patching','Error',MB_OK); end else Messagebox(win,'Wrong file size','Error',MB_OK); end; end; 51: DestroyWindow(Win); 53: Messagebox(Win,PChar('Автор крэка: Bad_guy'+#13#10+'Выпущен: 25.07.02'+#13#10+'Ограничения: вы не сможете использовать "электронную подпись"'+#13#10+'Адрес программы: http://cracklab.narod.ru/dload/wrar300full.zip'),'About',MB_OK); 54: ShellExecute(win,'open',PChar('http://cracklab.narod.ru/'),nil,nil,SW_MAXIMIZE); end; end; wm_Close : DestroyWindow(Win); wm_Destroy : PostQuitMessage(0); else Result := 0; end; end; Procedure RunSettings; Var Result : Integer; Begin Win := CreateDialog(hInstance,PCHar(101),0,@SettingsDlgPr oc); Showwindow(Win,SW_SHOW); Updatewindow(Win); End; begin RunSettings; While GetMessage(Msg,0,0,0) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; end. //---------END OF PATCHER.DPR------------- //-------------API.RC--------------------- 101 DIALOG 0, 0, 266, 95 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUPWINDOW | WS_DLGFRAME CAPTION "WinRAR 3.00 Rus Patch by Bad_guy" FONT 8, "MS Sans Serif" { DEFPUSHBUTTON "Patch", 50, 13, 73, 59, 14 PUSHBUTTON "Cancel", 51, 188, 73, 65, 14 CTEXT "[-== Bad_guy ==-] \n Remove 40-day limit and NAG-screen \n i'm a genius, you are a shit", 100, 13, 42, 240, 27, SS_SUNKEN CONTROL 101, -1, "STATIC", SS_BITMAP | SS_CENTERIMAGE | SS_REALSIZEIMAGE | SS_SUNKEN, 13, 8, 240, 30 PUSHBUTTON "About", 53, 75, 73, 50, 14 PUSHBUTTON "Our Website", 54, 130, 73, 54, 14 } //-----------END OF API.RC---------------
__________________
Все великие люди мало жили. Вот и мне что-то нездоровится... Последний раз редактировалось ErrorMs; 24.09.2005 в 23:38.. |
|
Эти 3 пользователя(ей) сказали cпасибо за это полезное сообщение: |
09.10.2005, 11:00 | #6 |
Ответ: Вопросы по Assembler/Dizassembler и взлому...
Ладно, вижу дальше движения небудет.
Возвращаясь к вопросу о взломе компонент: Открываем Hex редактор, ищем сообщение, которое выдается при запуске приложения ( Если использовать Busines или Dynamic Skin Form вылетает окно предупреждения: "Sorry ..." ), переходим в режим Decode, подымаемся выше от места, где нашли фразу, и мы ВСЕГДА должны видеть два jne? а если посмотреть выше то мы увидем je, много штук, так вот нам надо исправить jne на jmp? и компонента будет считать, всегда, что у нас запущен IDE. И сегодня меня осенило. Для проверки запущеного IDE код проверяет наличие в памяти TAppBuilder. Можно ведь его просто встроить в программу, и при загрузке программы должно пойти так как надо... :xe
__________________
Все великие люди мало жили. Вот и мне что-то нездоровится... |
|
19.11.2005, 02:29 | #7 |
Постоялец
Пол: Регистрация: 19.11.2005
Адрес: Арзамас
Сообщений: 416
Репутация: 122
|
Давайте здесь исходники элементарных програм выкладывать, plz?
Хочу скомпилировать screensaver, простой, чтоб bmp на фул экран выводил, в языках нешарю вообще, просто есть билдер и есть тасм, интерееснее на TASM, было бы Вот мой примерчик шатдауна ), но что-то он не работает... ;tasm.exe /m /ml shutdown.asm ;tlink32.exe /Tpe /aa /x shutdown.obj .386 .model flat .const includelib import32.lib extrn ExitProcess:near extrn ShellExecuteA:near A db "%SystemRoot%\system32\shutdown.exe -r" .code _start: xor ebx,ebx push ebx push ebx push ebx push offset A push ebx push ebx call ShellExecuteA push ebx end _start Смотри внимательнее при создании новых тем. Последний раз редактировалось ErrorMs; 19.11.2005 в 05:47.. |
20.11.2005, 16:39 | #8 | |||||||||||||||||||||||
Постоялец
Пол: Регистрация: 19.11.2005
Адрес: Арзамас
Сообщений: 416
Репутация: 122
|
Re: Вопросы по Assembler/Dizassembler и взлому...
Ok! а по сабжу что? есть програмулька scr на tasm? пожалуйстаа! Добавлено через 2 минуты 0 секунд очень хотца идею одну вдохновить... |
|||||||||||||||||||||||
22.11.2005, 08:39 | #9 |
Re: Вопросы по Assembler/Dizassembler и взлому...
Исходник скреена для DN. Для Windows есть, но только на Delphi. Если потерпишь, выложу Doc по составления screen. (Тогда напиши в личку).
;************************************************* ************************ ; ; Dos Navigator II Screen Saver source ; (C)opyright 1995 Andy Zabolotny ; ; This source is freeware and licenced only for non-commercial use ; ;************************************************* ************************ .model tiny .code .386 org 100h locals @@ jumps WaveW equ 320 WaveH equ 100 WaveAddr equ (320-WaveW)/2 Start: call InitChanges mov al,es:[449h] mov LastMode,al call InitVideo push ds pop es mov cx,WaveW * WaveH * 2 / 4 + 1 xor eax,eax mov di,offset WaveImage1 rep stosd mov ax,0A000h mov es,ax @@waveLoop: mov si,Wave1 add si,WaveW - 1 mov di,Wave2 inc di ;mov ebx,[si-WaveW] mov ecx,[si] mov edx,[si+WaveW] mov bl,0 add si,4 mov bp,WaveW * (WaveH - 2) @@waveLine: ;mov al,[si-WaveW] ;shrd ebx,eax,8 mov al,[si] shrd ecx,eax,8 mov al,[si+WaveW] shrd edx,eax,8 inc si shld eax,ecx,16 add al,cl setc ah add al,ch adc ah,0 add al,dh adc ah,0 ror ax,2 test al,al jz @@put test cl,1 setnz ah sub al,ah @@put: mov [di],al inc di dec bp jnz @@waveLine mov cx,WaveW mov dx,randSeed @@MakeSeed: add bx,05EDAh xor bx,dx add dx,0E34Ah mov dl,bh add dh,bl adc dl,al add bx,dx rol bx,3 mov al,bl and al,07Fh mov [di],al inc di loop @@MakeSeed mov randSeed,dx mov si,Wave1 xchg si,Wave2 mov Wave1,si add si,WaveW mov di,WaveAddr+320 mov dx,WaveH-2-2 @@refresh0: mov cx,WaveW/4 rep movsd add di,(320 - WaveW) dec dx jne @@refresh0 call Pause call CheckChanges jnc @@WaveLoop mov ax,0C0Bh int 21h ; Clear keyboard mov ah,0 mov al,LastMode int 10h int 20h InitVideo proc near mov ax,13h int 10h mov dx,CRTstatus sub dl,6 mov ax,0309h out dx,ax mov dx,03C8h mov al,0 out dx,al inc dx mov si,offset PalData mov cl,nPalColors @@makePal: mov ch,32 @@makeRamp: mov di,3 xor bx,bx @@makeRGB: mov al,32 sub al,ch mov ah,[si+bx+3] sub ah,[si+bx] imul ah sar ax,5 add al,[si+bx] out dx,al inc bx dec di jne @@makeRGB dec ch jne @@makeRamp add si,6 dec cl jne @@makePal ret InitVideo endp include mTask.inc include az_ss.inc randSeed dw ? LastMode db 0 PalData db 00,00,00, 24,00,00 db 25,01,00, 48,32,08 db 50,33,08, 63,63,63 nPalColors equ ($ - PalData)/6 Wave1 dw offset WaveImage1 ;offset WaveImage1 Wave2 dw offset WaveImage2 ;offset WaveImage2 WaveImage1 db WaveW * WaveH dup (?) WaveImage2 db WaveW * WaveH dup (?) end Start Может понадобится для компиляции: InitChanges proc near call DetectMultiTask xor bx,bx xor cx,cx xor dx,dx mov ax,3 int 33h mov Int33_BX,bx mov Int33_CX,cx mov Int33_DX,dx xor ax,ax mov es,ax mov ax,es:[417h] mov LastShift,ax mov ax,es:[463h] add al,6 mov CRTstatus,ax ret InitChanges endp CheckChanges proc near xor bx,bx xor cx,cx xor dx,dx mov ax,3 int 33h cmp bx,Int33_BX jne @@End cmp cx,Int33_CX jne @@End cmp dx,Int33_DX jne @@End push es xor ax,ax mov es,ax mov ax,es:[417h] pop es cmp LastShift,ax jne @@End mov ah,1 int 16h jnz @@End clc ret @@End: stc ret CheckChanges endp Pause proc near cmp mTaskSystem,mtNothing jne @@multiTask mov cx,4 mov dx,CRTstatus @@W4R1: in al,dx test al,8 jne @@W4R1 @@W4R2: in al,dx test al,8 je @@W4R2 loop @@W4R1 jmp @@locEx @@multiTask: push es xor ax,ax mov es,ax mov bx,es:[46Ch] @@skipSlice: call GiveUpTimeSlice cmp bx,es:[46Ch] je @@skipSlice pop es @@locEx: ret Pause endp CRTstatus dw ? LastShift dw ? Int33_BX dw ? Int33_CX dw ? Int33_DX dw ?
__________________
Все великие люди мало жили. Вот и мне что-то нездоровится... |
|
23.11.2005, 02:29 | #10 |
Постоялец
Пол: Регистрация: 19.11.2005
Адрес: Арзамас
Сообщений: 416
Репутация: 122
|
Re: Вопросы по Assembler/Dizassembler и взлому...
ErrorMs, спасибо друг! На Delphi я нашёл. Хотел сделать scr из BSOD, думал никому это ещё не приходило на ум, однако вчера увидел SysInternals Bluescreen.scr, и так обломался
хотя занятно вообще, как BSOD сохранить в bmp на одном компе, я всётаки хочу сам тоже нарулить, люблю TASM и C++ ...(Builder), хотелось бы уметь хоть какие-то бирюльки делать самому, на большее непотяну |
13.12.2005, 20:49 | #11 |
Постоялец
Пол: Регистрация: 19.11.2005
Адрес: Арзамас
Сообщений: 416
Репутация: 122
|
По взлому накопилось вопросов
1.Имеются три файла zzz.exe; zzz.dll; zzz.sys, как это работает в windows? особенно загадачным для меня является sys и именно когда он загружается в память кто проверяет его crc - Windows? EXE? или он сам себя? Отсюда ещё вопрос, а где в файле CRC находится, возможно ли её переписывать кому как нравится? 2.Кто имеет доступ к реестру, например какой-то SYSTEM имеет доступ более чем Администратор, а я так практически вообще гость на своём же ПК? Есть ли способы cmd.exe-комманда *.reg-file или *.INF-установка разрешения доступа, например, сюда HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\R oot\SYSTEM, чтобы не лезть в regedit.exe и не ставить там галочки, каждый раз когда надо какойнибудь драйвер зарегить? (-:SYSTEM-то не пользует regedit.exe 3.Ещё раз об zzz.exe; zzz.dll; zzz.sys, если есть такая связка, sys зарегистрирован как services-служба winxp, ну DLL-понятно что-то несёт в себе, но нельзя ли избавиться от zzz.exe? который как я понимаю только иницирует процесс загрузки DLL в память, а потом торчит в трее как ненужный елемент. Бывает ли "exe" лишним\заменяемым? 4.Как достаточно UNпакеров , чтоб открыть современные exeшки, наверное кроме паковки бывает способ намеренной ошибки кода, чтоб нечем уже не распаковалось, что-то я когда-то слышал вроде... как убедится что файл сжат и чем? З.Ы. А где находятся функции выравнивания окон -> right-click над taskbar/quicklunch -> "окна слева направо" и т.д. и т.п. ?? Хочу снести дефолтный эксплорер, но без этих штучек жить трудно, ровнять окна руками геморно и неэстетично, всёравно криво станет. Много из реестра народу известно и из comandline, а этого нигде невстречал, helpmeplz!? |
15.12.2005, 11:48 | #12 | ||||||||||||||||||||||||||||||||||||||||||||||
Re: Вопросы по Assembler/Dizassembler и взлому...
Как сразу много вопросов...:7: Попробую проще Exe - запускаемый файл, dll - используется Windows и приложениями, sys - системой. Crc - есть на секторном уровне, есть на файле целиком. "например какой-то SYSTEM " - это не с той оперы (в томсмысле читай про сервисы) " Есть ли способы cmd.exe-комманда *.reg-file или *.INF-установка разрешения доступа, например, сюда HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\R oot\SYSTEM, чтобы не лезть в regedit.exe и не ставить там галочки, каждый раз когда надо какойнибудь драйвер зарегить? (-:SYSTEM-то не пользует regedit.exe " - сам понял что написал? ".Ещё раз об zzz.exe; zzz.dll; zzz.sys, если есть такая связка, sys зарегистрирован как services-служба winxp, ну DLL-понятно что-то несёт в себе, но нельзя ли избавиться от zzz.exe? который как я понимаю только иницирует процесс загрузки DLL в память, а потом торчит в трее как ненужный елемент. Бывает ли "exe" лишним\заменяемым? " - это опять к сервисам.
Это к API. А вообще ты задеваешь такие темы, которые несколькими томами не освятить...:xe наверное.
__________________
Все великие люди мало жили. Вот и мне что-то нездоровится... |
|||||||||||||||||||||||||||||||||||||||||||||||
15.12.2005, 23:23 | #13 |
Постоялец
Пол: Регистрация: 19.11.2005
Адрес: Арзамас
Сообщений: 416
Репутация: 122
|
Re: Вопросы по Assembler/Dizassembler и взлому...
" Есть ли способы ~ разрешения доступа, например, сюда HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\R oot\SYSTEM, ~ regedit.exe " - сам понял что написал?"
Вот это особенно интересно и видимо ответ неизвесен, есть только один способ открыть regedit -> кликнуть правой и выбрать разрешения для всех на нужном разделе, так все и делают, но виндоус же пишет туда без всякого разрешения. Причём если доступ изменить это где-то должно сохранятся, я делал снимки из Regsnap так и не просёк где это фиксится, такое впечатление, что весь этот механизм Администрирования вне реестра :7: ... Добавлено через 8 минут ErrorMs, спасиба! хоть в общих чертах.. Exe - запускаемый файл, то есть он загружает DLL и кое что возможно из своего тела, но впринципе DLL может так же и служба загрузить?... или Rundll32.exe наверное... |
16.12.2005, 08:59 | #14 | |||||||||||||||||||||||
Re: Вопросы по Assembler/Dizassembler и взлому...
Если сам ничего не путаю, то да. dll может запускаться как сервис.
__________________
Все великие люди мало жили. Вот и мне что-то нездоровится... |
||||||||||||||||||||||||
02.02.2006, 09:35 | #15 |
Неактивный пользователь
Пол: Регистрация: 01.02.2006
Сообщений: 5
Репутация: 0
|
Программные средства анализа исходного кода
Здравствуйте!
Стокнулся с проблемой утечки памяти в С++ проекте. Проект писал не я и давно. Проект большой. Какие программные продукты могут оказать мне помощь в поиске некорректного участка кода? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
FAQ по взлому почты. | WeNZeeR | Хакинг в глобальной сети WWW | 53 | 07.03.2011 17:09 |
Assembler & C# | areostar | .NET | 8 | 05.11.2009 20:47 |
Видео урок по взлому | igorini1981 | Хакинг в глобальной сети WWW | 0 | 12.03.2009 21:35 |
assembler... | Roof | UNIX, Linux, MacOs для PC и другие ОС | 10 | 26.08.2007 19:39 |
|
|