Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: làm thế nào để cắt bỏ đoạn cuối file

  1. #1
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Mặc định làm thế nào để cắt bỏ đoạn cuối file

    Em có 1 file đang nhiễm virus làm bài tập , nhưng đã viết được đoạn khôi phục các thông số đúng của file bị nhiễm. Bây giờ em muốn cắt bỏ 1 số byte ở cuối để loại virus nơi cuối file , có ai giúp được em không
    em cần cắt đi 453 byte cuối file nên làm như sau :

    fseek(f,SEEK_END,-453);
    buffer=-1;
    fwrite(&buffer,1,1,f);
    fclose(f);

    nhưng khi dùng xem lại thì 453 byte cuối kia vẫn chơ ra , không thấy mất đi

    anh em có cách nào không ,riêng em là bó tay rồi
    Search trên google thấy bác mathinfo cũng hỏi 1 câu tương tự trên www.ddth.com nhưng không thấy giải pháp được đưa ra
    cám ơn anh em trước.

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    theo mình thì bạn nên xem vài điều nếu máy bạn có virus:

    +liệu có phải là file đó đang được thực thi hoặc được 1 tiến trình nào đó bảo vệ ko cho phép thay đổi
    + liệu có phải là bạn đã xoá thành công nhưng mà ngay sau khi xoá thì lại được nó hớt tay trên ??

    theo mình bạn nên xử lý cái con virrus trước đãm sau đó mới xử đến file đó
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  3. #3
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Trích dẫn Nguyên bản được gửi bởi langman Xem bài viết
    theo mình thì bạn nên xem vài điều nếu máy bạn có virus:

    +liệu có phải là file đó đang được thực thi hoặc được 1 tiến trình nào đó bảo vệ ko cho phép thay đổi
    + liệu có phải là bạn đã xoá thành công nhưng mà ngay sau khi xoá thì lại được nó hớt tay trên ??

    theo mình bạn nên xử lý cái con virrus trước đãm sau đó mới xử đến file đó
    Thank langman
    đây chỉ là bài tập nên thầy không bảo làm nhiều, virus không cần có phần thường trú. Virus do mọi người trong lớp viết rồi thầy đổi chéo để diệt.
    hôm qua sau khi xem lại hàm fseek, em viết lại là
    Code:
    fseek(f,-453,SEEK_END); 
     buffer[0]=EOF;
     fwrite(&buffer,1,1,f);
     fclose(f);
    nhưng vẫn không thành công

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    mấy dòng code của bạn chỉ là viết ký tự '\0' hay byte có giá trị 0 eof vào file thôi , cấu trúc đó hình như từ xa xưa rồi , giờ không dùng nữa mà nó quản lý bằng độ dài của file . Cách mới này có ưu điểm rất lớn là khi đọc file , chương trình không phải tìm vị trí kết thúc file (chả lẽ chạy từ đầu đến cuối file để tìm) , ngoài ra có thể ghi các ký tự '\0' thoải mái .
    trong c s[] ="hello \0world" nó sẽ hiểu là "hello " . Còn trong c# thì nó sẽ hiểu là "hello \0world"
    Như trong c# , để xóa bớt phần đuôi file thì phải setlength lại cho file . c thì không biết .
    Thông cảm , nói c# hơi nhiều vì code c cái xóa đuôi tớ không biết , nhưng tớ nghĩ tư tưởng xóa đuôi file trong c cũng giống vậy
    Đã được chỉnh sửa lần cuối bởi tienlbhoc : 18-04-2009 lúc 03:22 PM.
    Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/

    mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
    http://www.tinhte.vn/threads/691731/

  5. #5
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Cám ơn bạn tienlbhoc
    mình đang viết code để diệt virus .com (bài thầy giao )
    virus .com thì nó nạp vào bộ nhớ trong 1 segment dài 64KB nên không có thông tin gì về fileSize cả, tất cả nội dung của file đều dạng mã máy và chỉ cần nạp vào ram là chạy.
    Nếu nó là file exe thì đi 1 nhẽ , chỉ cần sửa cái exe header là xong :-s

  6. #6
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Mặc định làm thế nào để cắt bỏ đoạn cuối file

    Trích dẫn Nguyên bản được gửi bởi quangnh89 Xem bài viết
    Cám ơn bạn tienlbhoc
    mình đang viết code để diệt virus .com (bài thầy giao )
    virus .com thì nó nạp vào bộ nhớ trong 1 segment dài 64KB nên không có thông tin gì về fileSize cả, tất cả nội dung của file đều dạng mã máy và chỉ cần nạp vào ram là chạy.
    Nếu nó là file exe thì đi 1 nhẽ , chỉ cần sửa cái exe header là xong :-s
    Đếm tổng số byte từ SEEK_BEGIN tới SEEK_END.
    Từ SEEK_END quay lui lại 453 bytes.
    rewrite lại vào file mới, xóa file nhiễm.
    None!

  7. #7
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Trích dẫn Nguyên bản được gửi bởi Xcross87 Xem bài viết
    Đếm tổng số byte từ SEEK_BEGIN tới SEEK_END.
    Từ SEEK_END quay lui lại 453 bytes.
    rewrite lại vào file mới, xóa file nhiễm.
    Cũng đành làm cách này,nhưng nếu file nặng thì toi, trong C không có hàm truncate giống như pascal nhỉ. Em đã code xong và thấy chạy được, chỉ cần đọc ngược từ cuối file lên 453 byte rồi dùng ftell();
    nhưng còn 1 vấn đề nữa:
    trong C có hàm nào để lấy thuộc tính file hay thay đổi thuộc tính không ????
    trong asm thì em làm được nhưng trong DEV C++ nó dùng mã asm của AT&T đọc hoa cả mắt
    brio nào biết chỉ cho em với

  8. #8
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Cũng đành làm cách này,nhưng nếu file nặng thì toi, trong C không có hàm truncate giống như pascal nhỉ. Em đã code xong và thấy chạy được, chỉ cần đọc ngược từ cuối file lên 453 byte rồi dùng ftell();
    File operate trên pointer, cũng không chậm lắm đâu.
    trong C có hàm nào để lấy thuộc tính file hay thay đổi thuộc tính không ????
    Build-in library C library thì chắc là không. Nhưng không hiểu cậu hiểu "thuộc tính" là thế nào, cậu đưa một ví dụ đi.

  9. #9
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    là file attribute. Ví dụ con virus lây file có attribute là read-only thì không thể xóa đoạn code của nó trong file được, và nếu mở với option là "r+b" thì lỗi
    em định quét file , nếu bị nhiễm thì diệt virus
    khi diệt :
    + cất các attribute của file trước
    + đặt attribute của file là 0 (không có attribute)
    + diệt xong thì khôi phục lại attribute cho file như trước
    nhân thể, mọi người hướng dẫn em cái này
    em có thể code được hàm có tính năng đọc và sửa attribute trên assembly, em muốn dịch nó ra file *.obj rồi hợp dịch với C, nhờ mọi người giúp . Chắc chắn sẽ có bạn hỏi là sao không viết code asm trong C luôn cho lành nhưng thằng DEV C chuối lắm, nó cho phép viết code asm nhưng tương thích với AT&T chứ không phải intel , nhìn đau cả mắt
    Đã được chỉnh sửa lần cuối bởi quangnh89 : 20-04-2009 lúc 06:12 PM.

  10. #10
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Sử dụng:

    C Code:
    1. system("ATTRIB filename.exe");
    None!

Các đề tài tương tự

  1. Bài tập C++ Đọc File như thế nào trong c++ ? Code đọc file của em như thế này là lỗi ở đâu ?
    Gửi bởi vipnho0209 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 03-06-2013, 09:28 PM
  2. Trả lời: 3
    Bài viết cuối: 10-04-2013, 08:06 AM
  3. Chuyển đổi file JFrame Form thành file java class trong netbeans như thế nào???
    Gửi bởi quanganhpd93 trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 1
    Bài viết cuối: 02-03-2013, 08:47 AM
  4. Chuyển 1 file html 25mb sang file word như thế nào ?
    Gửi bởi hoanglinh9466 trong diễn đàn Thắc mắc chung
    Trả lời: 3
    Bài viết cuối: 26-06-2011, 11:28 PM
  5. File server để dùng ajax trong visual2010 là file gì, xử lý kết nối với SQLserver như thế nào?
    Gửi bởi lenamshenlong trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 9
    Bài viết cuối: 26-05-2011, 05:14 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn