Hi, glad to answer. I don't know the language you working with so I just use c# in unity as a case. If you announce a new frame object, just like
Frame myframe = new Frame();
you will see the parameter that building a new frame data needs, for example frameID, frame rate and handlist ( this is the keypoint ). Just build the data and assembly them together level by level, you will get a valid frame data. Then find the LeapServiceProvider script or the same script that your platform uses, and generally there will be a line like
in update and fixedupdate progress. Replace the input of the above function with your own frame data and everything is done.
In the case of offset, you can refer to a build-in function, which is called transformframe ( likely, I can't remember clearly, you can find this function being called before the script inputs the frame data into DispatchUpdateFrameEvent() ) in LeapServiceProvider. This function uses the LeapTransform class function to transform the hand data, finger data and else. And it seems the LeapTransform class provides a function to help you offset a hand data.
Recently I found Leapmotion SDK gives us a class named HandFactory, which could make hand data rebuild much more convenient.