Câu hỏi về IDA

Thảo luận trong 'WhiteHat Challenge' bắt đầu bởi kuqadk3, 14/05/18, 12:05 AM.

  1. kuqadk3

    kuqadk3 W-------

    Tham gia: 24/09/15, 10:09 PM
    Bài viết: 15
    Đã được thích: 8
    Điểm thành tích:
    3
    Mình có chơi war game thì khi solve challenge RE04 mình có vài thắc mắc về cái IDA của mình

    Tại sao nó pass char* v6 vô func01 và func02 nhưng khi tìm flag thì phải v6+v7+v8 = "BkavSecurity" được pass vào func01, func02 mới cho kết quả đúng

    Mình cũng mơ hồ hiểu về cái char* &v6 là pass cái string mà bắt đầu bằng kí tự đầu của v6 nhưng còn khá bối rối và chưa rõ ràng, nhờ cao thủ thông não giúp ạ

    [​IMG]
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  2. hainhc

    hainhc W-------

    Tham gia: 25/01/16, 03:01 PM
    Bài viết: 12
    Đã được thích: 11
    Điểm thành tích:
    3
    Trong ida, 3 biến int lần lượt là "vakB", "uceS", "ytir" và cuối cùng là \0.
    &v6 là địa chỉ của v6. Nếu coi địa chỉ này là địa chỉ bắt đầu của 1 string thì string sẽ kết thúc khi gặp kí tự null, tức là (char*)&v6 là địa chỉ của chuỗi "BkavSecurity".
    Trên đĩa, vùng nhớ đó là
    {0x42, 0x6b, 0x61, 0x76,
    0x53, 0x65, 0x63, 0x75,
    0x72, 0x69, 0x74, 0x79, 0}. Nếu hiểu thành 3 biến int, sẽ là 3 biến 0x76616b42, 0x53656375, 0x72697479, nếu hiện dưới dạng string thì thành các xâu trên như ida.
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    whf, sunny and kuqadk3 like this.