2013-05-09 6 views
0

이 챌린지 코드에서 암호를 확인하려고하지만 작동 방식을 파악할 수 없습니다. 누구는 그것이 무엇을하는지 알아 내려고하는 방법에 대한 몇 가지 팁을 가지고 있습니까?작동 방식을 파악할 수 없습니다.

.text:00401000     public start 
.text:00401000 start: 
.text:00401000     mov  esi, offset loc_401013 
.text:00401005 
.text:00401005 loc_401005:        ; CODE XREF: .text:00401011j 
.text:00401005     cmp  esi, offset byte_40105F 
.text:0040100B     jz  short loc_401013 
.text:0040100D     xor  byte ptr [esi], 0CDh 
.text:00401010     inc  esi 
.text:00401011     jmp  short loc_401005 
.text:00401013 ; --------------------------------------------------------------------------- 
.text:00401013 
.text:00401013 loc_401013:        ; CODE XREF: .text:0040100Bj 
.text:00401013           ; DATA XREF: .text:starto 
.text:00401013     xor  bl, al 
.text:00401015     test eax, 44CD8DFDh 
.text:0040101A     or  eax, edx 
.text:0040101C     jnp  short near ptr 400FE1h 
.text:0040101E     db  2Eh 
.text:0040101E     into 
.text:00401020     mov  esp, [esi] 
.text:00401022     xor  eax, 9936B34Ch 
.text:00401027     mov  edi, 0DBB8A8B8h 
.text:0040102C     cmpsd 
.text:0040102D     int  0A5h   ; used by BASIC while in interpreter 
.text:0040102F     sub  ebp, 0CDA5CD8Dh 
.text:00401035     in  eax, dx 
.text:00401035 ; --------------------------------------------------------------------------- 
.text:00401036     dw 0CD8Dh 
.text:00401038     dd 0D832CDA7h, 0CD8DFD55h, 0CDA7D926h, 8DED81A5h, 0EDEDA5CDh 
.text:00401038     dd 0CDA7CD8Dh, 0FD55D832h, 0CDA7CD8Dh, 0FDA5D832h 
.text:0040105C     db 8Dh, 0CDh, 0Eh 
.text:0040105F byte_40105F  db 0EEh     ; DATA XREF: .text:loc_401005o 
.text:00401060     dd 90EEEEEEh, 90h, 66h dup(0) 
+0

이 질문은 (특히 막연한 제목과 함께) 미래의 방문자에게 유용하지는 않을 것입니다. 디버깅 해봤습니까? –

답변

3

이 코드는 간단히, loc_401013:에서 0XCD와 byte_40105F 각 바이트의 배타적 논리합을 연산하여 분해가 의미가 만드는 코드의 시작 부분으로 이동합니다. 코드가하는 일을 보려면 해당 범위의 각 바이트를 0xCD로 XOR하고 다시 해체해야합니다.

관련 문제