Reverse/Am0kCM_2/solve.md
2024-09-25 13:27:46 +08:00

39 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

1. 直接看Main函数
```assembly
00401000 | 68 FFE77648 | push 4876E7FF |
00401005 | E8 56000000 | call am0kcm_2.401060 |
0040100A | 83C4 04 | add esp,4 |
0040100D | E8 58000000 | call <am0kcm_2.random> |
00401012 | 99 | cdq |
00401013 | 3D FFE77648 | cmp eax,4876E7FF | <--
00401018 | 75 1E | jne <am0kcm_2.Fail> |
0040101A | 83FA 17 | cmp edx,17 | <--
0040101D | 75 19 | jne <am0kcm_2.Fail> |
0040101F | 6A 00 | push 0 |
00401021 | 68 98504000 | push am0kcm_2.405098 | 405098:"Good Job"
00401026 | 68 68504000 | push am0kcm_2.405068 | 405068:"You re one the good way to become a cracker ;)"
0040102B | 6A 00 | push 0 |
0040102D | FF15 94404000 | call dword ptr ds:[<MessageBoxA>] |
00401033 | 33C0 | xor eax,eax |
00401035 | C2 1000 | ret 10 |
00401038 | 6A 00 | push 0 |
0040103A | 68 60504000 | push am0kcm_2.405060 | 405060:"Bad Job"
0040103F | 68 30504000 | push am0kcm_2.405030 | 405030:"Hehe, don't stop trying :P\nStill not cracked.."
00401044 | 6A 00 | push 0 |
00401046 | FF15 94404000 | call dword ptr ds:[<MessageBoxA>] |
0040104C | 33C0 | xor eax,eax |
0040104E | C2 1000 | ret 10 |
```
`00401013`和`0040101A` 这两个的比较结果永远不会相等
2. 要么NOP掉两个jne跳转要么jne改je
这里我选择后者
```assembly
00401018 | 74 1E | je <am0kcm_2.Fail> |
0040101A | 83FA 17 | cmp edx,17 |
0040101D | 74 19 | je <am0kcm_2.Fail> |
```