Ở phần trước chúng ta đã làm quen với các khái niệm về phần mềm và con đường tạo ra virus giờ chúng ta cùng đi sâu vào khâu thực hành nhé !
Link part 1 : https://viblo.asia/p/tao-ra-virus-bang-tool-part1-maGK7Awelj2
Ta quan sát thì file notepad2.exe chỉ có 4 section của code, việc tiếp theo là chúng ta sẽ thêm 1 section nữa thông qua các thao tác sau:
Ở đây, phần mềm sẽ cho ta chọn cách Add section sao cho hợp lý:
- Add Section (Header Only)
- Add Section (Empty Space)
- Add Section (File Data)
Vì mong muốn của chúng ta là thêm 1 Section rỗng hoàn toàn nên ta sẽ chọn Add Section (Empty Space) Sau khi thao tác xong sẽ hiện lên như sau:
Ta chọn 256 nghĩa là ta sẽ dành 256 kb cho section này, sau khi thực hiện thì phần mềm sẽ tạo cho ta 1 section trống:
Sau dó, chúng ta sẽ đặt tên cho section này để dễ theo dõi nhé, các bạn có thể đặt tên tùy ý, ta có như sau:
Sau đó, vì mỗi 1 section sẽ đảm nhận 1 nhiệm vụ nhất định thông qua các flag mà chúng ta gán cho chúng thì ở đây để thực thi được section .thong thì ta phải thêm flag is_exercutable cho nó: Sau khi tích xong các bạn nhớ save lại nhé !
Giờ đến phần hay hơn đó là chúng ta sẽ thay đổi EntryPoint mà tôi đã trình bày ở phần trên cho các bạn, chúng ta sẽ lưu lại giá trị Virtual Address của section .thong và thay thế nó vào giá trị EntryPoint để khi thực thi file .exe thì sẽ chạy vào section .thong trước: Sau khi ta thay đổi giá trị của EntryPoint, thì phần mềm sẽ tự hiểu và chuyển EntryPoint trỏ vào section.thong chứ không còn section .text như ban đầu, sau đó chúng ta save lại chương trình ( Ctrl + S ) và cùng nhau bước sang công cụ Ollydbg để chèn code vào section rỗng này nhé.
Các bạn mở công cụ ollydbg lên và kéo thả file notepad2.exe vào công cụ này sẽ được như sau: Sau đó các bạn ấn vào chữ M ở thanh sidebar trên cùng để truy cập vào Memory map cho phép chúng ta nhìn được địa chỉ lưu trữ của các section như sau:
Ở đây các bạn tìm ra section các bạn đã thêm vào, trong trường hợp của tôi thì tôi đã tìm ra section .thong, giờ tôi thực thi chèn 1 đoạn code assembly vào section này:
Các bạn vào các mục trên để vào plugins cho phép chúng ta add code vào section .thong:
Ở đây tôi đã thêm code assembly, trong đó:
- <01015000>: Chính là địa chỉ của section .thong các bạn đã nhìn thấy trong Memory map.
- push @caption : Khai báo biến caption ( tham số đầu vào của message box )
- push @text: khai báo biến text ( tham số đầu vào của message box )
- call MessageBoxA : Ta gọi message box của window
- jmp 0x0100739D : ta sẽ nhảy về vị trí của section .text để thực thi chương trình như bình thường trong đó ( 0x0100739D = giá trị địa chỉ của EntryPoint cũ ( 0000739D ) + ImageBase (01000000) ( theo phép cộng hexadecimal)
Sau đó bạn ấn Assembler để add code:
Vậy là ta đã thêm thành công rồi, giờ chỉ việc thực thi thì sẽ hiện lên 1 thông báo rồi chạy chương trình notepad như bình thường: Các bạn ấn vào hình mũi tên giống nút play để chạy chương trình:
Vậy là xong rồi đó, cảm ơn các bạn đã lắng nghe !