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

 eXeL@B —› Вопросы новичков —› Изменить данные =)
Посл.ответ Сообщение

Ранг: 5.3 (гость)
Активность: 0.01=0.01
Статус: Участник

Создано: 01 июля 2012 19:42 · Поправил: Makashka
· Личное сообщение · #1

Я новичек, так что не смейтесь =)
Вообще анализировал программу.
Сама строка с данными зашифрованна, и расшифровывается по мере исполнения.
Ковырятся с тем, какой метод шифровки не хочется. Но в определенный момент срока открыта.
Хранится в EAX регистре. И потом вызывается...
Так вот, изменить все можно в окне дампа...а как это сделать другими средствами?)
Мне надо написать билдер, в который пропишешь тот текст, на который заменить и он заменит...есть варианты?)



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

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

лябой хекс редактор попробуй



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

Создано: 01 июля 2012 20:06 · Поправил: hlmadip
· Личное сообщение · #3

Примерно так:
имеем
1)mov eax, [строка]
2)использование строки
Изменям:
1)mov eax, [строка]
2)jmp <процедура созданная в неиспользуемом пространстве>
<процедура созданная в неиспользуемом пространстве>
mov eax, [указатель на заранее созданную необходимую строку]
выполняем комманды, затёртые прыжком
jmp обратно
Makashka пишет:
Мне надо написать билдер, в который пропишешь тот текст, на который заменить и он заменит...есть варианты?)

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



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

Создано: 01 июля 2012 20:20 · Поправил: Johnny Mnemonic
· Личное сообщение · #4

del



Ранг: 5.3 (гость)
Активность: 0.01=0.01
Статус: Участник

Создано: 01 июля 2012 20:54
· Личное сообщение · #5

CTPaHHuk пишет:
лябой хекс редактор попробуй

Не прокатит, говорю же.
Изначально строка зашифрованна.

hlmadip
Спасибо.

Address Hex dump Command Comments
00408C6E |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4]
00408C71 |. E8 36B0FFFF |CALL 00403CAC

После выполнения 00408C6E в EAX помешается "my_text"
Потом выполняется CALL использую регистр EAX.

Вы предлагаете сделать так:
MOV EAX,DWORD PTR SS:[EBP-4]
JMP 12345678 (прыжок на мою процедуру)
MOV EAX, ???? (заместо вопросов поставить адрес, где находится тот текст, на который заменить?)
JMP 00408C71 ( 00408C71 = CALL 00403CAC)

Я вас правильно понял?

Johnny Mnemonic
не, вы ошиблись.



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

Создано: 01 июля 2012 21:02 · Поправил: Johnny Mnemonic
· Личное сообщение · #6

Makashka
соррь



Ранг: 5.3 (гость)
Активность: 0.01=0.01
Статус: Участник

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

Да пожалуйста:
http://rghost.ru/private/38976144/c840036ad14c378e09861d5a88eecb5a

Если поможешь написать билдер, буду совсем благодарен =)
Стучит на IRC сервер. Мне надо просто поменять адрес IRC сервера и все.



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

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

Makashka пишет:
Address Hex dump Command Comments00408C6E |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4]00408C71 |. E8 36B0FFFF |CALL 00403CACПосле выполнения 00408C6E в EAX помешается "my_text"Потом выполняется CALL использую регистр EAX.Вы предлагаете сделать так:MOV EAX,DWORD PTR SS:[EBP-4]JMP 12345678 (прыжок на мою процедуру)MOV EAX, ???? (заместо вопросов поставить адрес, где находится тот текст, на который заменить?)JMP 00408C71 ( 00408C71 = CALL 00403CAC)

MOV EAX,DWORD PTR SS:[EBP-4]
JMP 12345678
MOV EAX, ????
CALL 00403CAC
jmp обратно
Не забудь, что строка должна нулём заканчиваться.




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

Создано: 01 июля 2012 22:12
· Личное сообщение · #9

нафига огород??

строки статические (делфи), если не хватит места имеющегося за счет выравнивания для замены на свои, то перенести сами строки и пропатчить смещения.

Строк всего 4. Мест вызова декриптора 5. Ниже декриптованные строки. Процедура раскодирования элементарная. Ниже С-шный аналог.

Code:
  1. char *unxor(char *src, char *key)
  2. {
  3.          int klen = strlen(key);
  4.          int j=0;
  5.          for(int i=0; i<strlen(src); i++) {
  6.                  src[i] = ((src[i] & 0x0F) ^ (key[j++] & 0x0F)) + (src[i] & 0xF0);
  7.                  if(j==klen) j=0;
  8.          }
  9.          return src;
  10. }


раскодированные строки (+смещение строки в основном классе)

string +1B8 - basic.myftp.biz
string +1C4 - #zomb
string +1C8 - Vxg5Rs2loa
string +1CC - 35knQs3XsgdI99E72ac07BsY

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 5.3 (гость)
Активность: 0.01=0.01
Статус: Участник

Создано: 01 июля 2012 23:55 · Поправил: Makashka
· Личное сообщение · #10

OKOB
Декриптованные строки я тоже нашел, но и криптованные тоже.
Как мне показалось, ключ декодирования для каждой строки разный, вот так:
basic.myftp.biz - ключ "MPDPSH"
#zomb - ключ "MPDPSC"
Vxg5Rs2loa - ключ "MPDPSCP"

Кажая из этих строк кодируется определенным ключом.

Понимаю что немного глупо, но не поможете написать билдер?)
Я просто понятия не имею, как лучше сделать.




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

Создано: 02 июля 2012 00:21
· Личное сообщение · #11

Представление о ключах я имею и о представлении кодированных строк тоже, ибо приведенные раскодированные строки взяты не из программы, а получены автономно. Выше была приведена "мясная" часть кода.

Весь код:
Code:
  1. char key1B8[] = "MPDPSH";
  2. char key1C4[] = "MPDPSC";
  3. char key1C8[] = "MPDPSCP";
  4. char key1CC[] = "MPDPSP";
  5.  
  6. char str1B8[] = "oawi`&`ybts&oi~";
  7. char str1C4[] = ".zkma";
  8. char str1C8[] = "[xc5Qp2aoe";
  9. char str1CC[] = ">5onRs>XwggI49A71an03BpY";
  10.  
  11. char *unxor(char *src, char *key)
  12. {
  13.          int klen = strlen(key);
  14.          int j=0;
  15.          for(int i=0; i<strlen(src); i++) {
  16.                  src[i] = ((src[i] & 0x0F) ^ (key[j++] & 0x0F)) + (src[i] & 0xF0);
  17.                  if(j==klen) j=0;
  18.          }
  19.          return src;
  20. }
  21.  
  22. int main(int argc, char* argv[])
  23. {
  24.          printf("string +1B8 - %s\n", unxor(str1B8, key1B8));
  25.          printf("string +1C4 - %s\n", unxor(str1C4, key1C4));
  26.          printf("string +1C8 - %s\n", unxor(str1C8, key1C8));
  27.          printf("string +1CC - %s\n", unxor(str1CC, key1CC));
  28.          return 0;
  29. }


Что есть в вашем понимании билдер?

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 5.3 (гость)
Активность: 0.01=0.01
Статус: Участник

Создано: 02 июля 2012 00:35
· Личное сообщение · #12

OKOB
Билдер - Консольное/GUI приложение, с возможностью ввода данных (в данном случаи, замены host,channel,password) в другом файле. Например GUI приложение, на которым 3 текстовых поля, в которые вводим те данные, на которые стоит заменить данные.
(например в этом .exe есть данные host, channel, password). В нашем билдере 3 поля для замены данных. Нажимаем Patch, и строки из 3 текстовых полей заменяют определенные данные в .exe файле.
Вот так, грубо говоря.

Не знал как объяснить по другому...




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

Создано: 02 июля 2012 01:48 · Поправил: OKOB
· Личное сообщение · #13

Makashka пишет:
Билдер - Консольное


ba64_01.07.2012_EXELAB.rU.tgz - builder.exe

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 5.3 (гость)
Активность: 0.01=0.01
Статус: Участник

Создано: 02 июля 2012 01:55
· Личное сообщение · #14

OKOB
Огромное вам спасибо.

Тогда еще небольшая просьба...а не могли бы вы дать исходный код билдера?




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

Создано: 02 июля 2012 02:04
· Личное сообщение · #15

Исходник

adc5_01.07.2012_EXELAB.rU.tgz - builder.cpp

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 5.3 (гость)
Активность: 0.01=0.01
Статус: Участник

Создано: 02 июля 2012 02:14
· Личное сообщение · #16

OKOB
Огромное спасибо =)
Очень выручили))




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 02 июля 2012 09:37
· Личное сообщение · #17

На этом топик, видимо, можно закрыть. В следующий раз в запросы с этим, своей работы вообще 0.


 eXeL@B —› Вопросы новичков —› Изменить данные =)
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати