Es geht um folgendes ich möchte ein wenig Reverse Engineering lernen, nur leider ist es schwer den richtig ansatz zu finden und somit ist es schwer zu verstehen was genau Ollydbg macht. Gut einige leichte sachen(JMP, NOP etc.) sind mir klar und paar befehle weiß ich wofür sie sind, jedoch bringt mir das nicht das verständniss was ich haben möchte.
Als beispiel nehme ich den MultiClient im RSRO Client, ich will die Mac-Adresse generieren damit ich kein C10 error. Aus dem Hawk Loader weiß ich das hier der Rote Calll zur funktion mit der Mac Generate Adresse führt. Hoffe dongdong ist nicht sauer.
- 004C9DE5 E8 769BFEFF CALL sro_clie.004B3960
- 004C9DEA 6A 06 PUSH 6
- 004C9DEC 8D4424 48 LEA EAX,DWORD PTR SS:[ESP+48]
- 004C9DF0 50 PUSH EAX
- 004C9DF1 8BCF MOV ECX,EDI
- [color=#ff0000]004C9DF3 E8 689BFEFF CALL sro_clie.004B3960[/color]
- 004C9DF8 A1 50431201 MOV EAX,DWORD PTR DS:[1124350]
- 004C9DFD 8B9B 60100000 MOV EBX,DWORD PTR DS:[EBX+1060]
- 004C9E03 8B08 MOV ECX,DWORD PTR DS:[EAX]
- 004C9E05 8B51 50 MOV EDX,DWORD PTR DS:[ECX+50]
Nun weiß ich das in der dll über Gettickcount die Mac-Adresse generiert wird und die an diese Adresse wieder gecallt wird:
- 004B3960 56 PUSH ESI
- 004B3961 8BF1 MOV ESI,ECX
- 004B3963 0FB786 3E100000 MOVZX EAX,WORD PTR DS:[ESI+103E]
- 004B396A 57 PUSH EDI
- 004B396B 66:8B7C24 10 MOV DI,WORD PTR SS:[ESP+10]
- 004B3970 0FB7CF MOVZX ECX,DI
- 004B3973 8D1401 LEA EDX,DWORD PTR DS:[ECX+EAX]
- 004B3976 3B96 4C100000 CMP EDX,DWORD PTR DS:[ESI+104C]
- 004B397C 7E 17 JLE SHORT sro_clie.004B3995
- 004B397E 68 58A9E600 PUSH sro_clie.00E6A958
- 004B3983 8D4424 14 LEA EAX,DWORD PTR SS:[ESP+14]
- 004B3987 50 PUSH EAX
- 004B3988 C74424 18 00000000 MOV DWORD PTR SS:[ESP+18],0
- 004B3990 E8 D1C06700 CALL sro_clie.00B2FA66
- 004B3995 8B96 34100000 MOV EDX,DWORD PTR DS:[ESI+1034]
- 004B399B 51 PUSH ECX
- 004B399C 8B4C24 10 MOV ECX,DWORD PTR SS:[ESP+10]
- 004B39A0 51 PUSH ECX
- 004B39A1 03D0 ADD EDX,EAX
- 004B39A3 52 PUSH EDX
- 004B39A4 E8 C7D76700 CALL sro_clie.00B31170
- 004B39A9 66:01BE 3E100000 ADD WORD PTR DS:[ESI+103E],DI
- 004B39B0 0FB786 3E100000 MOVZX EAX,WORD PTR DS:[ESI+103E]
- 004B39B7 8BB6 54100000 MOV ESI,DWORD PTR DS:[ESI+1054]
- 004B39BD 66:8B0E MOV CX,WORD PTR DS:[ESI]
- 004B39C0 83C4 0C ADD ESP,0C
- 004B39C3 66:81E1 0080 AND CX,8000
- 004B39C8 83C0 FA ADD EAX,-6
- 004B39CB 66:0BC8 OR CX,AX
- 004B39CE 5F POP EDI
- 004B39CF 66:890E MOV WORD PTR DS:[ESI],CX
- 004B39D2 5E POP ESI
- 004B39D3 C2 0800 RETN 8
Welche übrigens sofort vom client gecallt wird, falls keine Multiclient funktion vorliegt.
Nun das ist ein wenig kompliziert. Ich will hier nicht die lösung oder einen ansatz darauf wissen. Ich will wissen was hier gemacht wird, also im ASM Code bzw in Ollydbg.
Denn im ernst ich finde keine Tutorials mit dem richtigen ansatz die mir dieses wissen vermitteln.