Can read canister WASM code?

Is it possible for a canister to read its own WASM code?

I want this, because it is reasonable in our project (an onchain package manager) a canister to create its copy (for this need to read WASM).

No, for now this is not possible. Once we have state snapshots it could be doable.