나는 인라인 어셈블리를 통해 단순히 호출하는 기계어 기능을 위해 예약 된 일부 n 바이트 헤더 세트를 사용하여 128 바이트 블록을 절차 적으로 생성하고 있습니다. 그것들은 어디에도 정의되어 있지 않으며 런타임에 실행을 위해 메모리에 할당 된 페이지로 생성됩니다. 그러나 메모리 오프셋 호출을 32 비트 대신 8 비트로 축소 할 수 있기 때문에이 함수 내에서
나는 마이크로 소프트의 과거에 묻는 면접 질문의 샘플을 통해 온라인으로보고이 하나 건너 온되었다이 다음 ASM 블록은 공통 수학 함수가 무엇을 수행? cwd xor ax, dx
sub ax, dx
사람이 대답하고 나에게 답을 설명해 주시겠습니까? 감사!! 업데이트 : 좋습니다. 따라서 절대 값을 계산합니다. 누군가 그것을 단계적으로 설명해 주시겠습니까
어셈블리에서 아무것도 쓰지 않거나 어셈블리를 모든 프로그램에 추가하면 이식성이 손상된다는 것을 알고 있습니다. 하지만, 얼마나 나빠요? 기본적으로 모든 PC는 요즘 x86이나 x64입니다. 맞습니까? 그래서 C 프로그램에 어셈블리를 임베드한다면 왜 그것이 어디서 컴파일 되더라도 컴파일되지 않을까요? 실제로 특정 프로세서의 특정 단점을 파헤 치면 코드 조각에
리눅스는 32 비트 및 64 비트를 동시에 어떻게 사용합니까? 또는 glibc에서 처리되는 것이 있습니까? CentOS 5.3을 실행하며 "64 비트"버전입니다. 비록 64 비트와 32 비트를위한 것들을 만들지 만. 내가 아는 것부터 Windows에는 32 비트 에뮬레이터가 있다고 가정합니다. 리눅스도 똑같은 일을합니까? 사용자 공간 또는 커널 공간에 있습
EAX에 저장된 값을 XOR 할 수 있습니까? 문제는이 라인에있다 : xor eax, key
EAX 내가 XOR에 원하는 값의 주소를 포함합니다. 이것을 어떻게 할 수 있습니까? 나는 그것의 라인을 따라 뭔가 될 것이지만 : xor [eax], key
하지만 ... (구문 오류) decrypt proc startAddress:DWORD , sizeO
어셈블러, C++ 및 PE 파일 작동 방식에 대해 더 배우는 방법으로 exe packer/protector를 코딩하려고합니다. 나는 현재 EP를 포함하고있는 섹션이 키와 XOR되고, 새로운 섹션이 나의 암호 해독 코드를 포함하도록 생성되도록하고있다. 해독 후 원본 EP에 JMP를 시도 할 때를 제외하고 모든 것이 훌륭합니다. DWORD originalEnt