Jump to content

Help Reverse Engineering (Assembly)

LtStaffel

Hello everyone,

 

What's up:

I'm working on a crackme and have gotten a bit stuck.

 

The info:

This is a C++ compiled program, ELF 32-bit.

 

The problem:

The C++ part is what's giving me trouble, I don't know what all the function calls do whereas in C they'd disassemble a bit more cleanly. Radare2 is the only disassembler I've used on it that's actually given human readable function names. Also, I believe I'm looking at classes and objects here? I've never seen this kind of thing before.

 

The disassembly:

I've attached a picture, which is all nice and colorful (<3 Radare2), but there's also a spoiler here with a text version (pictures are the bane of programming help). If you'd like to see the whole thing, I can either link you to the challenge or show you the whole disassembly. If possible though, I'd rather not do either of those because that'd be having you do all the work, which is neither a fun nor a learning experience. I need help with this segment.

 

Text Version:

Spoiler

	    0x08048aee      8d45eb         lea eax, dword [ebp - local_15h]
|      |    0x08048af1      890424         mov dword [esp], eax
|      |    0x08048af4      e867fdffff     call sym.std::allocator_char_::allocator
|      |    0x08048af9      8d45eb         lea eax, dword [ebp - local_15h]
|      |    0x08048afc      89442408       mov dword [esp + local_8h], eax
|      |    0x08048b00      c7442404c48d.  mov dword [esp + local_4h], 0x8048dc4 ; [0x8048dc4:4]=0xca15d618
|      |    0x08048b08      8d45f4         lea eax, dword [ebp - local_ch]
|      |    0x08048b0b      890424         mov dword [esp], eax
|      |    0x08048b0e      e80dfdffff     call sym.std::basic_string_char_std::char_traits_char__std::allocator_char__::basic_string
|      |    0x08048b13      8d45ea         lea eax, dword [ebp - local_16h]
|      |    0x08048b16      890424         mov dword [esp], eax
|      |    0x08048b19      e842fdffff     call sym.std::allocator_char_::allocator
|      |    0x08048b1e      8d45ea         lea eax, dword [ebp - local_16h]
|      |    0x08048b21      89442408       mov dword [esp + local_8h], eax
|      |    0x08048b25      c7442404cc8d.  mov dword [esp + local_4h], 0x8048dcc ; [0x8048dcc:4]=0xaf67b350
|      |    0x08048b2d      8d45f0         lea eax, dword [ebp - local_10h]
|      |    0x08048b30      890424         mov dword [esp], eax
|      |    0x08048b33      e8e8fcffff     call sym.std::basic_string_char_std::char_traits_char__std::allocator_char__::basic_string
|      |    0x08048b38      8d45ec         lea eax, dword [ebp - local_14h]
|      |    0x08048b3b      8d55f4         lea edx, dword [ebp - local_ch]
|      |    0x08048b3e      89542408       mov dword [esp + local_8h], edx
|      |    0x08048b42      8d55f0         lea edx, dword [ebp - local_10h]
|      |    0x08048b45      89542404       mov dword [esp + local_4h], edx
|      |    0x08048b49      890424         mov dword [esp], eax
|      |    0x08048b4c      e83cfeffff     call sym.plouf

 

Picture Version:

Spoiler

disassch25bin.png.1034aa8e001ae0948f8801a2d586bed6.png

 

Thoughts:

As I said, I think I'm looking at classes and/or objects, but I don't quite get it. I also don't think "plouf" is a default C++ function?

 

Thanks in advance!

-LtStaffel

Join the Appleitionist cause! See spoiler below for answers to common questions that shouldn't be common!

Spoiler

Q: Do I have a virus?!
A: If you didn't click a sketchy email, haven't left your computer physically open to attack, haven't downloaded anything sketchy/free, know that your software hasn't been exploited in a new hack, then the answer is: probably not.

 

Q: What email/VPN should I use?
A: Proton mail and VPN are the best for email and VPNs respectively. (They're free in a good way)

 

Q: How can I stay anonymous on the (deep/dark) webzz???....

A: By learning how to de-anonymize everyone else; if you can do that, then you know what to do for yourself.

 

Q: What Linux distro is best for x y z?

A: Lubuntu for things with little processing power, Ubuntu for normal PCs, and if you need to do anything else then it's best if you do the research yourself.

 

Q: Why is my Linux giving me x y z error?

A: Have you not googled it? Are you sure StackOverflow doesn't have an answer? Does the error tell you what's wrong? If the answer is no to all of those, message me.

 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×