Jump to content
Tuts 4 You

Leaderboard

  1. lovejoy226

    lovejoy226

    Full Member+


    • Points

      105

    • Posts

      1,317


  2. jackyjask

    jackyjask

    Full Member+


    • Points

      51

    • Posts

      1,267


  3. Progman

    Progman

    Full Member


    • Points

      40

    • Posts

      407


  4. Asadkhan

    Asadkhan

    Junior+


    • Points

      31

    • Posts

      30


Popular Content

Showing content with the highest reputation since 02/28/2025 in all areas

  1. Since @Washi provided the solution first, you may mark his answer as solved. However, I’d like to share my approach as well for reference. 1) Polynomial Coefficients and Matrix 1. Username - Polynomial Coeffs The code has a function that folds ASCII values into 8 coefficients ( size = 7 ). For "CHESSKING" , we take each character's ASCII and add it to slot in the array. 2. Matrix Build We then build 5 x 5 integer matrix from these 7 coefficients. Each entry is computed via this formula : mat(r,c) = ( coeffs ( r mod 7 ) x ( c + 1)) + ( r + 1 ) ---> All in paranthesses from start has to be to the power of 2. 3. Determinant ( mod 65521 ) We do a row-reduction to find the matrix's determinant, and then take /bmod 65521. 2) Toy Elliptic-Curve Step The code defines a small curve: y2 ≡ x3 +Ax+B (modp), p=1201, A=1,B =1. ( x3 here is actually x to the power of 3 ) We have a base point G = ( 5,116 ) this goes : finalPoint= ECSM (G,detMod) That is, we "add" G to itself ( detMod ) times in elliptic-curve arithmetic. The result is ( X , Y ) . Then we define it with this formula : curveSecret= X+ (Y≪16) 3) LFSR Shuffle We take 64 bits (lowest bits) from curveSecret and feed them into a Linear Feedback Shift Register for 64 rounds, producing a new 64-bit integer lfsrOutput. This step effectively scrambles the bits further. 4) BFS-Based Knight Path The code starts at square E5 on a 10×10 board labeled A..J (files) and 1..10 (ranks). Internally, E5 is (4,4) in 0-based coordinates. For each character in the username, we do: steps= (ASCII of char) mod 5 , then run a BFS for that many expansions. The BFS uses Knight moves (like (2,1), (1,2), etc.) with wrapping if we go off the board. We capture the last enqueued square after those BFS expansions, add that to our path, and repeat for the next character in the username. 5) “Check to the King” There is a King placed on G10 → (6,9) in 0-based coordinates. We look at the final square in our BFS path. If that final square is one knight’s move away from (6,9), we do an extra step: lfsrOutput  =  lfsrOutput⊕0xA5A5A5A5 For "CHESSKING" , the BFS path’s last square does or does not cause this XOR. In our run, it does cause the XOR (i.e., it’s in position to “check the King”). 6) Nibble → Weird SAN Moves We take the final integer (lfsrOutput) and break it into 12 consecutive 4-bit nibbles. For each nibble, we pick a “weird” standard algebraic notation (SAN) chess move from the code’s move table. This yields moves like e2e4, Na3xb5, Qd1h5, etc. 7) Final Serial Part A: The BFS squares (space-separated). A dash ( - ) Part B: The 12 SAN moves from the nibble-based table. Verifying everythin we gathered so far : For "CHESSKING" : E5 I3 C1 A7 G4 C1 C1 I8 E5 G4 After the code determines the King is in check, it XORs the LFSR output with 0xA5A5A5A5 Extract 12 nibbles → map to the weird SAN table. They all turned out to be mostly e2e4, with a couple of different ones in the middle (Bf1c4, d2d4) My final answer which is my Username and Serial Key is :
    6 points
  2. I can only wish you luck in your search 😄
    5 points
  3. Hi! I took a look at it and shame that no one tried to solve it,here is my approach. Basic things i pulled: All four keys must differ. If any two keys are the same string, it shows “All keys must be different.” No key can contain "0@0". If you type a key like "0@0@something", it rejects it. “Erjey” can be used at most once, and if it appears, the fourth chunk of that key must be less than 6. That is, if a key has the substring "erjey", its format is X@Y@erjey@W, and W<6W < 6W<6. The third chunk in each key can be one of three strings: erjey kao tuts4you If you use something else, you get badboy error message. 2.2. Internally, a Linear Solver Digging deeper, i discovered a set of classes (d, e, j, etc.) that build a system of linear equations or inequalities. Each key of the form X@Y@{erjey|kao|tuts4you}@W is taken to mean X⋅x+Y⋅yRELWX , where the “relation” REL depends on the keyword: erjey → equality (=). kao → some inequality (≥ or ≤) depending on puzzle logic. tuts4you → the other inequality. From hints in the code and trial tests, we saw that: erjey is effectively “=”. For this puzzle’s code, kao ended up being “≥” and tuts4you was “≤” (the code flips them). Finally, after the solver ensures a feasible solution for (x, y), it calculates an “objective value” from the Name field, which must also be in the format A@B (two doubles). The code uses: objective=A×x+B×y If that objective is exactly 44 000, it shows: MessageBox.Show("Valid combination!"); That is the central condition: Ax+By=44000. 3. Constructing a Solution To guarantee the solver yields 44,000, we needed to pick (x, y) and (A,B) so that: A×x+B×y=44000. Additionally, we had exactly four constraints (the “Keys”) to pin down x and y. 3.1. The Simplest Trick: Set x=y One common approach: force x=y=c for some integer c < 6 (because the puzzle disallows “erjey@W” if W >= 6). Then we just need: (A+B)×c=44000 then this becomes A+B = 44000 / c Hence, pick any c in [1..5], and pick A + B = 44000 / c. 3.3. Example Name Then to satisfy (A+B) c=44000, choose a Name that splits as A@B with A+B=44000/c. For instance: Let c = 4. Then A+B must be 11000. We pick A = 5500 and B = 5500. So Name = "5500@5500". 3.4. Putting It All Together And if im right and if this is the keygen you have asked for : keygen.py
    5 points
  4. Among the anti-debug techniques, there's an interesting one worth noting. A dummy thread is created and then it calls Sleep(0x32). (The goal is for the created thread to be detected by tools like x64dbg.) Then, it calls NtQueryObject with the ObjectBasicInformation class using the thread handle. If the returned HandleCount is greater than 1, it determines that debugging is in progress. void dummy() { Sleep(8000); } bool CheckCreateThreadHandleCount() { HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)dummy, NULL, 0, NULL); if (hThread == NULL) { return false; } Sleep(0x32); PUBLIC_OBJECT_BASIC_INFORMATION objInfo; NTSTATUS status = NtQueryObject(hThread, ObjectBasicInformation, &objInfo, sizeof(objInfo), NULL); if (!NT_SUCCESS(status)) { CloseHandle(hThread); return false; } std::cout << "Handle Count: " << objInfo.HandleCount << std::endl; if (objInfo.HandleCount > 1) { CloseHandle(hThread); return true; } CloseHandle(hThread); return false; }
    4 points
  5. Time spent: 5 minutes from start to typing this message. It's a great example of how a compromised older version of the software (like your crackme v1.0) leads to a complete compromise of the new and improved protection. I hope to find some time on Sunday or early next week to make a writeup. But my spare time is limited these days, I apologize for that in advance.. If someone else wants to make a tutorial, I'd love to see that!
    4 points
  6. I suggest you think about this long and hard. What could possibly go wrong? I'll take the bonus points..
    4 points
  7. @Teddy Rogers This is getting out of hand, isn’t it?
    3 points
  8. View File ByUndefined Protector ByUndefined Protector Anti Debugger Anti Dump Anti Tamper Anti Memory Anti ILDasm Resources Compress String Encrypt ControlFlow Virtualization Submitter Leopar36 Submitted 03/11/2025 Category UnPackMe (.NET)  
    3 points
  9. oh this is just.. khodam, let me c&paste @lovejoy226 reply is big caps : THERE COULD BE NO FREE SOFTWARES THAT YOU WANT TO GET, SO THAT YOU HAVE TO BUY A SOFTWARE OR GIVE UP.
    3 points
  10. You could still tell us how you solved it. There's always something to learn..
    3 points
  11. Could you upload it to mediafire, mega or google drive? i am not from china and i have not been able to download your examples. If you can upload the plugin and the protected example would be great, thank you.
    2 points
  12. I have also released a simple demo WL plugin. This is a protected example. _released.zip
    2 points
  13. 2 points
  14. You may want to revise your keygenme challenge, the challenge is trivial to solve (5 minutes work) Here are some working serials: Explanation:
    2 points
  15. @mdj friend please make a tutorial for the encrypted .GEM and .EXE file's 'Play Password' revealer it will be great to have in the 'tuts4you.com' site pls be kind and share the knowledge you have
    2 points
  16. This DLL contains no keys or Asprotect code so does not need to deal with any cryptography or obfuscation and no original source has been released exports are.. The original DLL would contain code in all of these functions to validate All this DLL does is use the same function names with no code other than to return a valid boolean These are the default modes set in this DLL So if you replace the original DLL with this one then when a protected app calls any of these functions it would receive back a valid response without actually doing any checks at all If that doesn't make sense to you then just look at the code and you will see there really isn't much to it
    2 points
  17. cryptlex.com supports MACOS FREE tier : 10 Activations 200 Trial Activations nothing tested
    2 points
  18. Do you even read the replies that are written to you?
    2 points
  19. There's too much junk code and it's located in the wrong places. IDA ignores most of it and the rest can be NOP-ped out in huge blocks. The crackme would be much harder, if the useful VM handler instructions were placed in between the junk code.
    2 points
  20. I can't remember anything about this, it was so long time ago. From what I could see it has bugs: private static string #l(string A_0, uint A_1, uint A_2) { ... StringBuilder stringBuilder = new StringBuilder { Length = 12 }; for (int j = 0; j < 11; j++) { int num2 = (int)(((long)(10 - j + 1) * (long)((ulong)A_1) * (long)((ulong)A_2) + (long)((ulong)num)) % (long)length); stringBuilder[j] = (char)((byte)((long)((int)(A_0[num2] + A_0[j % length] + A_0[(int)((long)j * (long)((ulong)num) % (long)length)]) + j) + (long)((ulong)num))); } stringBuilder[11] = '\0'; text = stringBuilder.ToString(); num2 = 0xFFFFFFFC so will thrown an error!
    2 points
  21. View File Eclipse Runtime Obfuscator Hey everyone, I’m sharing an UnpackMe challenge that combines VMProtect packing with runtime function obfuscation using Eclipse Runtime Obfuscator. This should be an interesting challenge for those who enjoy working with dynamic obfuscation and anti-debugging techniques. Protection Details: VMProtect is used for basic packing, with import protection and anti-debug enabled. Eclipse Runtime Obfuscator dynamically obfuscates function execution, making dumped analysis and debugging difficult. Function code is relocated to a new memory region at runtime and accessed through vectored exception handling (VEH) instead of direct execution. Eclipse Runtime Obfuscation Features in this UnpackMe: Exception-Based Execution Handling – Execution is redirected via VEH, preventing direct tracing. Junk Code Injection – Adds meaningless instructions to mislead disassembly and make static analysis harder. Dynamic Function Relocation – Functions are moved at runtime, disrupting predictable memory access. Control Flow Obfuscation – Execution flow is broken up and redirected via exception handling. Anti-Debugging Protection – The binary throws access violations and illegal instructions to interfere with debuggers. Goals: Unpack the binary (remove VMProtect and restore the original imports). Defeat runtime function relocation and deobfuscate the function logic by resorting the original function code. Reconstruct a clean, runnable (optional) version of the executable with original control flow. Explain how you unpacked and fixed the program, detailing the approach to defeating VEH-based execution and restoring the function code. Bonus points if you can crack the password in the console application demo code. Notes: VMProtect is only used for packing, not virtualization. The main challenge comes from Eclipse’s runtime function relocation and exception-based redirections. Dumping the process isn’t enough, as function code is dynamically obfuscated in memory. Would love to see a write-up on defeating the VEH-based execution and restoring the original function code! More information can be found about the Eclipse Runtime Obfuscator project on GitHub. Looking forward to seeing your approaches. Good luck and happy reversing! Submitter C5Hackr Submitted 03/03/2025 Category UnPackMe  
    2 points
  22. Touché! 😆 While I would have loved to see a full function rebuilder in action, I did basically say/hint at by any means necessary, so fair play on taking the most efficient route. This runtime obfuscation was really just meant to be a cool PoC for runtime-based protection, rather than an impenetrable shield. The idea was to make static analysis a pain and force dynamic reversing, but yeah—if the code exists in a readable state, even for a moment, it’s game over. Still, I appreciate you taking a look at it. If I ever cook up something more annoying, I’ll be sure to let you know. 😈
    2 points
  23. You actually solved it for me - see the quote in my previous post. The protection is pointless if the original code is present in it's original place even for a short period of time. I just needed to dump the process memory at the right time. Could I make a tool to rebuild relocated functions? Sure, I'd need to find num_ObfuscatedFunctions and ObfuscatedFunctions and then do the reverse of RelocateFunction for each of them. But I'm lazy.
    2 points
  24. Bravo! 🎉 Impressive work reversing through the layers and pulling out the password check routine so cleanly. I’m curious—how did you approach it? Did you focus on bypassing VEH handling and dumping the relocated functions, or did you go straight for unpacking it statically rather than dumping it? Also, any pain points, or was it a straightforward crack? Really appreciate you taking the time to check it out! Looking forward to your breakdown. 🔥
    2 points
  25. I want it to be like Enigma or Win License and be free Also, I don't have access to the program source.
    2 points
  26. https://forum.tuts4you.com/topic/45127-asprotect-ske-256-sdk-sample-x32/#findComment-223076 https://forum.tuts4you.com/topic/45127-asprotect-ske-256-sdk-sample-x32/#findComment-223157
    2 points
  27. Great! Based on the sample you provided, I successfully built x86/x64 binary files. aspr_ide_msvc.zip
    2 points
  28. a small one built in assembly aspr_ide.rar
    2 points
  29. I recommand the people to use this protection because it's very good. The protection is advanced like Pelock but very good. Only a real reserver can do it But it needs much times to be able handle it. UnpackMe.Obsidium.1.69b1.x86_unprotect.rar
    2 points
  30. I will be adding more courses https://pan.huang1111.cn/s/v8XwSE Pass:revteam.re
    1 point
  31. I want a software protector to programs on Mac, similar to WinLicense or Enigma. i want protect mac OS application with license or key plz help
    1 point
  32. https://winscp.net/eng/download.php https://eddynet.cz:9865 u: learn p: 4EKS9umUYme3WAZrC /Courses/ReverseEngineering This is the only guy who backup my collections
    1 point
  33. Example of how to use it: ASProtect SKE 2.56 SDK Sample (x32)
    1 point
  34. @boot and @TeRcO What and how do we use this dll for? Regards. sean.
    1 point
  35. @markaz.jamal : ur shared link https://pan.huang1111.cn/s/v8XwSE i m not able to download any course, it is giving source link error. Please do the needful.
    1 point
  36. check this all password for his rar archive Theillegalhacker7@@@Pro Theillegalhacker@@@7 Theillegalhacker7@@@ Theih7@@@ Theillegalhacker7Academy Theih7@@@Pro Theillegalhacker7@@@Pro##7
    1 point
  37. Unpackers tools - source code C# My source code: https://gitlab.com/CodeCracker https://github.com/CodeCrackerSND https://bitbucket.org/CodeCrackerSND/ I will NOT share (anymore) the rest of my tools!
    1 point
  38. Why the download link is not working whats the password
    1 point
  39. @14yoKID hey, man. can you send me the log? Regards. sean.
    1 point
  40. @14yoKID How to find the conditional jump after the VMProtectSetSerialNumber function? Regards. sean.
    1 point
  41. @StarrySky Can you please post a video if you successfully make it run? Regards. sean.
    1 point
  42. @HostageOfCode Is this option implemented with the vmp license manager that you linked? Regards. sean.
    1 point
  43. @StarrySky Can you make this serial locked one run? I have zipped a wrong serial.txt and protected executable to make a challenge. hashgen.vmp.serial.locked.zip If you edit the first character of the serial.txt file, this executable will run. or you have to find the test and conditinal jump instructions which are virtualized after VMProtectSetSerialNumber function. this function returns 2 which means that the serial is invalid, when it returns 0, this executable will run. And I have a question about how to use a vmprotect feature. I protected a procedure called "OnBnClicked..." with the options above. and when I clicked the button when it runs, its shows this message and is terminated. how to use this option properly? Regards. sean.
    1 point
  44. @boot How to bypass the x64 target like you had done? Regards. sean.
    1 point
  45. @Sh4DoVV How to bypass x64 version of enigma constant used target? Do we have to change CRCs and then change hwid to the given one like changing x86 version of it's hwid using @CodeExplorer's EnigmaHardwareID Tool and scripts for x86 targets? Many thanks in advance. Regards. sean.
    1 point
  46. @boot How to bypass the constant using hwid lock? Regards. sean.
    1 point
  47. Looks like the rumors of leaked VMProtect sources were true. Now they are available for everyone. It was leaked on certain Chinese sites, so use your brain and caution and don't run random files outside of VM... EDIT1: Please note that "intel.cc" and "processor.cc" are missing, so the native code virtualization part is most likely non-working. Thanks to @boot and @lawl3ss and Twitter wisdom for the info! EDIT2: Link changed to anonfiles.
    1 point
  48. How to write a plugin for ollydbg the last version?
    1 point
  49. Hi all, I created a patch in delphi which can help people who want to know how his works and that can improve the source ! ! I intend to work on the combobox to select application and patch directly I add a crackme as example patch+source+crackme. patch_and_crackmesource.rar
    1 point
×
×
  • Create New...