Детство героя проходило в маленьком городе Княжье-Вено Юго-Западного края. Вася — так звали мальчика — был сыном городского судьи. Ребенок рос, «как дикое деревцо в поле»: мать умерла, когда сыну было всего шесть лет, а отец, поглощенный своим горем, обращал на мальчика мало внимания. Вася целыми днями бродил по городу, и картины городской жизни оставляли в его душе глубокий след.
Город был окружен прудами. Посреди одного из них на острове стоял старинный замок, принадлежавший некогда графскому роду. Ходили легенды, что остров насыпан пленными турками, и замок стоит «на костях человеческих». Хозяева давным-давно покинули это мрачное жилище, и оно постепенно разрушалось. Его обитателями стали городские нищие, не имевшие иного пристанища. Но среди нищих произошел раскол. Старый Януш, один из бывших графских слуг, получил некое право решать, кто может жить в замке, а кто нет. Он оставил там лишь «аристократов»: католиков и бывшую графскую челядь. Изгнанники нашли себе пристанище в подземелье под старинным склепом у заброшенной униатской часовни, стоявшей на горе. Однако это их местопребывание никому не было известно.
Старый Януш, встречая Васю, приглашает его заходить в замок, ибо там теперь «порядочное общество». Но мальчик предпочитает «дурное общество» изгнанников из замка: Вася жалеет их.
Многие члены «дурного общества» хорошо известны в городе. Это полубезумный пожилой «профессор», который всегда что-то тихо и грустно бормочет; свирепый и драчливый штык-юнкер Заусайлов; спившийся отставной чиновник Лавровский, всем рассказывающий неправдоподобные трагические истории о своей жизни. А именующий себя генералом Туркевич знаменит тем, что «обличает» почтенных горожан прямо под их окнами. Это он делает для того, чтобы получить на водку, и достигает своей цели: «обличаемые» спешат откупиться от него.
Руководитель же всего сообщества «темных личностей» — Тыбурций Драб. Его происхождение и прошлое никому не ведомы. Иные предполагают в нем аристократа, но наружность его — простонародная. Он известен необыкновенной ученостью. На ярмарках Тыбурций развлекает публику пространными речами из античных авторов. Его считают колдуном.
Однажды Вася с тремя приятелями приходит к старой часовне: ему хочется заглянуть туда. Друзья помогают Васе проникнуть внутрь через высокое окно. Но увидев, что в часовне еще кто-то есть, приятели в ужасе убегают, бросив Васю на произвол судьбы. Оказывается, там дети Тыбурция: девятилетний Валек и четырехлетняя Маруся. Вася начинает часто приходить на гору к своим новым друзьям, носить им яблоки из своего сада. Но ходит он лишь тогда, когда его не может застать Тыбурций. Вася никому не рассказывает об этом знакомстве. Струсившим приятелям он говорит, что видел чертей.
У Васи есть сестра, четырехлетняя Соня. Она, как и ее брат, — веселый и резвый ребенок. Брат и сестра очень любят друг друга, но Сонина нянька препятствует их шумным играм: она считает Васю дурным, испорченным мальчишкой. Такого же взгляда придерживается и отец. Он не находит в своей душе места для любви к мальчику. Отец больше любит Соню, потому что она похожа на свою покойную мать.
Как-то раз в разговоре Валек и Маруся говорят Васе, что Тыбурций их очень любит. Вася отзывается о своем отце с обидой. Но неожиданно узнает от Валека, что судья — очень справедливый и честный человек. Валек — мальчик очень серьезный и смышленый. Маруся же совсем не похожа на резвую Соню, она слабенькая, задумчивая, «невеселая». Валек говорит, что «серый камень высосал из нее жизнь».
Вася узнает о том, что Валек ворует еду для голодной сестры. Это открытие производит тяжелое впечатление на Васю, но все же он не осуждает друга.
Валек показывает Васе подземелье, где живут все члены «дурного общества». В отсутствие взрослых Вася приходит туда, играет со своими друзьями. Во время игры в жмурки неожиданно является Тыбурций. Дети испуганы — ведь они дружат без ведома грозного главы «дурного общества». Но Тыбурций разрешает Васе приходить, взяв с него обещание никому не рассказывать, где все они живут. Тыбурций приносит еду, готовит обед — по его словам Вася понимает, что еда краденая. Это, конечно, смущает мальчика, но он видит, что Маруся так рада еде… Теперь Вася беспрепятственно приходит на гору, и взрослые члены «дурного общества» тоже привыкают к мальчику, любят его.
Наступает осень, и Маруся заболевает. Чтобы как-то развлечь больную девочку, Вася решается попросить на время у Сони большую красивую куклу, подарок покойной матери. Соня соглашается. Маруся в восторге от куклы, и ей даже становится лучше.
К судье несколько раз приходит старый Януш с доносами на членов «дурного общества». Он рассказывает, что Вася общается с ними. Нянька замечает отсутствие куклы. Васю не выпускают из дому, и через несколько дней он убегает тайком.
Марусе становится все хуже. Обитатели подземелья решают, что куклу нужно вернуть, а девочка этого и не заметит. Но увидев, что куклу хотят забрать, Маруся горько плачет… Вася оставляет ей куклу.
И снова Васю не выпускают из дому. Отец пытается добиться от сына признания, куда он ходил и куда делась кукла. Вася признается, что куклу взял он, но более не говорит ничего. Отец в гневе… И вот в самый критический момент появляется Тыбурций. Он несет куклу.
Тыбурций рассказывает судье о дружбе Васи с его детьми. Тот поражен. Отец чувствует себя виноватым перед Васей. Словно рухнула стена, долгое время разделявшая отца и сына, и они почувствовали себя близкими людьми. Тыбурций говорит, что Маруся умерла. Отец отпускает Васю проститься с ней, при этом он передает через Васю деньги для Тыбурция и предостережение: главе «дурного общества» лучше скрыться из города.
Вскоре почти все «темные личности» куда-то исчезают. Остаются лишь старый «профессор» и Туркевич, которому судья иногда дает работу. Маруся похоронена на старом кладбище возле обвалившейся часовни. Вася с сестрой ухаживают за ее могилкой. Иногда они приходят на кладбище вместе с отцом. Когда же Васе и Соне приходит время оставить родной город, над этой могилкой произносят они свои обеты.