입력 클래스를 암호화하고 전송 및 해독해야하는 어셈블러 프로젝트를 완료하려면 클래스 중 하나에서 C 및 ASM {}을 사용하고 있습니다.어셈블러에서 배열 멤버에 액세스
키는 빈 C char 배열 (길이가 20 자)로로드 된 다음 나중에 XOR 문을 사용하여 암호화됩니다. ESI으로 '키'의 어드레스를두고
키
레아 ESI :
코드
어레이의 어드레스가로드. 디버그 모드에서 레지스터를 검사 할 때 여기의 주소는 키 배열의 주소와 동일하므로 작동하는 것으로 알고 있습니다.mov 인 EDX는 [ESI]
우리는 우리가 "MOV는 [ESI], EAX"는 a의 값을 넣어 사용할 때이, EDX에 ESI의 첫 번째 인덱스의 값을 이동 것이라고 생각 esi 배열에 등록하십시오. 그 반대는 논리적으로 보였다.
그러나 edx가 실제로 얻는 값은 "875575655"(마지막 실행) 또는 이와 유사합니다. char 값에 비해 너무 큽니다.
우리가 배열에 잘못 액세스 한 것 같은 느낌이 들었습니다. 조언을 제공해 주시면 감사하겠습니다.
참고 : 일반적으로 단순히 배열 색인을 늘리려면 incis를 사용하고 위와 같이 읽습니다. 배열에서 읽기를 계획하는 방법입니다.