Сейчас на форуме: Rio, vsv1, site-pro (+6 невидимых)

 eXeL@B —› Софт, инструменты —› FoxPro наработки
Посл.ответ Сообщение

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

Создано: 27 ноября 2012 12:09 · Поправил: VodoleY
· Личное сообщение · #1

День добрый. Ребят, ни у кого в загашниках не осталось инфы по фоксу.. структура файла, коды инструкций в ПИ коде, описание цикла движка обработчика в дллке.. Тут прогу на фоксе дебажить прийдется, а я последний раз лет 8 назад фокс копал. заранее спасибо.
ADD. (если чет буду находить, поскладирую линки)
http://www.foxpert.com/docs/howfoxproworks.en.htm
http://www.foxpert.com/docs/fxp.en.htm
http://baiyujia.com/vfpdocuments/f_vhfox.asp (FOXPRO APP FILE STRUCTURE (UNDOCUMENTED) January 2012)

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....


| Сообщение посчитали полезным: vden


Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 27 ноября 2012 12:11
· Личное сообщение · #2

ReFox бери и декомпиль.

-----
StarForce и Themida ацтой!




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

Создано: 27 ноября 2012 12:16
· Личное сообщение · #3

а дебажить мне тоже в нем предлагаеш? отдекомпилить то не проблема, давно сделано. Но он сволочь даже офсеты не показывает. вот еслиб он комманды в пикоде и в хексе показывал было бы дело

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 27 ноября 2012 14:06
· Личное сообщение · #4

Я всегда запихивал код в FoxPro и компелил то, что мне делает ReFox.
Хоть обдебажься. Далее патчил оригинал уже по наитию.

-----
StarForce и Themida ацтой!





Ранг: 199.9 (ветеран), 4thx
Активность: 0.120.02
Статус: Участник

Создано: 28 ноября 2012 08:39
· Личное сообщение · #5

VodoleY
Дебагера в виде пи-кода не существует. Максимус прав: получаем в Рефоксе исходный код, ищем и правим нужное место, компилим затем в FoxPro исходный и патченый код, сравниваем, пишем патчер. Ну..или делаем кейген



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

Создано: 28 ноября 2012 08:41 · Поправил: VodoleY
· Личное сообщение · #6

YDS ну вот КГ и делаю.. ток в 1ом из 6 ти условий гдето косяк. А дебагер ввиде пикод реально сделать заюзав вфп60.длл. просто крутить цикл обработки комманд. но то такое. ладно покопаю дальше.
З.Ы. я вкурсе как поступать с фоксом вопрос топика был немного другого характера
АДД. большую часть вроде сделал. если вменяемая инфа будет поделюсь.

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 1.9 (гость), 3thx
Активность: 0=0
Статус: Участник

Создано: 30 ноября 2012 11:39 · Поправил: zabriskie
· Личное сообщение · #7

VodoleY
p-коды большинства инструкций можно найти в исходниках старенького FoxPro decompiler от Robert Plagnard. Там же есть информация (неполная) и о структуре файлов приложений и компилированных файлов. Дополнить её помогут китайцы (baiyujia.com). Описание структуры многих файлов есть на MSDN. p-код во многих случаях показывает также и Corso.

| Сообщение посчитали полезным: VodoleY

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

Создано: 30 ноября 2012 15:14 · Поправил: VodoleY
· Личное сообщение · #8

Ну впринципи в общих чертах в статье, что в заголовке простенький пример описан. если отдизасмить VFP6R.DLL то конце файла 2-3 списка с опкодами инструкций. например
.rdata:0C2F3334 dd offset aAbs ; "ABS"- тескт инструкции
.rdata:0C2F3338 db 19h - пи код
еще примеры
//10 =
//06 +
//08 -
//04 *
//0C /
//F7 -local var (names after code proc) Example F7 00 01
//FB - Const var FB sz text example FB 01 31
//55 - EOF
//1C - endcase
цикл подготовки процедуры к выполнению в длл-ке
text:0C008FFB push ebx
.text:0C008FFC push edi
.text:0C008FFD mov edx, esi
.text:0C008FFF call sub_C00903B
.text:0C009004 or dword_C3097C0, eax
.text:0C00900A call sub_C007A95
.text:0C00900F mov ecx, dword_C304004
.text:0C009015 cmp byte ptr [ecx], 55h //EndProc
.text:0C009018 jnz short loc_C008FFB

начиная с 50Н тут начинается сама программа
0x00000000 : FE F2 FF 20 02 01 00 00 00 B0 00 00 00 8F 00 00 þòÿ .....°.....
0x00000010 : 00 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .!..............
0x00000020 : 00 00 00 00 00 00 00 94 11 00 00 00 00 25 00 00 .......”.....%..
0x00000030 : 00 00 00 00 00 00 00 00 00 56 00 00 00 03 00 00 .........V......
0x00000040 : 00 50 00 00 00 C2 8B 56 2B 11 00 00 00 FC 18 00 .P...‹V+....ü..
0x00000050 : 0B 00 AE F7 00 00 07 F7 01 00 FE 0A 00 02 F8 03 ..®÷...÷..þ...ø.
0x00000060 : 01 F7 00 00 FE 03 00 55 02 00 06 00 4C 43 4E 41 .÷..þ..U....LCNA
0x00000070 : 4D 45 05 00 4C 43 5A 49 50 B1 00 A1 00 31 00 00 ME..LCZIP±.¡.1..
0x00000080 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 65 ...............e
0x00000090 : 3A 5C 74 65 6D 70 5C 00 76 61 72 2E 66 78 70 00 :\temp\.var.fxp.
0x000000A0 : 65 3A 5C 74 65 6D 70 5C 76 61 72 2E 70 72 67 00 e:\temp\var.prg.
0x000000B0 : 00 29 00 00 00 8F 00 00 00 00 00 00 00 09 00 00 .).............
0x000000C0 : 00 00 00 00 00 00 00 00 00

Тут впринципе сначала синганута FE F2 FF 20 02 01 дальше масив двордов, с нулевой базой считая от начала. инструкции парсятся по длинам относительно нормально, за исключением сложных выходов.
03 00 55 - выход, конец процедуры. в конце список переменных, для этой процедуры друг за дружкой в текстовом виде,. их индекс используюся внутри пикода F7 01 00 - 2ая переменна. F7- типа переменной. Пока не могу найти место в дллке, где хранятся в памяти текущие значения переменных.
З.Ы. zabriskie громадное спасибо за сайтик, занятное чтиво

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 1.9 (гость), 3thx
Активность: 0=0
Статус: Участник

Создано: 01 декабря 2012 21:02 · Поправил: zabriskie
· Личное сообщение · #9

Я знаком со структурой компилированных файлов, поэтому нет необходимости пересказывать Christof Wollenhaupt. Странно, что вы не отметили его же "The FXP format".
И уж если так хочется разобраться, что и где храниться и как выполняется, обратите внимание на массив указателей на процедуры обработки p-кода.

| Сообщение посчитали полезным: VodoleY

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

Создано: 02 декабря 2012 11:58 · Поправил: VodoleY
· Личное сообщение · #10

zabriskie добавли в шапку линки с Вашей подачи найденные и еще раз спасибо. Я разбирал структуру фокса.. когда то ооочень давно, у мну тогда даже интернета не было жалкие воспоминания были в голове, освежил и дополнил Может эти ссылочки кому то время сэкономят.
ADD
если ктото будет присидать с sys(2007,str) то это crc16 CITT c $FFFF вот делфишный аналог
Code:
  1. function crc16( s : string; bSumPos : Boolean = FALSE ) : Word;
  2. var
  3.  L, crc, sum, i, x, j : Word;
  4.  
  5. begin
  6.   Result:=0;
  7.   L:=length(s);
  8.   if( L > 0 ) then
  9.    begin
  10.     crc:=$FFFF;
  11.     sum:=length(s);
  12.     for i:=1 to L do
  13.     begin
  14.             j:=ord(s[i]);
  15.             sum:=sum+((i) * j);
  16.             x:=((crc shr 8) xor j) and $FF;
  17.             x:=xor (shr 4);
  18.             crc:=((crc shl 8) xor (shl 12) xor (shl 5) xor x) and $FFFF;
  19.     end;
  20.     Result:=crc+(Byte(bSumPos) * sum);
  21.    end;
  22. end;


-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 1.9 (гость), 3thx
Активность: 0=0
Статус: Участник

Создано: 04 декабря 2012 22:59 · Поправил: zabriskie
· Личное сообщение · #11

О ссылках. Большинству это не нужно, а те, кто хоть немного сведущ во внутреннем устройстве VFP, знают это.

P.S. Не вполне понял, причём тут crc16. Это то самое, где непонятный case ? Если нет, то
возможно, что в вашем случае объектный код модифицирован так, что никогда не будет соответствовать восстановленному ReFox-ом коду. А может быть где-то другая часть кода модифицирует системную dll, и инструкция выполняется как-то не так.



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

Создано: 05 декабря 2012 13:26
· Личное сообщение · #12

zabriskie ссылки пусть будут просто как собранная в кучу инфа. свой КГ я доделал, работает. crc16 показывает как в других языках можно реализовать фокспрошную sys(2007 .. ВАМ еще раз спасибо.

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....



 eXeL@B —› Софт, инструменты —› FoxPro наработки
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати