12 votes

How do I reverse engineer .so files found in android APKs?

Use android-ndk, https://developer.android.com/ndk/downloads/index.html. You can use the toolchains inside the ndk to perform the type of disassembling you want to. For e.g. if I decompile an apk and ...
9 votes
Accepted

Protect data stored in binary

I would start with not have critical strings in memory in linear manner Instead each character can be offseted by some offset like by table mixing all the strings together. For example you got ...
  • 1,384
9 votes
Accepted

How to deobfuscated javascript?

UPDATE Based on @ws's comment and @nderscore's code, use this JSFiddle to decode the thing. To find the password that this script asks for, you can use a simple debugging trick. Go to JSFuck and ...
  • 1,283
8 votes

How are obfuscators detected?

I wouldn't say that obfuscation detection is strictly related to entropy. When I detected obfuscated code areas I did it by simple statistical comparison of probabilities of appearances of specific ...
  • 8,125
8 votes

Best way to protect source code of .exe program running on Python?

There are ways to make a Python program hard to reverse engineer. Its' possible but you need to fiddle with the Python source code (which is written in C) and compile a special build for your purpose. ...
  • 5,940
7 votes
Accepted

Is there a name for this kind of "obfuscation" for the machine code from C++?

Unfortunately it is not enough code to say exactly what it is, but, as @0xec said, it looks very much like control flow flattening. Usually such kind of code transformations are done automatically ...
  • 8,125
7 votes

Why doesn't this retn instruction return from the function?

The address of sub_1313cba4 is moved to PC/IP but not directly, as this cannot be done. It is done by pushing the address to the stack and relying on the fact that retn will get what's on the top of ...
7 votes
Accepted

Why do obfuscators remove line numbers, and can I safely leave them in?

Stripping line numbers has a minimal impact on the difficulty of reverse engineering code. If it is causing you problems, I would recommend disabling it. Col-E's answer is a red herring because it is ...
  • 1,972
6 votes

Protect data stored in binary

There are a number of ways to accomplish what you've stated. Generally, more robust techniques, while affording a higher level of protection, will also put more burden on the programmer creating the ...
  • 2,511
6 votes

What is a good tools to reverse the effects of Minify on JavaScript?

I recently tried http://www.jsnice.org/ on 50+KB of a single minified JavaScript file containing lots of dynamic modification code that Cordova's runtime refused to execute (for an app targeted at ...
6 votes

Determining CRC algorithm (16 bit?) over RS-232

I figured it out! Some of the comments on this web site made me go back and think harder - actually to think differently. I thought that I should post the analysis that I did on these messages to try ...
5 votes
Accepted

AirPlay Mirroring decryption (FairPlay)

I have spent some time to look into Apple's airplay mirroring support, which is encrypted by fairplay protocol. After investigating serveral existing commercial applications I have finally managed to ...
  • 66
5 votes

Writeup of reverse engineering VM based obfuscation

Here is a pretty old challenge with, among other stuff, a VM in the end. You have both the write-ups of many candidates, and the official write-up of the author, with explanations as how to do such VM-...
  • 565
5 votes
Accepted

How to obfuscate x86 assembly code?

You should not confuse "code protection" and "code obfuscation". "Code protection" techniques target in recognizing code modifications (you mention a checksum) and take suitable means like crashing or ...
  • 1,924
5 votes

Is there a name for this kind of "obfuscation" for the machine code from C++?

Here's a blog post describing this technique in a little more detail as well as some hints on how to undo it: https://blog.quarkslab.com/deobfuscation-recovering-an-ollvm-protected-program.html EDIT ...
  • 35.5k
5 votes
Accepted

Obfuscated code analysis - can unused variables be ignored?

This might be true that those variables are added only to confuse analysis but remember that in Javascript there are so many ways to access the variable that I would take such info from an automated ...
5 votes

Jump in the middle trick

Yes, this is indeed possible to employ consistently throughout the entire assembly listing, making manual analysis or adjustments a pain. Disassemblers are often divided into two categories: linear ...
  • 11.5k
5 votes

Trace Method Calls in .NET/C# Binary

that instrumentation is not easily possible because of JIT compilation of IL instructions. Well it's actually the opposite. Tracing methods is quite easy - it would be difficult if we would like to ...
5 votes
Accepted

Stack-pointer analysis failed

When I assembled the code, the offending instruction was: 0x6c 40 ff d1 call rcx You will need to use Change Stack Pointer command in IDA to fix this in disassembly. As ...
4 votes
Accepted

How to start learning reverse engineering to eventually help exploiting of modern consoles like Xbox One, PS4?

Some things you will inevitably have to know at some degree to be able to reverse engineer Game Consoles: Learn a lower level language such as C or C++. Most, if not all, Console games, modern and ...
  • 158
4 votes

How do I reverse engineer .so files found in android APKs?

You can also reverse-engineer APK files directly on an android device. Java part: Show Java .so files: Android disassembler. (Disclaimer: I 'm the developer) Version 1.4.2 release. Android-...
4 votes

How do I reverse engineer .so files found in android APKs?

You can also try the Snowman tool: https://derevenets.com/. Snowman is a native code to C/C++ decompiler It supports ARM, x86, and x86-64 architectures as specified on their website.
4 votes

Which virtualized target is recommended for newbie on vm-obfuscation?

You should take a look at crackmes.de, especially level 6, like this one, or this one.
  • 2,496
4 votes

How does PeID calculate entropy?

This is exactly a problem I dealt with several years ago because we also wanted to implement a close-as-possible solution for a project formerly based on PeID. Fortunately, in those days I found an ...
  • 51
4 votes

Any good deobfuscators for java?

Proguard's "optimisation" stage results in deobfuscating junk as I wrote up here - http://www.surrendercontrol.com/2016/03/using-proguard-to-deobfuscate-code.html. Also, Caleb Fention's Simplify ...
4 votes
Accepted

Distribution of malware obfuscation types

Unfortunately it seems so that there are no existing publications/statistics from av vendors. Reffered to [A] and the mentioned entropy analysis, 90% of the used samples are obfuscated by a ...
  • 1,237
4 votes
Accepted

reverse javascript crackme encryption method algorithm

To extend on EWD-0- about the reversibility of RC4 here's how I tried it: From your actual code and reversing it a little to get "input128" encoded: arr = [99, 116, 115, 37, 16, 120, 211, 90, 197, ...
  • 156
4 votes

Exe protection by TLS callback, trying to understand the behaviour

It is an old anti-debugging trick to use the TLS callback. The code in the TLS gets executed before the executables entry point and the debugger gains control. This allows the TLS to check for the ...
  • 41
4 votes

How to deobfuscate native Android library obfuscated with OLLVM?

You're in luck; I wrote an article about that last year. I didn't know at the time that the obfuscator in question was Obfuscator-LLVM, but indeed, it was (albeit a version that was integrated into ...
  • 8,224
3 votes
Accepted

Debugging Win32.Upatre - why does Ollydbg fail to analyze this?

About the "??3@YAXPAX" calls, it is called Name Mangling, take a look at this thread for more explanation. "YAXPAX" calls are actually the delete C++ operator. About the __set_app_type, ...
  • 578

Only top scored, non community-wiki answers of a minimum length are eligible