Una mirada rapida...
mov ebx, [ebx+0x0C] ;puntero a LDR
mov ebx, [ebx+0x1C] ;puntero a InLoadOrderModuleList
En realidad no estas moviendo el puntero a InLoadOrderModuleList si no a InInitializationOrderModuleList si haces cuenta, cuantos bytes estas sumando, veraz que no, dejame decirte queno todo lo que la msdn dice debes creer xD.
InInitializationOrderModuleList es como InLoadOrderModuleList pero en orden de inicialización.
http://undocumented.ntinternals.net/UserMode/Structures/PEB_LDR_DATA.htmlSalu2!