intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình an toàn: Chương 7 - Lương Ánh Hoàng

Chia sẻ: Diên Vu | Ngày: | Loại File: PDF | Số trang:14

37
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Lập trình an toàn - Chương 7: Anti-Tampering" trình bày các nội dung: Phát hiện thay đổi (Detecting modification), che giấu mã (Code hiding), sử dụng con trỏ hàm (Function Pointer), giấu xâu (String hiding), phát hiện debugger (Anti-Debugger) Self-modifying code, giải pháp tổng thể. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình an toàn: Chương 7 - Lương Ánh Hoàng

Chương <br />  7. <br />  Anti-­‐Tampering <br />  <br /> <br />  <br /> Lương <br />  Ánh <br />  Hoàng <br />  <br /> <br /> hoangla@soict.hut.edu.vn <br />  <br /> <br /> Nội <br />  dung <br />  <br /> 7.1 <br />  Phát <br />  hiện <br />  thay <br />  đổi <br />  (Detecting <br />  modi}ication) <br />  <br /> 7.2 <br />  Che <br />  giấu <br />  mã <br />  (Code <br />  hiding) <br />  <br /> 7.3 <br />  Sử <br />  dụng <br />  con <br />  trỏ <br />  hàm <br />  (Function <br />  Pointer) <br />  <br /> 7.4 <br />  Giấu <br />  xâu <br />  (String <br />  hiding) <br />  <br /> 7.5 <br />  Phát <br />  hiện <br />  debugger <br />  (Anti-­‐Debugger) <br />  <br /> 7.6 <br />  Self-­‐modifying <br />  code <br />  <br /> 7.7 <br />  Giải <br />  pháp <br />  tổng <br />  thể <br />  <br /> <br />  <br /> <br /> 119 <br />  <br /> <br /> 7.1 <br />  Phát <br />  hiện <br />  thay <br />  đổi <br />  mã <br />  lệnh <br />  <br /> •  Mục <br />  tiêu: <br />  Phát <br />  hiện <br />  chương <br />  trình <br />  đã <br />  bị <br />  crack <br />  chưa <br />  (Detecting <br />  <br /> modi}ication) <br />  <br /> •  Kỹ <br />  thuật: <br />  <br /> –  Tính <br />  MD5, <br />  SHA1, <br />  hoặc <br />  HMAC <br />  mã <br />  lệnh <br />  của <br />  }ile <br />  thực <br />  thi. <br />  <br /> –  Đánh <br />  dấu <br />  một <br />  đoạn <br />  trong <br />  chương <br />  trình <br />  sẽ <br />  dùng <br />  để <br />  lưu <br />  mã <br />  băm <br />  }ile <br />  thực <br />  thi <br />  và <br />  ghi <br />  <br /> giá <br />  trị <br />  băm <br />  vào <br />  đó <br />  bằng <br />  một <br />  chương <br />  trình <br />  Hex <br />  edit <br />  khác. <br />  <br /> –  Tại <br />  thời <br />  điểm <br />  runtime <br />  tính <br />  lại <br />  giá <br />  trị <br />  băm <br />  của <br />  }ile <br />  thực <br />  thi <br />  và <br />  so <br />  sánh <br />  với <br />  mã <br />  băm <br />  <br /> trước <br />  đó. <br />  <br /> <br /> •  Ví <br />  dụ: <br />  <br /> <br />   băm <br />  <br /> // <br />  Khai <br />  báo <br />  xâu <br />   <br />   đánh <br />  dấu <br />  m <br />  ã <br />  <br /> char <br />  * <br />  md5hash <br />  = <br />  "AAAAXXXXXXXXXXXXXXXX"; <br />  <br /> int <br />  _tmain(int <br />  argc, <br />  _TCHAR* <br />  argv[]) <br />  <br /> { <br />  <br /> <br />  unsigned <br />  char <br />  hash[16];// <br />  Giá <br />  trị <br />  băm <br />  tính <br />  được <br />  <br /> <br />  unsigned <br />  char <br />  expectedhash[16];// <br />  Giá <br />  trị <br />  băm <br />  lưu <br />  trong <br />  }ile<br /> <br />   <br />  <br /> <br />  FILE <br />  * <br />  fp <br />  = <br />  fopen(argv[0],"rb");// <br />  Mở <br />  }ile <br />  để <br />  tính <br />  lại <br />  giá <br />  trị <br />  băm <br />  <br /> <br />  unsigned <br />  char <br />  * <br />  pFile <br />  ; <br />  <br /> <br />  fseek(fp,0,SEEK_END); <br />  <br /> <br />  int<br /> <br />  len <br />  = <br />  ftell(fp); <br />  <br /> 120 <br />  <br /> <br /> <br />  <br /> <br /> 7.1 <br />  Phát <br />  hiện <br />  thay <br />  đổi <br />  mã <br />  lệnh <br />  <br /> •  Ví <br />  dụ: <br />  <br /> <br />   char*)malloc(len); <br />  <br /> <br />   <br />  <br /> pFile <br />  = <br />  (unsigned <br />  <br /> fseek(fp,0,SEEK_SET); <br />  <br /> fread(pFile,1,len,fp); <br />  <br /> md5hash <br />  = <br />  0; <br />  <br /> for <br />  (int <br />  i=0;i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2