Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Завтра :

День славянской письменности и культуры


Помогите записать в память машинные команды
На страницу Пред.  1, 2

Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеСб, 20-Янв-2007 20:28 
Цитата

третий способ: написать самому очень похожий блокнот и заменить системный! (в двух местах).
помнится, когда мне нужно было сделать так чтобы при открытии отчёта блокнотом некоторые строки были не видны пользователю (надо было скрывать факт перерасхода))) ), тут мне посоветовали повозиться с NativeAPI c функциями типа Zw*, но тогда я не знал сплайсинга, и придумал этот метод)

_________________
Сила дурака в том, что умный перед ним бессилен.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ordep
Новичок


Возраст: 26
Знак зодиака: Водолей
Зарегистрирован: 18.01.2007
Сообщения: 16
Откуда: Новосибирс
СообщениеСб, 20-Янв-2007 20:40 
Цитата

И тут я подумал забавно, а оказалось за деньги...
Действительно, забавно, NikotiN, забавно будт мне написать новый Access кпримеру Вешалка
Кстате, я что-то слышал про NativAPI. это вроде как те же API, только на более низком уровне, что-то связанное с ntdll.dll, что-то невнятое и расплывчатое. Вобщем буду пытаться с ДЛЛ. ох и противное же это дело...
Но все равно спасибо, тут лыбые идеи важны, если появятся еще - пуляй, я срадостью ознакомлюсь.

Тоже самое касается и остальных...

_________________
Зараннее тащусь
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеСб, 20-Янв-2007 21:12 
Цитата

ещё идея )))
можно написать свой загрузчик, т.е. запускаешь ты аксекс, а на самом деле запускается твоя прога, которая запускает аксекс и патчит ему память.
имхо, самое удачное. что я сегодня придумал)))

_________________
Сила дурака в том, что умный перед ним бессилен.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ordep
Новичок


Возраст: 26
Знак зодиака: Водолей
Зарегистрирован: 18.01.2007
Сообщения: 16
Откуда: Новосибирс
СообщениеСб, 20-Янв-2007 21:19 
Цитата

А вот это уже очень даже реально осуществимо. Круто, нужно будет попробывать. Ведь н сколько я понял, если мояпрога запускает процесс, то он расценивается как дочерний и находится в том же адресном пространстве, что и загрузчик, что дает нам доступ и... о да! YES !!!
_________________
Зараннее тащусь
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеСб, 20-Янв-2007 21:26 
Цитата

а вот нифига и не в одном)
_________________
Сила дурака в том, что умный перед ним бессилен.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ordep
Новичок


Возраст: 26
Знак зодиака: Водолей
Зарегистрирован: 18.01.2007
Сообщения: 16
Откуда: Новосибирс
СообщениеСб, 20-Янв-2007 22:19 
Цитата

В таком случае, что же меняется?
_________________
Зараннее тащусь
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ktf
Администратор


Возраст: 32
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеВс, 21-Янв-2007 10:20 
Цитата

что меняется? - после запуска дочернего процесса у родительского остается дискриптор дочернего с полными правами. не надо получать никаких там отладочных привилегий, они уже есть.
и если ты в самом деле решишь так сделать, то я бы тебе посоветовал делать так: загрузчик запускает дочерний процесс в режиме Suspended (заморожен), внедряет в его адресное пространство dll-ку (которая выполняет замену кода внутри адресного пространства, которое для нее уже является "родным") и после того возобновляет дочерний процесс.

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ordep
Новичок


Возраст: 26
Знак зодиака: Водолей
Зарегистрирован: 18.01.2007
Сообщения: 16
Откуда: Новосибирс
СообщениеВс, 21-Янв-2007 12:42 
Цитата

Тема, Буду пробовать...
О резыльтатах отпишусь...

_________________
Зараннее тащусь
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж dogma
aka Достоевский


Возраст: 27
Знак зодиака: Телец
Зарегистрирован: 20.12.2004
Сообщения: 1702
Откуда: Холмск
СообщениеВс, 21-Янв-2007 14:15 
Цитата

Вот развели треп. Запись в память (и перехват функций тоже) уже обсуждался ранее. Пользуйтесь поиском господа :)
_________________
Bonum initium est dimidium facti
SQL-задачи (on-line)
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ordep
Новичок


Возраст: 26
Знак зодиака: Водолей
Зарегистрирован: 18.01.2007
Сообщения: 16
Откуда: Новосибирс
СообщениеВс, 21-Янв-2007 18:10 
Цитата

Especially for Dogma!
Треп мы не разводим т.к. Подобные вопросы не односторонни, и даже если они когдато обсуждались(в чем нт сомнений), то обсуждение проходило в конкретном контексте, В даннм случае мне нужно именно в моем, под мою ситуацию, с конкретным примером! А бесконечно ползать по форумам, собирая листинговую "мазайку" - просто терять время. Это как после прочтения даже самого подробного учебника, у нормального человека парочка, да возникнет вопросов.
Я думаю лучще: конкретный впрос - конкретный ответ! Экономится куча времени, да и парням на форуме не скучно...

Господа, продолжаем...
Я временно замешкался и результаты Никотиновской темы будут, думаю, завтра, вместе с новыми вопросами(естественно)...

_________________
Зараннее тащусь
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеВс, 21-Янв-2007 19:12 
Цитата

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

http://forum.thehack.ru/index.php?showtopic=238&hl=

_________________
Сила дурака в том, что умный перед ним бессилен.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж dogma
aka Достоевский


Возраст: 27
Знак зодиака: Телец
Зарегистрирован: 20.12.2004
Сообщения: 1702
Откуда: Холмск
СообщениеПн, 22-Янв-2007 3:17 
Цитата

to Ordep
Читай правила форума.

_________________
Bonum initium est dimidium facti
SQL-задачи (on-line)
В начало
Посмотреть профиль Отправить личное сообщение
ddd
Частый гость


Возраст: 23
Знак зодиака: Козерог
Зарегистрирован: 08.07.2006
Сообщения: 35

СообщениеПн, 12-Фев-2007 3:49 
Цитата

to Ordep
Да ну ты и лентяё если уж не захотел читать спец литературу, то прочиталбы хотябы книги про которые тебе Dr-passо сказал ну или на худой конец знаменитые статьи ms-rem’а на которые тебе тоже линк давали. Ну да ладно вот тебе практический код самый простой, что только можно себе представить

Код:

library XYK;


uses
  SysUtils,
  Windows,
  Classes;

{$R *.res}
type
fr_jmp=packed record
PuhsOp:byte;
PushArg:pointer;
RetOp:byte;
end;
var
Новый_Код:fr_jmp;
OldCrp:array[1..6]of byte;
bw:dword;
SysHook:HHook=0;
function NewMessageBox(Parent: HWnd; Txt, Caption: PChar; TextType: Word): Integer;export; stdcall;
begin
WriteProcessMemory(GetCurrentProcess,
GetProcAddress(GetModuleHandle('user32.dll'), 'MessageBoxA'),@OldCrp,6,bw);
result:=MessageBox(Parent,Txt,PChar('Перехвачена '+Caption),TextType);

//записываем новое начало CreateProcessA
WriteProcessMemory(GetCurrentProcess,GetProcAddress(GetModuleHandle('user32.dll'), 'MessageBoxA'), @Новый_Код, SizeOf(fr_jmp),bw);
end;
function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
begin
CallNextHookEx(SysHook, Code, wParam, lParam);//Передать сообщение другим ловушкам в системе
end;
procedure RunStopHook;export; stdcall;
begin
SysHook := SetWindowsHookEx(WH_CALLWNDPROCRET,@SysMsgProc, HInstance, 0);
end;

exports RunStopHook index 1;
begin
//сохраняем старое начало функции
ReadProcessMemory(GetCurrentProcess,GetProcAddress(GetModuleHandle('user32.dll'), 'MessageBoxA'),@OldCrp,6, bw);
Новый_Код.PuhsOp:=$68;
Новый_Код.PushArg:=@NewMessageBox;
Новый_Код.RetOp:=$C3;
//записываем новое начало CreateProcessA
WriteProcessMemory(GetCurrentProcess,GetProcAddress(GetModuleHandle('user32.dll'), 'MessageBoxA'), @Новый_Код, SizeOf(fr_jmp),bw);
end.



Код:

procedure RunStopHook(hand:dword);stdcall; external 'XYK.dll';
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
RunStopHook(Handle);


Работает он тоже проще не придумаешь в длл вызывается функция RunStopHook, которая ставит ловушку функцией SetWindowsHookEx при установки ловушки длл подключается ко всем процессам и выполняется код между begin и end в самом низу. Этот код и устанавливает ловушку ну там всё прокомментировано.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж TuXAPuK
Великий гонщик

Предупреждений : 1
Возраст: 26
Знак зодиака: Рыбы
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
СообщениеЧт, 22-Мар-2007 0:50 
Цитата

NikotiN писал(а):
имхо вполне реально, но опять же нужны привилегии debug, а вместо первых байтов функции пишешь jmp на то что нужно, dll же нужна только для подключения к процессу "того, что нужно", хотя можно и просто записать весь код функции, но тогда есть шанс потереть что-то важное)

я нашёл статьи хорошие:
http://www.wasm.ru/article.php?article=apihook_1
http://www.wasm.ru/article.php?article=apihook_2
http://www.wasm.ru/article.php?article=apihook_3


Спасибо за линки... Улыбка Узнал много нового... Thank you! ;)

_________________
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеЧт, 22-Мар-2007 14:53 
Цитата

=))))
пожалуйста, только вот добавлю, одну вещь, сначала файерволл делает сплайсинг функций, потом антивирус этих же функций, потом мы, потом вирус, потом ещё кто-нить.... и в итоге код мизерной функции разрастается до больших размеров...а говорим ещё винда глючит....

_________________
Сила дурака в том, что умный перед ним бессилен.
В начало
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Страница 2 из 2 На страницу Пред.  1, 2
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100