---
# System prepended metadata

title: Labs-IAM302

---

# CrackMe#1 
### Problems
![image](https://hackmd.io/_uploads/r19rPKI5a.png)

### Solutions
- Tất cả các file zip đề bài cho đều sẽ có password mở sẽ là: 

      crackinglessons.com
- Dùng x32dbg để phân phân tích khi ta nhập 1 key bất kì sẽ hiện lên là wrong.

![image](https://hackmd.io/_uploads/rk0oYtL5a.png)

- Và ta thấy rằng có một bước nhảy có điều kiện đang được thực hiện khi so sánh chuỗi đầu vào với 'cr4ckingL3ssons'.

![image](https://hackmd.io/_uploads/SJrGjtL9T.png)

- Kiểm tra điều kiện eax, eax trên dòng 00401137 kiểm tra xem eax có chứa 0 hay không.
- Nếu eax bằng 0 thì câu lệnh jne sẽ không được thực hiện một, và câu lệnh chúc mừng sẽ được hiển thị, nếu không nó sẽ thực hiện và nhảy xuống dòng 00401154.

![image](https://hackmd.io/_uploads/S1bvstI56.png)

- Để làm điều này, chúng ta chỉ cần đặt nội dung của eax về 0 bằng cách nhập Serial Key: 'cr4ckingL3ssons'. 
- Hoặc chúng ta thay đổi giá trị này thành xor eax, 0, eax sẽ luôn bằng 0 và điều kiện sẽ luôn bằng 0

![image](https://hackmd.io/_uploads/r1m3hYL96.png)


# CrackMe#2
### Problems
![image](https://hackmd.io/_uploads/Hkxse9LqT.png)

### Solutions
- đầu tiên khi ta chạy file thì hiện dòng unregistered

![image](https://hackmd.io/_uploads/SyXT79IcT.png)

- Sau đó ta để ý đoạn code này là tạo và đọc 1 file keyfile.txt thì ta sẽ được Registered 

![Screenshot 2024-01-30 231428](https://hackmd.io/_uploads/Sk9y-jI96.png)

# CrackMe#3
### Problems

![image](https://hackmd.io/_uploads/ryGsmn_q6.png)

### Solutions
- Ta có 3 việc cần làm là remove 2 nag screen và change status thành Register.
- Thì đầu tiên ta thấy trước khi đến câu lệnh jne có câu lệnh cmp và nó sẽ bỏ qua khi không bằng 0

![image](https://hackmd.io/_uploads/HkNDc2OqT.png)

- Ta chỉ cần đổi jne thành je để có thể bypass qua nag 1.

![image](https://hackmd.io/_uploads/Bkkqh3O9T.png)

- Tiếp đến Register thì cũng có 1 câu lệnh cmp với eax. Để chuyển đổi logic thì ta đổi je thành jne cậu lệnh Register sẽ được thực hiện.

![Screenshot 2024-02-01 131745](https://hackmd.io/_uploads/ryKUan_qp.png)

- Và cuối cùng là loại bỏ nag 2 thì ta có một cách là chuyển hết đoạn gọi hàm đó về NOPs (một hoạt động không làm thay đổi trạng thái của bộ vi xử lý hoặc bộ nhớ).

![Screenshot 2024-02-01 131944](https://hackmd.io/_uploads/H1d70n_5T.png)

# CrackMe#4
### Problems
![image](https://hackmd.io/_uploads/rkLdR2dca.png)

### Solutions
- Đề bài là crack để extend được 30 days
- Đầu tiên ta thấy có một lệnh gán số ngày còn lại vào exc mov 1E và lệnh sub trừ ecx và eax sau đó lại gán lại bằng ecx.

![image](https://hackmd.io/_uploads/H1qLG6d56.png)

- Để crack thì t đổi giá trị được đặt trong ecx thành một số rất lớn và điều đó dẫn đến số ngày đăng ký dài hơn.

![Screenshot 2024-02-01 140719](https://hackmd.io/_uploads/S1lVa76dqp.png)

# CrackMe#5
### Problems
![image](https://hackmd.io/_uploads/HkyINT_9T.png)
### Solutions

![image](https://hackmd.io/_uploads/ByjFAi-na.png)

- Tại dòng 0040114D ta thấy chương trình gọi hàm GetLocalTime
- Hơn nữa, trong dòng 0040116A, chúng ta thấy rằng có định dạng chuỗi %s-%d%d%d.
- Ta có thể suy ra rằng sê-ri là sự kết hợp của tên người dùng bạn đã nhập, được thêm vào bởi các số do GetLocalTime tạo ra
- Trong khi chạy chương trình, Ollydbg hiển thị cho bạn bất kỳ chuỗi nào đang được tạo và lưu trữ, từ đó chúng ta có thể thấy chuỗi được tạo khi chúng ta thực hiện từng bước trong chương trình

![image](https://hackmd.io/_uploads/Syt3yhWha.png)
![image](https://hackmd.io/_uploads/Hy8_ghbha.png)


# #6Target by TDC
### Problems
![image](https://hackmd.io/_uploads/BJW2_6Ji6.png)
### Solutions
- Đầu tiên là xóa nag, thì chúng ta có thể thấy đoạn 0040108B là bắt đầu đoạn gọi và hiển thị thông báo.
- Để loại bỏ chúng ta sẽ chuyển 004010A7 đến 004010B6 thành nop. Và khi chạy chương trình nag sẽ bị xóa.
![image](https://hackmd.io/_uploads/SkCiJUcop.png)
- Khi ta ấn vào Re-check đoạn nag chưa bị xóa. sau khi chạy nhiều lần mình đã nhận thấy dòng 004010FB có lỗi và mình đã chuyển thành nop. 
- Và khi ấn tiếp Re-check thì 1 đoạn nữa lại hiện lên là nag removed not registered 
![image](https://hackmd.io/_uploads/B1arLU9sp.png)

- Và điều này xảy ra bởi dòng 00401104 không được thực hiện. Giờ ta chỉ cần đổi thành nhảy không điều kiện jmp là xong.
![image](https://hackmd.io/_uploads/ryppN89i6.png)

# CrackMe#7
### Problems
![image](https://hackmd.io/_uploads/rkhempyoa.png)
### Solutions
![image](https://hackmd.io/_uploads/rJCfOpyi6.png)
- Ta có thể thấy để thay đổi status thành Register thì câu lệnh dòng 00401039 không được thực hiện.
- Trước đó ta thấy có 1 câu lệnh gán eax bằng 5 và ecx, 5 rồi thực hiện phép trừ và test eax với 0.
- Để thay đổi cấu trúc logic ta thay giá trị của eax bằng 6. 
- Thì sau khi thực hiện eax sẽ khác 0 và không thực hiện dòng 00401039

![Screenshot 2024-02-06 214654](https://hackmd.io/_uploads/By0SupyjT.png)

# CrackMe#8
### Problems
![image](https://hackmd.io/_uploads/rkqajrciT.png)
### Solutions
![image](https://hackmd.io/_uploads/S1rB180iT.png)
- Có nhiều cách giải bài này, chúng ta có thể chuyển lệnh je trên dòng 0040386D thành jne để thay đổi cấu trúc logic hoặc thành nop. Nhưng trong bài này cần tìm đúng memory.
- Và memory được lưu và so sánh với 0 ở dòng 00403855A. Nếu chúng bằng nhau, cờ 0 được đặt thành 1 và bước nhảy được thực hiện.
- Việc ta cần làm là  thay đổi giá trị trong bộ nhớ 7260D0 từ 0 thành bất kì số khác để câu lệnh không được thực hiện. 
![image](https://hackmd.io/_uploads/r1U6eLRop.png)
![image](https://hackmd.io/_uploads/rJDJ-IAsp.png)


# CrackMe#9
### Problems
![image](https://hackmd.io/_uploads/SJTiGURjp.png)
### Solutions
![image](https://hackmd.io/_uploads/Bk-FO8Aia.png)
- Ta có thể dễ dàng tìm thấy serial key.

![image](https://hackmd.io/_uploads/HyqM3LRip.png)

- Để thay đổi ta vào constant ở thanh ghi 71822A và sửa có thể đổi serial key.

![image](https://hackmd.io/_uploads/HyRQh8CsT.png)

# CrackMe#11
### Problems
![image](https://hackmd.io/_uploads/rJqcKG92a.png)

### Solutions
- Đầu tiên khi tải về ta có thể dễ dàng unpack qua các bài trên.
- Path lại file đã unpack. Để bypass qua key ta sửa logic câu lệnh ở dòng 00403A59 từ je thành jmp nhảy không điều kiện.

![image](https://hackmd.io/_uploads/ByblNCcna.png)

![image](https://hackmd.io/_uploads/rJBzVCc2a.png)

- Tiếp theo để tạo 1 loader. Câu lệnh trên ta vừa chỉnh sửa mình tìm hiểu được có Relative Virtual Adress(RVA) là 4 số cuối địa chỉ chình sửa 00003A59.
- Ta sẽ sử dụng công cụ dup2 để tạo loader. 

![image](https://hackmd.io/_uploads/SJDvOC52a.png)

- Sau khi đã add ấn vào file -> Create loader -> simple loader là sẽ thành công.

![image](https://hackmd.io/_uploads/ByR2OC53T.png)

# Easy Peasy by whitecr0w
### Problems
![image](https://hackmd.io/_uploads/Hy0sI1M2T.png)

### Solutions
![image](https://hackmd.io/_uploads/Hk7nvyznT.png)
- Tìm kiếm bên note thì ta thấy user và password được note lại và lưu ở ô 488000 và 488028.
![image](https://hackmd.io/_uploads/HyNIK1G2a.png)
- user: iwonderhowitfeelstobeatimetravel
- password: heyamyspaceboardisbrokencanyouhelpmefindit?

# CrackMe#12
### Problems
![image](https://hackmd.io/_uploads/BkyfJezn6.png)

### Solutions
- Đầu tiên khi chạy chương trình sẽ có dòng thông báo.
![image](https://hackmd.io/_uploads/ByXUAyf2a.png)
- Ta nhận thấy khi đặt breakpoint trước câu lệnh thông báo sẽ phụ thuộc vào câu lệnh ở dòng 0040386D vửa sửa jn thành jmp là sẽ bypass nag này.
![image](https://hackmd.io/_uploads/ByaT0yfnT.png)

![image](https://hackmd.io/_uploads/HyOvygz26.png)

# CrackMe#13
### Problems
![image](https://hackmd.io/_uploads/r1TYJeG3a.png)
### Solutions

# CrackMe#14
### Problems
![image](https://hackmd.io/_uploads/H1cX8xf2a.png)
### Solutions
- Đề bài muốn chúng ta tạo ra Keygen từ serial key.
- Sau khi nhập Serial key ngẫu nhiên thì ta thấy key được tạo và lưu ở thanh ghi 0x7191E0 và mình đã đặt một break point trước câu lệnh thực hiện in ra error.

![image](https://hackmd.io/_uploads/SkpFMrX2a.png)

![image](https://hackmd.io/_uploads/H1BzGSQ26.png)

- Câu lệnh dòng 00403B4E dựa vào key đã tạo và in ra key có đúng hay không nhưng lại ở thanh ghi 0x71920E.
- Mình đã sửa lại thành 0x7191E0 để khi in ra dòng thông báo sẽ là serial key đã được tạo. 
- Và nhập key xuất hiện ở thông báo là sẽ thành công.
![Screenshot 2024-02-21 163159](https://hackmd.io/_uploads/rydOSrQnp.png)
![Screenshot 2024-02-21 163306](https://hackmd.io/_uploads/BkepUSX36.png)
![Screenshot 2024-02-21 163347](https://hackmd.io/_uploads/Bkc7HHQhp.png)

# CrackMe#16
### Problems
![image](https://hackmd.io/_uploads/Bk2iOHXha.png)
### Solutions
- Đầu tiên để xóa bỏ nag, ta để ý dòng 00402CFE là câu lệnh gọi message để thông báo nag, ta chuyển câu lệnh đó thành nop.
- Ở dòng 00402D62 chuyển thành câu lệnh nhảy jmp 
![image](https://hackmd.io/_uploads/HkWO-_EhT.png)

![image](https://hackmd.io/_uploads/HyKnJOV2a.png)

- Tiếp theo để bypass ta thay đổi câu lệnh ở dòng 004028E3 từ je thành jne để đổi logic câu lệnh.

![image](https://hackmd.io/_uploads/rJTzUHV2T.png)

![image](https://hackmd.io/_uploads/HyLSld4np.png)

# CrackMe#17
### Problems
![image](https://hackmd.io/_uploads/B1hxm_VhT.png)

### Solutions
- Đầu tiên để crack nhập tên hay key nào cũng đúng thì ta cần thay đổi cấu logic ở dòng 00402A09 sẽ bypass được. 

![Screenshot 2024-02-24 104945](https://hackmd.io/_uploads/HyzJCJDha.png)

![Screenshot 2024-02-24 104713](https://hackmd.io/_uploads/HkGkAkw3T.png)

![Screenshot 2024-02-24 104742](https://hackmd.io/_uploads/r1zJRJw2a.png)

- Tiếp theo thì ta sẽ tìm đươc key 004027E5. Để tạo key theo ý mình thì ta edit Hex là sẽ được.

![Screenshot 2024-02-24 105220](https://hackmd.io/_uploads/HJGyCkwha.png)

# CrackMe#18
### Problems
![image](https://hackmd.io/_uploads/rJ50ygPnp.png)

### Solutions

# CrackMe#19
### Problems
![image](https://hackmd.io/_uploads/rJgIAGlDnp.png)

### Solutions

# CrackMe#20
### Problems
![image](https://hackmd.io/_uploads/B1Al7ePn6.png)

### Solutions
![image](https://hackmd.io/_uploads/BJKH8ePnp.png)


