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

 eXeL@B —› Программирование —› Снова про DLL :(
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение

Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 29 октября 2006 23:11 · Поправил: crash_rider
· Личное сообщение · #1

НУ вроде вытащил из Dll fd_usb.dll---> CreateInterface имеет :

CreateInterface proc near
CODE:008C3940 push ebp
CODE:008C3941 mov ebp, esp
CODE:008C3943 mov eax, offset unk_8C5668 вот это что такое????? не понять....
CODE:008C3948 mov dword ptr [eax], offset sub_8C3880
CODE:008C394E mov dword ptr [eax+4], offset nullsub_1
CODE:008C3955 mov dword ptr [eax+8], offset sub_8C388C
CODE:008C395C mov dword ptr [eax+0Ch], offset sub_8C3894
CODE:008C3963 mov dword ptr [eax+10h], offset nullsub_2
CODE:008C396A mov dword ptr [eax+14h], offset nullsub_3
CODE:008C3971 mov dword ptr [eax+18h], offset sub_8C38A4
CODE:008C3978 mov dword ptr [eax+1Ch], offset sub_8C38AC
CODE:008C397F mov dword ptr [eax+20h], offset nullsub_4
CODE:008C3986 mov dword ptr [eax+24h], offset nullsub_5
CODE:008C398D mov dword ptr [eax+28h], offset nullsub_6
CODE:008C3994 mov dword ptr [eax+2Ch], offset sub_8C38C0
CODE:008C399B mov dword ptr [eax+30h], offset sub_8C38C8
CODE:008C39A2 mov dword ptr [eax+34h], offset sub_8C38D0
CODE:008C39A9 mov dword ptr [eax+38h], offset nullsub_7
CODE:008C39B0 mov dword ptr [eax+3Ch], offset nullsub_8
CODE:008C39B7 mov dword ptr [eax+40h], offset sub_8C38E0
CODE:008C39BE mov dword ptr [eax+44h], offset sub_8C38E8
CODE:008C39C5 mov dword ptr [eax+48h], offset nullsub_9
CODE:008C39CC mov dword ptr [eax+4Ch], offset nullsub_10
CODE:008C39D3 mov dword ptr [eax+50h], offset nullsub_11
CODE:008C39DA mov dword ptr [eax+54h], offset sub_8C38FC
CODE:008C39E1 mov dword ptr [eax+58h], offset nullsub_12
CODE:008C39E8 mov dword ptr [eax+5Ch], offset sub_8C3908
CODE:008C39EF mov dword ptr [eax+60h], offset sub_8C3910
CODE:008C39F6 mov dword ptr [eax+64h], offset sub_8C3918
CODE:008C39FD mov dword ptr [eax+68h], offset sub_8C3920
CODE:008C3A04 mov dword ptr [eax+6Ch], offset sub_8C3928
CODE:008C3A0B mov dword ptr [eax+70h], offset sub_8C3930
CODE:008C3A12 mov dword ptr [eax+74h], offset sub_8C3938
CODE:008C3A19 pop ebp
CODE:008C3A1A retn
CODE:008C3A1A CreateInterface endp

Пишу на Delphi Dll с экспортируемой процедурой CreateInterface

TIn_Module = record // mov eax, offset unk_8C5668
Arrayof : Array [0..120] of byte ;
Sub_Msvcrt: function(a4:integer):integer;stdcall; // sub_8C3880
sub_10002B10: procedure; // nullsub_1
sub_10001110: function(a4:integer):integer;stdcall; // sub_8C388C
sub_10001120: function(a4:integer;a84:integer):integer;stdcall; // sub_8C3894
CloseAllHandle: procedure; // nullsub_2
Func_DeviceIoControl: procedure; // nullsub_3
sub_10001220: function(a4:integer):integer;stdcall; // sub_8C38A4
sub_100012F0: function(a4:integer):integer;stdcall; // sub_8C38AC
sub_10001210: procedure; // nullsub_4
sub_10001160: procedure; // nullsub_5
sub_100011B0: procedure; // nullsub_6
sub_10001320: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C38C0
sub_10001370: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C38C8
sub_100013C0: function(a4:integer;a84:integer):integer;stdcall; // sub_8C38D0
sub_10001400: procedure; // nullsub_7
sub_10001450: procedure; // nullsub_8
sub_10001460: function(a4:integer;a84:integer):integer;stdcall; // sub_8C38E0
sub_10001530: function(a4:integer;a84:integer):integer;stdcall; // sub_8C38E8
sub_10001590: procedure; // nullsub_9
sub_10001600: procedure; // nullsub_10
sub_10001450copy: procedure; // nullsub_11
sub_10001640: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C38FC
sub_10001750: procedure; // nullsub_12
sub_10001D20: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C3908
sub_10001D40: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C3910
sub_10001D60: function(a4:integer):integer;stdcall; // sub_8C3918
WriteCommand: function(a4:integer):integer;stdcall; // sub_8C3920
WriteCommand2: function(a4:integer;a84:integer):integer;stdcall; // sub_8C3928
ReadCommand: function(a4:integer;a84:integer):integer;stdcall; // sub_8C3930
Facet_locale_std__AEPAXI_Z: function(a4:integer):integer;stdcall; // sub_8C3938
end;


обзываю ее fd_usb.dll запускаю менеджер, чтобы посмотреть что там передаеться смотрим в отладчике вылетает эксепшин что не так ????



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 06 ноября 2006 15:23
· Личное сообщение · #2

ок пилю уже с VC++6 ковыряюсь...




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 06 ноября 2006 15:38
· Личное сообщение · #3

Ну и как оно? Выкладывай исходник с реализаций CreateInterface()



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 06 ноября 2006 19:23
· Личное сообщение · #4

еще не доковырял...



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 07 ноября 2006 15:12 · Поправил: crash_rider
· Личное сообщение · #5

typedef unsigned int ULONG32, *PULONG32;
typedef unsigned int DWORD32, *PDWORD32;
typedef unsigned int UINT32, *PUINT32;


class Big
{
public:
In_Module field1;
UINT32 field2;
UINT32 theRest[154];
UINT32 lastField;
};

class Small
{
public:
UINT32 field1, field2;
UINT32 theRest[154];
UINT32 lastField;
};

extern Big Class_Big;

Big *p1 = new Big; //0x274 bytes, no constructor
//p1->field1 = global1; // +0..... то что по адресу 0x10004070

Small *p2 = new Small; // 0x14 bytes, no constructor

//sub_100227f0();

//p1->field2 = p2; // +4
//p1->lastField = 0; // +0x270

//return p1;


Ну типа объявил а теперь не могу



Big Class_Big= {
//PDWORD32*(0);
0,
0,
//PDWORD32(In_Module)), не проходит преобразование как теперь засунуть In_Module и p2 в UINT32?
а In_Module это оффсет по адресу 0x10004070
,
0};

extern "C"
__declspec (dllexport) Big *CreateInterface ()
{
return &Class_Big;
}




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 07 ноября 2006 16:00
· Личное сообщение · #6

crash_rider
1) глобальная переменная должна быть не instance a pointer: "Big *g_big;" например
2) extern не надо
3) всё это пинется в одном С++ файле
4) инициализация с { } в C++ не канает
5) выделение памяти должно быть в самом CreateInterface() - так было в оригинале
6) в конче функции пиши "return g_big;"
7) по поводу адресов - запись примерно такая: "g_big->field1 = &g_someOtherGlobal;" а в ней уже адреса функций. Кста, эти адреса можно как раз через { } забить во время компиляции



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 07 ноября 2006 16:35
· Личное сообщение · #7

ну я на с++ писал еще в досе... когда под столом ходил
зы здесь все другое нда короче изучать придеться



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 07 ноября 2006 16:36 · Поправил: crash_rider
· Личное сообщение · #8

1 ну а я как объявляю ? Big *p1 = new Big; ? че не прально?
2 понял уже убрал



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 07 ноября 2006 18:13 · Поправил: crash_rider
· Личное сообщение · #9

In_Module mod = {
sub_10001090,
sub_10002B10,
sub_10001110,
sub_10001120,
sub_10001140,
sub_10001150,
sub_10001220,
sub_100012F0,
sub_10001210,
sub_10001160,
sub_100011B0,
sub_10001320,
sub_10001370,
sub_100013C0,
sub_10001400,
sub_10001450,
sub_10001460,
sub_10001530,
sub_10001590,
sub_10001600,
sub_10001450copy,
sub_10001640,
sub_10001750,
sub_10001D20,
sub_10001D40,
sub_10001D60,
sub_10001D70,
sub_10001D80,
sub_10001DA0,
};
extern "C" пришлось оставить иначе добавляются символы всякие (как там прально манглед или мангл)
__declspec (dllexport) Big *CreateInterface () создаю все в CreateInterface как в асм исходнике а VC++ его запихивает кудато
{
In_Module mod;

Big *p1 = new Big; //0x274 bytes, no constructor
p1->field1 = (UINT32)&mod; // +0..... òî ÷òî ëåæèò â 0x10004070

Small *p2 = new Small; // 0x14 bytes, no constructor

//sub_100227f0();

p1->field2 = (UINT32)p2; // +4
p1->lastField = 0; // +0x270

return p1;

}
Вроде скомпилил, но в иде что то не то!

CreateInterface proc near
jmp sub_10015180 переход на процедуру где уже выполняеться создание классов
CreateInterface endp

а должно быть вот что
public CreateInterface
.text:10001000 CreateInterface proc near
.text:10001000
.text:10001000 var_14 = dword ptr -14h
.text:10001000 var_10 = dword ptr -10h
.text:10001000 var_C = dword ptr -0Ch
.text:10001000 var_4 = dword ptr -4
.text:10001000
.text:10001000 push 274h
.text:10001005 call operator new(uint)
.text:1000100A add esp, 4
.text:1000100D test eax, eax
.text:1000100F jz short loc_10001018
.text:10001011 mov ecx, eax
.text:10001013 jmp loc_10001020
.text:10001018 ; ---------------------------------------------------------------------- -----
.text:10001018
.text:10001018 loc_10001018: ; CODE XREF: CreateInterface+Fj
.text:10001018 xor eax, eax
.text:1000101A retn
.text:1000101A ; ---------------------------------------------------------------------- -----
.text:1000101B align 10h
.text:10001020
.text:10001020 loc_10001020: ; CODE XREF: CreateInterface+13j
.text:10001020 push 0FFFFFFFFh
.text:10001022 push offset loc_10003A53
.text:10001027 mov eax, large fs:0
.text:1000102D push eax
.text:1000102E mov large fs:0, esp
.text:10001035 sub esp, 8
.text:10001038 push esi
.text:10001039 mov esi, ecx
.text:1000103B mov [esp+18h+var_14], esi
.text:1000103F push 14h
.text:10001041 mov [esp+1Ch+var_4], 0
.text:10001049 mov dword ptr [esi], offset off_10004070
.text:1000104F call operator new(uint)
.text:10001054 add esp, 4
.text:10001057 mov [esp+18h+var_10], eax
.text:1000105B test eax, eax
.text:1000105D mov byte ptr [esp+18h+var_4], 1
.text:10001062 jz short loc_1000106E
.text:10001064 push esi
.text:10001065 mov ecx, eax
.text:10001067 call sub_100027F0
.text:1000106C jmp short loc_10001070
.text:1000106E ; ---------------------------------------------------------------------- -----
.text:1000106E
.text:1000106E loc_1000106E: ; CODE XREF: CreateInterface+62j
.text:1000106E xor eax, eax
.text:10001070
.text:10001070 loc_10001070: ; CODE XREF: CreateInterface+6Cj
.text:10001070 mov ecx, [esp+18h+var_C]
.text:10001074 mov [esi+4], eax
.text:10001077 mov dword ptr [esi+270h], 0
.text:10001081 mov eax, esi
.text:10001083 pop esi
.text:10001084 mov large fs:0, ecx
.text:1000108B add esp, 14h
.text:1000108E retn
.text:1000108E CreateInterface endp



Почему VC++ его так делает?




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 08 ноября 2006 12:40 · Поправил: s0larian
· Личное сообщение · #10

эх, чёрт.... RTFM бы тебе по С++....


void sub_10001090()
{
}

struct InterfaceSpec
{
void (*member1)();
/*
more members here:
...
...
*/
};

InterfaceSpec g_spec =
{
sub_10001090
/*
more function addresses here
...
*/
};

class Big
{
public:
InterfaceSpec *field1;
UINT32 field2;
UINT32 theRest[154];
UINT32 lastField;
};

Big *g_big;

extern "C" __declspec (dllexport) Big *CreateInterface()
{
g_big = new Big; //0x274 bytes, no constructor
g_big->field1 = &g_spec;

return g_big;
}


1) extern надо только на фунции (а не на переменных) что бы выключить name mangling (decoration)
2) ты всё время путаешь instances и pointers.... почитай как работает система типов в C/C++
3) g_spec это instance, и в ней указатели на функции



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 08 ноября 2006 14:30 · Поправил: crash_rider
· Личное сообщение · #11

2 s0larian Биг сенкс!
извини, что тебя так достал лана буду пробывать!
Вот вопросик в иде смотрю
call operator new(uint)
.text:10015712 add esp, 4
.text:10015715 mov [ebp+var_4], eax
.text:10015718 mov eax, [ebp+var_4]
.text:1001571B mov dword_10033EA0, eax
.text:10015720 mov ecx, dword_10033EA0
.text:10015726 mov dword ptr [ecx], offset off_1002FA30
.text:1001572C push 274h <------------------------------ а в оригинале 14h ? почему?????
.text:10015731 call operator new(uint)




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 08 ноября 2006 17:39
· Личное сообщение · #12

crash_riderне вопрос, пили давай

да, в догонку - для InterfaceSpec тебе придётся прописать прототипы функций правильно когда пройдёшь чуть дальше. То есть пока они все void XXX(){} но позже будешь выяснять какие аргументы.



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 08 ноября 2006 17:44
· Личное сообщение · #13

уже сделал зацени так ?

7572_08.11.2006_CRACKLAB.rU.tgz - fd_usb.rar




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 09 ноября 2006 09:29 · Поправил: s0larian
· Личное сообщение · #14

так, хотел уже на тебя наехать по поводу ошибок, но потом просмотрел thread и понял что пару описок было в моих постах

Вот правильный код:


class Small
{
public:
UINT32 field1,
field2,
field3,
field4,
field5;
};

class Big
{
public:
InterfaceSpec *field1;
Small *field2;

UINT32 theRest[154];
UINT32 lastField;
};


Big *g_big;

extern "C" __declspec (dllexport) Big *CreateInterface()
{
g_big = new Big; //0x274 bytes, no constructor
g_big->field1 = &g_spec;
g_big->field2 = new Small;

return g_big;
}


P.S. только tabs поставь



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 09 ноября 2006 15:44
· Личное сообщение · #15

мля все равно один и тот же эксепшин сыпиться
С0000005 типа acces violation read address




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 09 ноября 2006 16:21
· Личное сообщение · #16

так ёлки, пройди отладчиком - я тебе костяк набил, и осталось ещё процентов 95 делать



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 09 ноября 2006 19:12
· Личное сообщение · #17

хе хе 95%



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 12 ноября 2006 15:32
· Личное сообщение · #18

а эксепшин сыпиться в функии которая вызываеться из стека .... от куда ноги ростут ?



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 15 ноября 2006 15:10
· Личное сообщение · #19

Короче трабла в этом
здесь правильно возвращаеться структура BIG
CreateInterface proc near ; DATA XREF: .rdata:008C4094o
.text:008C1000 ; .rdata:008C40A8o ...
.text:008C1000
.text:008C1000 var_14 = dword ptr -14h
.text:008C1000 var_10 = dword ptr -10h
.text:008C1000 var_C = dword ptr -0Ch
.text:008C1000 var_4 = dword ptr -4
.text:008C1000 arg_EA = dword ptr 0EEh
.text:008C1000 arg_EE = dword ptr 0F2h
.text:008C1000 arg_F2 = dword ptr 0F6h
.text:008C1000 arg_FA = dword ptr 0FEh
.text:008C1000 arg_126 = word ptr 12Ah
.text:008C1000
.text:008C1000 g_big = ecx
.text:008C1000 push 274h
.text:008C1005 ; ---------------------------------------------------------------------- -----
.text:008C1005 call operator new(uint)
.text:008C100A ; ---------------------------------------------------------------------- -----
.text:008C100A add esp, 4 ; CODE XREF: CreateInterface+5^
.text:008C100A ; CreateInterface+A^
.text:008C100D ; ---------------------------------------------------------------------- -----
.text:008C100D test eax, eax
.text:008C100F ; ---------------------------------------------------------------------- -----
.text:008C100F jz short loc_8C1018
.text:008C1011 ; ---------------------------------------------------------------------- -----
.text:008C1011 mov g_big, eax ; CODE XREF: CreateInterface+F^
.text:008C1013 ; ---------------------------------------------------------------------- -----
.text:008C1013
.text:008C1013 loc_8C1013: ; CODE XREF: CreateInterface+D^
.text:008C1013 ; CreateInterface:loc_8C1013^ ...
.text:008C1013 jmp loc_8C1020
.text:008C1018 ; ---------------------------------------------------------------------- -----
и т.д.

а у меня в иде полсе компиляции вот что

CreateInterface proc near
jmp sub_100016F0 т.е. результат в некуда...
CreateInterface endp

как поправить?????




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 15 ноября 2006 16:47
· Личное сообщение · #20

думаю, что это не "в некуда" - просто у тебя включена опция edit and continue и в начале каждой функции стоит jump.... Если я тебя правильно понял.



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 15 ноября 2006 19:14 · Поправил: crash_rider
· Личное сообщение · #21

эээ
да без толку сидел час игрался результату нил!

public CreateInterface

CreateInterface proc near
jmp _CreateInterface
CreateInterface endp
и что в исходнике то подругому

и еще у меня cdecl получаеся везде! а в оригинале stdcall ! ставлю при компиляции stdcall, все типа сделал __stdcall,но CreateInterface тоже делает stdcall а он вроде сделан как cdecl!




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 16 ноября 2006 09:13
· Личное сообщение · #22

выкладывай исходник



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 16 ноября 2006 14:47 · Поправил: crash_rider
· Личное сообщение · #23

исходник это громко сказано
там пока что прототипы только

7aac_16.11.2006_CRACKLAB.rU.tgz - fd_usb.rar
там все и оригинальная длл и менеджер оригинальный для загрузки этой и еще одной(fs_fat.dll) длл принцип загрузки такойже через классы




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 16 ноября 2006 16:53 · Поправил: s0larian
· Личное сообщение · #24

1) ставишь incremental linking = no
2) link against "multi-threaded dll" (not debug, /MD)

получаешь fd_usb.dll на 7680 байт с одним экспортом - правильным.

405f_16.11.2006_CRACKLAB.rU.tgz - sshot.PNG



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 16 ноября 2006 17:16
· Личное сообщение · #25

как тебя благодарить не знаю прям! БОЛЬШОЕ СПАСИБО!



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 16 ноября 2006 18:15
· Личное сообщение · #26

типа все и так работало? только счас без Debug



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 16 ноября 2006 19:10
· Личное сообщение · #27

///////////////////мой код \\\\\\\\\\\\\\\\\
CreateInterface proc near
var_8= dword ptr -8
var_4= dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
для чего заносяться в переменную var_8
значения из стека перед созданием класса????
в оригинале DLL этого нет....
mov [ebp+var_8], 0CCCCCCCCh
mov [ebp+var_4], 0CCCCCCCCh
push 274h
call operator new(uint) ; class Big
add esp, 4
; Выделяем память для нового экземпляра объекта BIG и получаем указатель
mov [ebp+var_4], eax

///////////////////оригинал \\\\\\\\\\\\\\\\\
CreateInterface proc near
var_14= dword ptr -14h
var_10= dword ptr -10h
var_C= dword ptr -0Ch
var_8= byte ptr -8
var_4= dword ptr -4
arg_EA= dword ptr 0EEh
arg_EE= dword ptr 0F2h
arg_F2= dword ptr 0F6h
arg_FA= dword ptr 0FEh
arg_126= word ptr 12Ah

push 274h ; class Big
call operator new(uint)
add esp, 4
; Выделяем память для нового экземпляра объекта BIG и получаем указатель

что то я уже задрался



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

Создано: 16 ноября 2006 22:52
· Личное сообщение · #28

crash_rider пишет:
для чего заносяться в переменную var_8
значения из стека перед созданием класса????
в оригинале DLL этого нет....
mov [ebp+var_8], 0CCCCCCCCh
mov [ebp+var_4], 0CCCCCCCCh

CC = INT 3 Видимо "защита от переполнения буфера" или выполнения со стека
Микрософтовские проги напичканы им до опупения - выравнивание на 16 байт им делается...




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 17 ноября 2006 10:00
· Личное сообщение · #29

tundra37 пишет:
mov [ebp+var_8], 0CCCCCCCCh

это спецмальная фишка debug устоновок - переменные иницмализируются 0xCC - и ты это увидишь в отладчике. Это сделано что бы проще находить глюки.



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 19 ноября 2006 14:45
· Личное сообщение · #30

понятненько!
но ошибка все равно...
что то не то с классом...в дебаге смотрю в регистрах вообще все другое зы



Ранг: 32.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 20 ноября 2006 22:18
· Личное сообщение · #31

НУ написал прогу грузит длл, подсовываю класс BIG
во время отладки смотрю что там в класе BIG пишет Error expression cannot be evaluated
что не правильно?????

4c65_20.11.2006_CRACKLAB.rU.tgz - loaddll.rar


<< . 1 . 2 . 3 . >>
 eXeL@B —› Программирование —› Снова про DLL :(
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати