1. Си / Говнокод #9073

    +136

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    static BOOL CALLBACK callbackEspecial(
      LPSTR aModuleName,
      DWORD aModuleBase,
      ULONG aModuleSize,
      PVOID aUserContext)
    {
        BOOL retval = TRUE;
        DWORD addr = *(DWORD*)aUserContext;
    
        /*
         * You'll want to control this if we are running on an
         *  architecture where the addresses go the other direction.
         * Not sure this is even a realistic consideration.
         */
        const BOOL addressIncreases = TRUE;
    
        /*
         * If it falls inside the known range, load the symbols.
         */
        if (addressIncreases
           ? (addr >= aModuleBase && addr <= (aModuleBase + aModuleSize))
           : (addr <= aModuleBase && addr >= (aModuleBase - aModuleSize))
            ) {
            retval = _SymLoadModule(GetCurrentProcess(), NULL, aModuleName, NULL, aModuleBase, aModuleSize);
        }
    
        return retval;
    }

    аццкая адресация
    http://mozilla-thunderbird.sourcearchive.com/documentation/1.5.0.10-0ubuntu3/nsStackFrameWin_8cpp-source.html

    Запостил: 63F45EF45RB65R6VR, 10 Января 2012

    Комментарии (12) RSS

    • и да за такие тернарные операторы в условии надо руки отрывать и в попу вставлять я бы переписал так
      bool in_range = addressIncreases
             ? addr >= aModuleBase && addr <= aModuleBase + aModuleSize
             : addr <= aModuleBase && addr >= aModuleBase - aModuleSize;
      
      if (in_range)
      	retval = _SymLoadModule(GetCurrentProcess(), NULL, aModuleName, NULL, aModuleBase, aModuleSize);
      Ответить
      • Обратите внимание
        const BOOL addressIncreases = TRUE;


        или это фальшивый тру?
        Ответить
      • единственное пожалуй можно было бы скобочки добавить
        для наглядности
        bool in_range = addressIncreases
               ? (addr >= aModuleBase && addr <= (aModuleBase + aModuleSize))
               : (addr <= aModuleBase && addr >= (aModuleBase - aModuleSize));
        
        if (in_range)
        	retval = _SymLoadModule(GetCurrentProcess(), NULL, aModuleName, NULL, aModuleBase, aModuleSize);
        Ответить
    • -Да, мамочка, ты классная блядь! Юрка принялся целовать маму взасос…
      Ответить

    Добавить комментарий