Сейчас на форуме: tyns777 (+4 невидимых)

 eXeL@B —› Программирование —› к теме о "Лоадер на Delphi "
Посл.ответ Сообщение

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

Создано: 21 июля 2010 10:32
· Личное сообщение · #1

TrueLies, спс, но он не патчит пакованные проги
Hellspawn, не беспокойся, поиском пользоватся умею. еслиб нашол что ищю, не спрашивал.

просто спешил и не описал всю задачу

задача такова.
есть упаковнный exe, у которого oep jmp на call ExitProccess. Мне нужно этот jmp изменить на jmp оригенал OEP.



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

Создано: 21 июля 2010 11:26
· Личное сообщение · #2

Ну дык пропатч сам ExitProccess на
PUSH OEP
RET
после чего поставь в лоадере задержку, например Sleep,1000. И восстанови оригинальные байты в ExitProcess.
имхо самый простой вариант.




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

Создано: 21 июля 2010 11:39
· Личное сообщение · #3

что уже сделано? или нужно всё за тебя сделать

-----
[nice coder and reverser]




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

Создано: 21 июля 2010 11:40
· Личное сообщение · #4

Vovan666 пишет:
Ну дык пропатч сам ExitProccess наPUSH OEPRET


что пропатчить я знаю, дело в том что патчить не хочет.
на распакованной проге работает, на упакованной не хочет.



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

Создано: 21 июля 2010 12:08
· Личное сообщение · #5

код:

procedure TForm1.Button2Click(Sender: TObject);
var
newoep : array[0..2] of byte = ($e4,$ff,$36);
NewDataSize : DWORD;
Bytesread : DWORD;
Oldd : byte;
hProcess: DWORD;
ThreadId:integer;
si : Startupinfo;
pi : Process_Information;
begin
IF CreateProcess('main.exe',nil,nil,nil,FALSE, Create_Suspended,nil,nil,si,pi) then
begin
ThreadId := GetWindowThreadProcessId(0, @hProcess);
OpenProcess(PROCESS_ALL_ACCESS, FALSE, hProcess);
ReadProcessMemory(hprocess,Pointer($083453b6),@oldd,1,bytesread);
if oldd = $D3 then
begin
NewDataSize := sizeof(newoep);
WriteProcessMemory(hProcess, Pointer($4e4ed4), @Newoep, NewDataSize, bytesread);
end
else
Messagebox(0,pchar('Bytes not found! Wrong version?...'),pchar('Error'),mb_iconinformation);
TerminateProcess(hProcess,0);
end;end;



Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 21 июля 2010 12:24
· Личное сообщение · #6

FockuS
while oldd <> $D3 do
begin
ReadProcessMemory(hprocess,Pointer($083453b6),@oldd,1,bytesread);
sleep(100);
end;



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

Создано: 21 июля 2010 12:47
· Личное сообщение · #7

yanus0 пишет:
yanus0

чето не въеду куда это впихнуть (



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

Создано: 21 июля 2010 14:44
· Личное сообщение · #8

FockuS


e0d2_21.07.2010_CRACKLAB.rU.tgz - Project1.rar



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

Создано: 21 июля 2010 15:07
· Личное сообщение · #9

SReg пишет:
Project1.rar
спс. я видел пример --> Memory Patcher для ASProtect <--
только результата нету



Ранг: 14.2 (новичок), 6thx
Активность: 0.010
Статус: Участник

Создано: 21 июля 2010 16:01
· Личное сообщение · #10

FockuS пишет:
только результата нету

Что это означает? Программа вылетает с ошибкой, лоадер выдаёт ошибку или что?
Сначала определись каким путём ты собираешься патчить.
Как посоветовал Vovan666, пропачтить саму API функцию?
Тогда первым делом нужно установить атрибут RWE странице памяти, где расположена апишка.
Это можно сделать с помощью VirtualProtect.
Или же ты хочешь пропатчить саму точку входа?
В любом случае лучше выложить экзэшник который хочешь сломать.
И аттач глянь - исходники моего лоадера для одной проги, пригодится, если будешь патчить по второму способу.



35bf_21.07.2010_CRACKLAB.rU.tgz - loader.7z




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 21 июля 2010 16:07 · Поправил: Isaev
· Личное сообщение · #11

FockuS пишет:
чето не въеду куда это впихнуть

там только в одно место можно вставить
это видно даже если не писал того кода
может рано писать лоадеры?

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

перепиши его на Delphi и поймёшь что переписать можно всё, вопрос только какими средствами
а вопросы возникают чаще не из-за компилятора, а из-за опыта работы с ним

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 21 июля 2010 16:29
· Личное сообщение · #12

Isaev
Я уже давно написал свой загрузчик, альтернативы которому нет. И демагогии тут нет, на нём просто нельзя нормальный код скомпилить. Иначе у ТС и вопросов не было.



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

Создано: 21 июля 2010 17:13
· Личное сообщение · #13

klam
работает но только на распакованной проге но после добавления
suspendthread(pi.hThread); после
IF CreateProcess(nil,'filename.exe',nil,nil,FALSE,0,nil,nil,si,pi) = true then
begin

задача:
Есть filename.exe у которого oep jmp на call ExitProccess. Мне нужно этот jmp изменить на jmp оригенал OEP.

если прога не упакована, все варианты работают. а вот после упаковки ......



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 21 июля 2010 17:17
· Личное сообщение · #14

ну дык если у тебя прога упакована, и вместо прыжка на OEP выполняется прыжок на ExitProcess - то лоадером ты ничего не сделаешь.
юзай DebugApi (говоря по-русски - пиши свой маленький отладчик)



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

Создано: 21 июля 2010 17:28
· Личное сообщение · #15

tihiy_grom пишет:
юзай DebugAp


а пример есть ?



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 21 июля 2010 17:29
· Личное сообщение · #16

в интернете полно



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

Создано: 21 июля 2010 19:53
· Личное сообщение · #17

tihiy_grom пишет:
в интернете полно

согласен, но с чего только начать то ??



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 21 июля 2010 20:35
· Личное сообщение · #18

млять ... с поиска в гугле надо начинать



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

Создано: 21 июля 2010 21:01
· Личное сообщение · #19

млять ...

сп всем за помощь


 eXeL@B —› Программирование —› к теме о "Лоадер на Delphi "
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати