Advertising

Analyzing code with encrypted modules

  • Looks like my week for asking stupid ABB questions. :party1:


    So, I'm trying to get a handle on the program structure of a set of IRC5s, but my usual method of "find the Entry Point, and follow from there", isn't working. The Main proc consists of a while loop with a call to another Proc called CmdMain. And CmdMain doesn't appear to exist in any of the .MOD or .SYS files in the robot.


    I have a hunch that it's hidden inside an encrypted module, as the only mention of CmdMain elsewhere in the robot is in the MMC_REAL_ROUTINE section of MMC.CFG:

    -name "CmdMain" -hidden


    Which leaves me in a conundrum. I've run into encrypted modules before, but never so near the top of the flowchart. Without any idea of what CmdMain does, or how it calls on the rest of the (many) modules inside this Task. So I'm struggling to figure out how to proceed from here. I suppose I'll have to start from the lower modules and work my way up, inferring which Procs are called from CmdMain, but I won't have any idea what CmdMain is doing, or why. That's going to make this hard to debug.


    (And, no, there's no documentation, and the people who knew these robots are no longer available.)

  • Well, that's the problem -- almost all of the auto-loaded modules are encrypted.


    Just poking around, it looks like at least half the program flow just vanishes into encrypted modules, and I have no idea what any of them are doing.

  • Update.


    Well! After I asked around, I found that these IRC5s had all been programed with an ABB package called IFWC, which I'd never encountered before. Fortunately, someone was kind enough to share the documents they had that outline IFWC for programmers, so now I'm not nearly as lost at sea. Time to start digging....

  • It certainly makes me feel like I'm programming with both hands handcuffed behind my back. Although that may be b/c my usual modus operandi is to take a backup, open it up offline, and start reverse-engineering from the Main() entry point on down.


    Setups that block me from seeing the the full code annoy me. But at least someone wrote a manual for IFWC, which is more than I can say for some setups I've been stuck working with.

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