iVar3 = OpenDriverObjectByName(L"\\Driver\\pci", &lStack_e8);
if (iVar3 < 0) goto;
if (lStack_e8 == 0) goto LAB_14000fa72;
lVar20 = *(longlong*)(lStack_e8 + 8);
이 부분에서 pci 체인을 얻어와서 pci 체인 헤드를 IVar20에서 Set 한 다음
if (lVar20 == 0) {
DAT_14002F488 = 1;
} else {
do {
lVar18 = *(longlong*)(lVar20 + 0x138);
if (lVar18 != 0) {
}
LAB_14000fa57:
lVar20 = *(longlong*)(lVar20 + 0x10);
uVar13 = uVar11;
} while (lVar20 != 0);
}
do while 루프로 체인을 순회해서
uStack_154 = 0; uStack_150 = 0;
iVar3 = ParseVendorDeviceIdFromHwId(psVar7, &uStack_154, &uStack_150);
if (iVar3 == 0) {
(&DAT_14002F390)[i*0xC] = uStack_154; // VendorID 저장
(&DAT_14002F394)[i*0xC] = uStack_150; // DeviceID 저장
}
유효한 디바이스면 디바이스 아이디랑 벤더 아이디를 별도의 바이트 시퀸스가 있는데 거따가 저장함
오직 PnP (하드웨어 장치들만) 순회해서 검사하고
랜카드 같은거면 따로 벤더 같은거 재검증하는 로직이 따로있고
이런 식으로 하드웨어 정보를 추출해서 바이트 시퀸스를 난독화 한 다음
별도의 링 버퍼에 보관 후 어디다 쏘는거 같은데 어딘진 모르겠음
고투에 인자가 없이 바로 세미콜론 나오는건 첨보는데 신기하네 ㅇㅅㅇ
아 저거 디스어셈블리된거 복붙해오다가 깨진거 같은데 어디 레이블로 가는거 있긴 함
@루도그담당(183.104) 아항 ㅇㅅㅇ!
@루도그담당(183.104) 아마 보안 솔루션 같은 것들 저런 식으로 사용자 벤더 ID 수집해서 기기 알아내는 거 일듯
@루도그담당(183.104) 그르쿠마이라이 ㅇㅅㅇ!