Показать сообщение отдельно

  #13  
Старый 24.08.2007, 09:49
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
По умолчанию

Скоро надо будет переименовывать тему из взлом десятой версии в распаковку восьмой.
Как вы там говорите? Старфорс? Ну ладно.. Я по поводу этого сказать ниче не могу - у меня не детектирует. Может и старфорс.

Код:
005A40E7 o>  68 CCDC19A4                 PUSH A419DCCC
005A40EC     68 3323265C                 PUSH 5C262333
005A40F1     60                          PUSHAD
005A40F2     8D4424 24                   LEA EAX,DWORD PTR SS:[ESP+24]
005A40F6     8B48 FC                     MOV ECX,DWORD PTR DS:[EAX-4]
005A40F9     F7D9                        NEG ECX
005A40FB     2908                        SUB DWORD PTR DS:[EAX],ECX
005A40FD     FF00                        INC DWORD PTR DS:[EAX]
005A40FF     8B00                        MOV EAX,DWORD PTR DS:[EAX]
005A4101     40                          INC EAX
005A4102     05 E7401A00                 ADD EAX,1A40E7
005A4107     97                          XCHG EAX,EDI
005A4108     B0 EB                       MOV AL,0EB
005A410A     AA                          STOS BYTE PTR ES:[EDI]
энтри поинт. старфорс никогда не видела. вы уж извините.
Только не особо агрессивный он для старфорса (точнее вообще не агрессивный). Опять же. Мануалов я не читала.
Мда. Импорт я восстановила с помощью следующего самопального скрипта

Код:
var iat_begin
var iat_end
var element
var iat_end_
var retaddr

ask "Input iat begin"
mov iat_begin,$RESULT
cmp iat_begin,0
je fin

ask "Input iat end"
mov iat_end,$RESULT
mov iat_end_,$RESULT
cmp iat_end,0
je fin
mov element,iat_begin
mov eip,[element]

start:
findop eip,#C3# 
mov retaddr,$RESULT 
bphws retaddr,"x"
run
mov [element],[esp]
add esp,4
add element,4
cmp element,iat_end_
je fin 
cmp [element],0
je add_
cmp [element],50000000
ja add_
mov eip,[element]
bphwc retaddr
jmp start

fin:
msg "Done" 
ret

add_:
add element,4
cmp element,iat_end_
je fin 
mov eip,[element]
bphwc retaddr
jmp start
Импорт весь изгажен (ну почти весь..... и скрипт это учитывает), все адреса указывают на выделенную память, но есть одна закономерность. Имеют вид

Код:
00BA0000     50                          PUSH EAX
00BA0001     50                          PUSH EAX
00BA0002     B8 4A195D09                 MOV EAX,95D194A
00BA0007     870424                      XCHG DWORD PTR SS:[ESP],EAX
00BA000A     C10424 06                   ROL DWORD PTR SS:[ESP],6
00BA000E     B8 BF299A20                 MOV EAX,209A29BF
00BA0013     310424                      XOR DWORD PTR SS:[ESP],EAX
00BA0016     58                          POP EAX
00BA0017     870424                      XCHG DWORD PTR SS:[ESP],EAX
00BA001A     C3                          RETN
То есть очередной переходник. Доходим до рет, а этот самый рет используется для передачи управления функции. Но вы, конечно, это все уже знаете и, читая мою писанину усмехаетесь. Однако ж продолжу. Из этого следует что. Мне надо найти опкод команды рет это делает findop eip,#C3# . Потом поставить на него хардвар на исполнение
mov retaddr,$RESULT
bphws retaddr,"x"
Потом дойти до рет это у нас run... Остановицц0, забрать с верхушки стека правильный адрес и положить его в таблицу. Ну то, что я изначально запрашиваю адрес начала таблицы и адрес конца - про это вообще не говорю. Это ясно. Ну и хардвар убираем, увеличиваем адреса и идем дальше... Причем... Если встречаем 0 в таблице-перескакиваем, или правильный адрес... это у нас
cmp [element],0
je add_
cmp [element],50000000
ja add_
mov eip,[element]

Почему 50000000? Я намекаю на адрес системной библиотеки. Ну ладно. Вроде там скрипт элементарный.

OEP нашла

Код:
00469103     6A 60                       PUSH 60
00469105     68 30795700                 PUSH dumped__.00577930
0046910A     E8 45720000                 CALL dumped__.00470354
0046910F     8365 FC 00                  AND DWORD PTR SS:[EBP-4],0
00469113     8D45 90                     LEA EAX,DWORD PTR SS:[EBP-70]
00469116     50                          PUSH EAX
00469117     FF15 38A45A00               CALL DWORD PTR DS:[<&kernel32.GetStartupInfoW>]      ; kernel32.GetStartupInfoW
0046911D     C745 FC FEFFFFFF            MOV DWORD PTR SS:[EBP-4],-2
00469124     BF 94000000                 MOV EDI,94
00469129     57                          PUSH EDI
0046912A     6A 00                       PUSH 0
0046912C     8B1D 3CA45A00               MOV EBX,DWORD PTR DS:[<&kernel32.GetProcessHeap>]    ; kernel32.GetProcessHeap
00469132     FFD3                        CALL EBX
00469134     50                          PUSH EAX
00469135     FF15 40A45A00               CALL DWORD PTR DS:[<&kernel32.HeapAlloc>]            ; ntdll.RtlAllocateHeap
0046913B     8BF0                        MOV ESI,EAX
0046913D     85F6                        TEST ESI,ESI
Естессно здесь уже все восстановлено. Единственное что там надо еще повозится с адресами, но это мне лень. Добавить секцию, сделать прививку (муторно очень)... Хотя мб я доделаю... Если доделаю, то выложу. Там несложно.
2EB_FE выкладывать ниче не надо ибо диз есть. Уж гугл-то юзать я умею. Только там не 9 метров, а 11. У меня не анлим, поэтому давайте по-человечески я постоянно десятки мегабайт трафика не могу выкачивать.
По поводу 10 версии. Я не больная (больная канешн, но не настолько). Там правда нет старфорса

Исполняемый файл. Смотрим и удивляемся.
http://slil.ru/24771918
Вопрос исчерпан.

Последний раз редактировалось 0x0c0de; 24.08.2007 в 10:53..
 
Ответить с цитированием