41
Стол заказов и предложений / Re: Реверсинженеринг структуры файлов не использующих шифрование
« Последний ответ от Altmer 17 Август 2020, 16:22:09 »Altmer, можно глянуть код, который работает с файлами Deathkeep? Или пощупать приложение, которое выдает это:
http://www.arts-union.ru/smf/index.php?topic=863.msg14349#msg14349
Код: C++
- /*
- * File: death-keep-level
- * Created on: Вс дек 11 16:44:23 2016
- * Author: Altmer
- */
- void makemap(grid @g, uint64 off)
- {
- int sk=32;
- g.resize(64,32);
- for(int i=0;i<32;i++)
- {
- for(int j=0;j<64;j++)
- {
- int ind=(j*sk+i)*8;
- int x=j;
- int y=i;
- g.color(x,y,u32((ind)*8+4)|u32b((ind)*8));
- }
- }
- }
- void makemap1(grid @g, uint64 off)
- {
- int sk=32;
- g.resize(64,32);
- for(int i=0;i<32;i++)
- {
- for(int j=0;j<64;j++)
- {
- int ind=(j*sk+i)*8+1;
- int x=j;
- int y=i;
- g.color(x,y,u32((ind)*8+4)|u32b((ind)*8));
- }
- }
- }
- void makemap2(grid @g, uint64 off)
- {
- int sk=32;
- g.resize(64,32);
- for(int i=0;i<32;i++)
- {
- for(int j=0;j<64;j++)
- {
- int ind=(j*sk+i)*8+2;
- int x=j;
- int y=i;
- g.color(x,y,u32((ind)*8+4)|u32b((ind)*8));
- }
- }
- }
- void makemap3(grid @g, uint64 off)
- {
- int sk=32;
- g.resize(64,32);
- for(int i=0;i<32;i++)
- {
- for(int j=0;j<64;j++)
- {
- int ind=(j*sk+i)*8+3;
- int x=j;
- int y=i;
- g.color(x,y,u32((ind)*8+4)|u32b((ind)*8));
- }
- }
- }
- void makemap4(grid @g, uint64 off)
- {
- int sk=32;
- g.resize(64,32);
- for(int i=0;i<32;i++)
- {
- for(int j=0;j<64;j++)
- {
- int ind=(j*sk+i)*8+4;
- int x=j;
- int y=i;
- g.color(x,y,u32((ind)*8+4)|u32b((ind)*8));
- }
- }
- }
- void makemap5(grid @g, uint64 off)
- {
- int sk=32;
- g.resize(64,32);
- for(int i=0;i<32;i++)
- {
- for(int j=0;j<64;j++)
- {
- int ind=(j*sk+i)*8+5;
- int x=j;
- int y=i;
- g.color(x,y,u32((ind)*8+4)|u32b((ind)*8));
- }
- }
- }
- void makemap6(grid @g, uint64 off)
- {
- int sk=32;
- g.resize(64,32);
- for(int i=0;i<32;i++)
- {
- for(int j=0;j<64;j++)
- {
- int ind=(j*sk+i)*8+6;
- int x=j;
- int y=i;
- g.color(x,y,u32((ind)*8+4)|u32b((ind)*8));
- }
- }
- }
- void makemap7(grid @g, uint64 off)
- {
- int sk=32;
- g.resize(64,32);
- for(int i=0;i<32;i++)
- {
- for(int j=0;j<64;j++)
- {
- int ind=(j*sk+i)*8+7;
- int x=j;
- int y=i;
- g.color(x,y,u32((ind)*8+4)|u32b((ind)*8));
- }
- }
- }
- int main()
- {
- uint64 size=sizeof("");
- legend("","text:Floor 0");
- legend("","grid,12:makemap");
- legend("","text:Floor 1");
- legend("","grid,12:makemap1");
- legend("","text:Floor 2");
- legend("","grid,12:makemap2");
- legend("","text:Floor 3");
- legend("","grid,12:makemap3");
- legend("","text:Floor 4");
- legend("","grid,12:makemap4");
- legend("","text:Floor 5");
- legend("","grid,12:makemap5");
- legend("","text:Floor 6");
- legend("","grid,12:makemap6");
- legend("","text:Floor 7");
- legend("","grid,12:makemap7");
- return 0;
- }
Вот скрипт, но приложение надо реанимировать ) Хотя из скрипта ты можешь понять как получаются индексы блоков.