News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

What dialect of assembly is Winasm Studio written in?

Started by vvanag, February 23, 2025, 08:36:34 PM

Previous topic - Next topic

vvanag

What dialect of assembly is Winasm Studio written in? Masm/JWasm/ ....

satpro


TimoVJL

Tools used to create WinAsm Studio itself:007b [IMP] VS2005 (8.0)           # prodidImplib800
0083 [ C ] VS2008 (9.0)           # prodidUtc1500_C
0095 [ASM] VS2008 (9.0)           # prodidMasm900
0084 [CPP] VS2008 (9.0)           # prodidUtc1500_CPP
0094 [RES] VS2008 (9.0)           # prodidCvtres900
0091 [LNK] VS2008 (9.0)           # prodidLinker900
May the source be with you

Biterider

Hi Timo
What tool did you use to retrieve this info?

Regards, Biterider


TimoVJL

#5
Quote from: Biterider on February 24, 2025, 12:10:24 AMHi Timo
What tool did you use to retrieve this info?

Regards, Biterider
TLPEView and comp_id.txt

Also
https://masm32.com/board/index.php?msg=82966

With richprint.exe
richprint
richprint.exe WinAsmA.exe
Processing WinAsmA.exe
Target machine: x32
@comp.id  id version count  description
007bc627  7b  50727    17
00010000    1      0  258
00000000    0      0    50
0083521e  83  21022    70
0095521e  95  21022    3
0084521e  84  21022    26
0094521e  94  21022    1
0091521e  91  21022    1

Also tool for that:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>

#pragma comment(lib, "msvcrt")
//#pragma comment(linker, "/MANIFESTDEPENDENCY:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
//#pragma comment(linker, "/MANIFESTFILE:PETestRichHdr.exe.manifest")

int ProcessFile(HANDLE hFile, PBYTE pMem);

int __cdecl main(int argc, char **argv)
{
    HANDLE hFile, hMapping;
    VOID *pMem;

    if (argc < 2) {
        printf("Usage: PETestRichHdr.exe <file>\n");
        return 1;
    }
    hFile = CreateFile(argv[1], GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
    if (hFile != INVALID_HANDLE_VALUE) {
        hMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
        if (hMapping) {
            pMem = MapViewOfFile(hMapping, FILE_MAP_WRITE, 0, 0, 0);
            if (pMem) {
                printf("%s\n", argv[1]);
                ProcessFile(hFile, pMem);
                UnmapViewOfFile(pMem);
            } else
                printf("File open error");
            CloseHandle(hMapping);
        } else
            printf("FileMapping error");
        CloseHandle(hFile);
    } else
        printf("File open error");
    return 0;
}

int ProcessFile(HANDLE hFile, PBYTE pMem)
{
    PIMAGE_DOS_HEADER pDosHdr;

    pDosHdr = (PIMAGE_DOS_HEADER)pMem;
    if (pDosHdr->e_magic != IMAGE_DOS_SIGNATURE)
        return 1;
    DWORD *pPtr = (DWORD*)(pMem+pDosHdr->e_lfanew);
    DWORD *pMin = (DWORD*)(pMem+0x40);
    while (pPtr > pMin && *((DWORD*)pPtr) != *((DWORD*)"Rich"))
        pPtr--;
    if (*pPtr == *((DWORD*)"Rich")) {
        DWORD *pPtr2 = pPtr-1;
        DWORD dwMask = *(pPtr+1);
        DWORD dwTmp = *((DWORD*)"DanS") ^dwMask;
        while (*pPtr2 && *pPtr2 != dwTmp)
            pPtr2--;
        if (*pPtr2) {
            DWORD *pPtr3 = pPtr2+4;
            //printf("%Xh %\n", *pPtr2^dwMask, *pPtr2^dwMask);    //"DanS"
            while (*pPtr3 != *((DWORD*)"Rich")) {
                //WORD wId, wVer;
                dwTmp = *pPtr3^dwMask;
                printf("%08x ", *pPtr3^dwMask);
                pPtr3++;
                //printf("%Xh ", *pPtr3^dwMask);
                if (*pPtr3 == *((DWORD*)"Rich")) break;
                //printf("%Xh %d\n", LOWORD(*pPtr3^dwMask, *(pPtr3+1)^dwMask);
                printf("id:%d\tversion:%d\ttimes:%d\n", HIWORD(dwTmp), LOWORD(dwTmp), *pPtr3^dwMask);
                pPtr3++;
            }
        }
    }

    return 0;
}
May the source be with you

Biterider

Hi Timo
Thanks for all the information and sources.
I can see a lot of uses for this :thumbsup:

Regards, Biterider