powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с адресами
7 сообщений из 7, страница 1 из 1
Работа с адресами
    #39426084
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Возможно ли как то работать в vb6.0 c адресами, как в си, например, такого типа 0xF97CFF8A?
...
Рейтинг: 0 / 0
Работа с адресами
    #39426113
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarPtr/StrPtr ?
...
Рейтинг: 0 / 0
Работа с адресами
    #39426115
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На си это выглядит так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
/* by munjeni @ 2017 */

#ifdef _WIN32
	#define __USE_MINGW_ANSI_STDIO 1
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#ifdef HAS_STDINT_H
	#include <stdint.h>
#endif
#ifdef unix
	#include <unistd.h>
	#include <sys/types.h>
	#include <sys/stat.h>
#else
	#include <direct.h>
	#include <io.h>
#endif

#define MAGIC 0xF97CFF8A

#define S_IFMT	  00170000
#define S_IFSOCK	0140000
#define S_IFLNK		0120000
#define S_IFREG		0100000
#define S_IFBLK		0060000
#define S_IFDIR		0040000
#define S_IFCHR		0020000
#define S_IFIFO		0010000
#define S_ISUID		0004000
#define S_ISGID		0002000
#define S_ISVTX		0001000

#define S_ISLNK(m)	(((m) & S_IFMT) == S_IFLNK)
#define S_ISREG(m)	(((m) & S_IFMT) == S_IFREG)
#define S_ISDIR(m)	(((m) & S_IFMT) == S_IFDIR)
#define S_ISCHR(m)	(((m) & S_IFMT) == S_IFCHR)
#define S_ISBLK(m)	(((m) & S_IFMT) == S_IFBLK)
#define S_ISFIFO(m)	(((m) & S_IFMT) == S_IFIFO)
#define S_ISSOCK(m)	(((m) & S_IFMT) == S_IFSOCK)

char *mode_to_string(unsigned int mode)
{
	if (S_ISBLK(mode))
		return "-b";
	else if (S_ISCHR(mode))
		return "-c";
	else if (S_ISDIR(mode))
		return "-d";
	else if (S_ISFIFO(mode))
		return "-p";
	else if (S_ISLNK(mode))
		return "-l";
	else if (S_ISSOCK(mode))
		return "-s";
	else if (S_ISREG(mode))
		return "--";
	else
		return "";
}

int main(int argc, char *argv[])
{
	unsigned int selinux_vers;
	unsigned int nothing;
	unsigned int i;
	unsigned int steams;
	unsigned int num_of_regex;

	char steam[256];
	char src[512];
	char context[512];

	FILE *fp = NULL;
	FILE *fpout = NULL;

	if (argc != 3) {
		printf("usage: %s BINARY_FILE OUTPUT_TEXT_FILE\n", argv[0]);
		printf("e.g: %s file_contexts.bin file_contexts\n", argv[0]);
		return 1;
	}

	if ((fp = fopen(argv[1], "rb")) == NULL) {
		printf("Unable to open %s : ", argv[1]);
		perror("");
		return 1;
	}
	fread(¬hing, 1, 4, fp);
	if (nothing != MAGIC) {
		printf("%s is not a binary!\n", argv[1]);
		if (fp) fclose(fp);
		return 1;
	}

	fread(¬hing, 1, 4, fp);
  selinux_vers = nothing;
	fread(¬hing, 1, 4, fp);
	fseek(fp, (unsigned int)ftell(fp) + nothing, SEEK_SET);

	fread(¬hing, 1, 4, fp);
	//printf("num of steams: 0x%x\n", nothing);

	for (i=0; i<nothing; ++i) {
		fread(&steams, 1, 4, fp);
  	fread(steam, 1, steams+1, fp);
		//printf("%s\n", steam);
	}

	fread(&num_of_regex, 1, 4, fp);
	//printf("num of regex: 0x%x\n", num_of_regex);

	if ((fpout = fopen(argv[2], "wb")) == NULL) {
		printf("unable to open %s for write!\n", argv[2]);
		if (fp) fclose(fp);
		return 1;
	}

  //printf("selinux version: %d\n", selinux_vers);
  fprintf(fpout, "#context version %d\n", selinux_vers);

	for (i=0; i<num_of_regex; ++i) {
		fread(¬hing, 1, 4, fp);
  	fread(context, 1, nothing, fp);
    fread(¬hing, 1, 4, fp);
    fread(src, 1, nothing, fp);
		//printf("%s %s\n", src, context);
		fread(¬hing, 1, 4, fp);
		fprintf(fpout, "%s\t%s\t%s\n", src, mode_to_string(nothing), context);
  	fseek(fp, (unsigned int)ftell(fp) + 12, SEEK_SET);
		fread(¬hing, 1, 4, fp);
    fseek(fp, (unsigned int)ftell(fp) + nothing, SEEK_SET);
		fread(¬hing, 1 , 4, fp);
    fread(¬hing, 1 , 4, fp);
    fseek(fp, (unsigned int)ftell(fp) + nothing - 4, SEEK_SET);
	}

	if (fp) fclose(fp);
	if (fpout) fclose(fpout);

	return 0;
}


Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Работа с адресами
    #39426389
BlackeAngel,

и зачем для операций с файлами и строками работать с адресами памяти?

P.S. Обращение к адресу 0xF97CFF8A в 32-разрядной системе из 3-го кольца привилегий (user mode) приведёт к Access violation.
...
Рейтинг: 0 / 0
Работа с адресами
    #39426491
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
13-й квартал,
А я и не говорил что с адресами памяти. Я написал с адресами. И адресами файла имелось в виду.
...
Рейтинг: 0 / 0
Работа с адресами
    #39426574
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel , пока ты ничего вменяемого не сказал. Главным образом, непонятно, что ты хочешь получить в итоге, какая собственно ставится задача.
...
Рейтинг: 0 / 0
Работа с адресами
    #39426624
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Мне нужно понять этот сишный код и переписать его.
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1254533&msg=20327799
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с адресами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]