The answer to this question really depends on the device type and software version. Many devices today support the ENTITY-MIB for inventory. Within that MIB, the entPhysicalTable provides all of the necessary module details that you want (e.g. entPhysicalName, entPhysicalSerialNum, etc.). However, older versions of code may require you to use different MIBs such as the CISCO-STACK-MIB or OLD-CISCO-CHASSIS-MIB.
The same goes for memory and flash. In general, you will use the CISCO-MEMORY-POOL-MIB and CISCO-FLASH-MIB respectively. However, certain devices may require the CISCO-ENHANCED-MEMPOOL-MIB to properly get the available memory.
There are numerous MIB search tools out there. On Cisco.com, we have the SNMP Object Navigator at http://www.cisco.com/go/mibs/ . I wrote one at http://jaguar.ir.miami.edu/~marcus/snmptrans.html . There are also ones you can find simply by searching with Google.