рдЗрд╕ рд╕рдкреНрддрд╛рд╣, NSA (
рдиреЗрд╢рдирд▓ рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рдПрдЬреЗрдВрд╕реА ) рдиреЗ рдЕрдЪрд╛рдирдХ рдорд╛рдирд╡рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрд╣рд╛рд░ рдмрдирд╛рдпрд╛, рдЬреЛ рдЕрдкрдиреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдврд╛рдВрдЪреЗ рдХреЗ рд╕реНрд░реЛрдд рдЦреЛрд▓ рд░рд╣рд╛ рд╣реИред рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд╕рдореБрджрд╛рдп рдиреЗ рдмрдбрд╝реЗ рдЙрддреНрд╕рд╛рд╣ рдХреЗ рд╕рд╛рде рдирдП рдЦрд┐рд▓реМрдиреЗ рдХреА рдЦреЛрдЬ рд╢реБрд░реВ рдХреАред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реИ, рдЬреЛ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдЬреИрд╕реЗ рдХрд┐ рдЖрдИрдбреАрдП рдкреНрд░реЛ, рдЖрд░ 2 рдФрд░ рдЬреЗрдИрдмреА рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдЙрдкрдХрд░рдг рдХреЛ Ghidra рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреЗрд╢реЗрд╡рд░ рд╕рдВрд╕рд╛рдзрди рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЫрд╛рдкреЛрдВ рд╕реЗ рднрд░реЗ рд╣реЛрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдерд╛: рд╣рд░ рджрд┐рди рд╕рд░рдХрд╛рд░реА рд╕рдВрдЧрдарди рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЦреБрдж рдХреЛ рдПрдХ рдкреЗрд╢реЗрд╡рд░ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░ рдФрд░ рдореИрд▓рд╡реЗрдпрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдореИрдВрдиреЗ рдПрдХ рдпрд╛ рджреЛ рд╕рдкреНрддрд╛рд╣ рдмрд┐рддрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЯреВрд▓ рдХреА рдкрд╣рд▓реА рдЫрд╛рдк рд╣рд╛рд╕рд┐рд▓ рдХреАред рдореИрдВрдиреЗ disassembly рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рд╛ рдЦреЗрд▓рд╛ рдерд╛ рдФрд░ рдЙрдкрдХрд░рдг рдХреА рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдерд╛ред рд▓реЗрдЦреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ, рдореИрдВ Ghidra рдРрдб-рдСрди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдБрдЧрд╛, рдЬреЛ рдХрд╕реНрдЯрдо рдкреНрд░рд╛рд░реВрдк рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ CTF рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдврд╛рдВрдЪрд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдХрд╛рдо рдЪреБрдирд╛ рд╣реИ, рдореИрдВ рд▓реЗрдЦ рдХреЛ рдХрдИ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рддреЛрдбрд╝реВрдБрдЧрд╛ред
рдЗрд╕ рднрд╛рдЧ рдХреЗ рдЕрдВрдд рддрдХ рдореБрдЭреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдиреНрдпреВрдирддрдо рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ, рдЬреЛ WebAssembly рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА disassembler рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдЧрд╛ред
рдЪрд▓рд┐рдП рдХрд╛рд░реНрдп рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рд╕реБрд░рдХреНрд╖рд╛ рдХрдВрдкрдиреА рдлрд╛рдпрд░рдИрдИрдИ рдиреЗ рд╕реАрдЯреАрдПрдл рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреА рдореЗрдЬрдмрд╛рдиреА рдХреА рдереА, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдлреНрд▓реЗрдпрд░-рдСрди рдерд╛ред рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рджреМрд░рд╛рди рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрд╛рд░рд╣ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдерд╛, рдЬреЛ рд░рд┐рд╡рд░реНрд╕-рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереЗред рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡реЗрдм-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдиреБрд╕рдВрдзрд╛рди рдХрд░рдирд╛ рдерд╛, рдЬрд┐рд╕реЗ рд╡реЗрдмрдПрд╕реНрдкреНрд░реЗрдо рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкреНрд░рд╛рд░реВрдк рд╣реИ, рдФрд░ рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╣реА рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИред рдЪреБрдиреМрддреА рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдХрдИ рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд╡реЗ рдЧрд┐рддреБрдм рдФрд░ рдЬреНрдЮрд╛рдд рдЕрдкрдШрдЯрди рд╕реЗ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереЗ, рдЬреИрд╕реЗ рдХрд┐ рдЖрдИрдбреАрдП рд╕рдорд░реНрдердХ рдФрд░ рдЬреЗрдИрдмреАред рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ, рдореИрдВ рдХреНрд░реЛрдо рдкрд░ рд░реЛрдХ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ WebAssembly рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ disassembler рдФрд░ рдбреАрдмрдЧрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдЧрд┐рджреНрдзрд╛ рдХреЗ рд╕рд╛рде рдЪреБрдиреМрддреА рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИред рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдкрдиреЗ рдЪрд░рдгреЛрдВ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрднрд╡ рдЬрд╛рдирдХрд╛рд░реА рджреВрдВрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╕рд╛рдзрди рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдХреБрдЫ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рд╣реИред
рдореИрдВ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдХрд╛рд░реНрдп flareon5 рдЪреБрдиреМрддреА
рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╡рд╣рд╛рдБ рдлрд╝рд╛рдЗрд▓ 05_web2point0.7z рд╣реИ: рд╕рдВрдЧреНрд░рд╣ рдПрдХ рдбрд░рд╛рд╡рдирд╛ рд╢рдмреНрдж
рд╕рдВрдХреНрд░рдорд┐рдд рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдбред рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рддреАрди рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ: index.html, main.js рдФрд░ test.wasmред рдЖрдЗрдП рдПрдХ рдмреНрд░рд╛рдЙрдЬрд░ рдореЗрдВ рдлрд╛рдЗрд▓ рдЗрдВрдбреЗрдХреНрд╕ред рдЦреЛрд▓реЗрдВ рдФрд░ рд░рд┐рдЬрд▓реНрдЯ рджреЗрдЦреЗрдВ:

рдЦреИрд░, рдпрд╣реА рдореИрдВ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред рдЖрдЗрдП html рдЕрдзреНрдпрдпрди рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЦрд╛рд╕рдХрд░ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЪреБрдиреМрддреА рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред Html рдХреЛрдб рдореЗрдВ main.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
<!DOCTYPE html> <html> <body> <span id="container"></span> <script src="./main.js"></script> </body> </html>
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдлрд╝рд╛рдЗрд▓ test.wasm рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ WebAssembly рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдпрд╣ url рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ "q" рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╡рд┐рдзрд┐ рдорд┐рд▓рд╛рди рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИред рдпрджрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЧрд▓рдд рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдореЗрдВ рдКрдкрд░ рджрд┐рдЦрд╛рдИ рдЧрдИ рдЫрд╡рд┐ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ, рдлрд╛рдпрд░рдЖрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬрд┐рд╕реЗ "рдкреВ рдХрд╛ рдвреЗрд░" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
let b = new Uint8Array(new TextEncoder().encode(getParameterByName("q"))); let pa = wasm_alloc(instance, 0x200); wasm_write(instance, pa, a); let pb = wasm_alloc(instance, 0x200); wasm_write(instance, pb, b); if (instance.exports.Match(pa, a.byteLength, pb, b.byteLength) == 1) {
рдХрд╛рд░реНрдп рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреИрд░рд╛рдореАрдЯрд░ q рдХрд╛ рдорд╛рди рдЦреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди "рдореИрдЪ" рд░рд┐рдЯрд░реНрди "рдЯреНрд░реВ" рдмрдирд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдлрд╝рд╛рдЗрд▓ test.wasm рдХреЛ рдбрд┐рд╕рд╛рдЗрдб рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдореИрдЪ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдШрд┐рджреНрд░рд╛ рдореЗрдВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдореБрдЭреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдерд╛рдкрдирд╛ рдХреЛ (рдФрд░)
https://ghidra-sre.org/ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬ рдЬреЗрдбреАрдХреЗ рдФрд░ рдЬреЗрдЖрд░рдИ рдХреЛ 11 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реИред
рдЖрдЗрдП рдирдИ рдЧрд╝рд┐рджреНрд░рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ (
рдлрд╝рд╛рдЗрд▓-> рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ ), рдФрд░ рдЗрд╕реЗ "рдПрдордПрдо" / рдХрд╣реЗрдВ

рдлрд┐рд░ рдлрд╝рд╛рдЗрд▓ test.wasm (
рдлрд╝рд╛рдЗрд▓ тЖТ рдЖрдпрд╛рдд рдлрд╝рд╛рдЗрд▓ ) рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЧрд┐рджреНрдз рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддрд╛ рд╣реИ

рдЦреИрд░, рдпрд╣ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдпрд╣ рдкреНрд░рд╛рд░реВрдк рдХреА рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЛ рдбрд┐рд╕рд╛рдЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рдХрд╛рд░реНрдп рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рд╢рдХреНрддрд┐рд╣реАрди рд╣реИред рдЕрдВрдд рдореЗрдВ рд╣рдо рд▓реЗрдЦ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЖрдП рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦреЗрдВ, рдЬреЛ wasm рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рдРрдб-рдСрди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдпреБрдХреНрдд рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ: GhidraAdvancedDevelopment рд╕реНрд▓рд╛рдЗрдбред рдореИрдВ рдмреНрд▓реЛ-рдмрд╛рдп-рдмреНрд▓реЛ рд╡рд┐рд╡рд░рдг рджреЗрддреЗ рд╣реБрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрдб-рдСрди рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╣рдг рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЧреНрд░рд╣рдг рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рд╕рд╛рд░рд╛ рдЕрдиреБрднрд╡ 2012 рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рджреЛ gdx рдЧреЗрдореНрд╕ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИред рджрд░реНрдж рдФрд░ рдкреАрдбрд╝рд╛ рд╕реЗ рднрд░реЗ рджреЛ рд╕рдкреНрддрд╛рд╣ рд╣реЛ рдЧрдП рдереЗ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рд╕реЗ рдорд┐рдЯрд╛ рджрд┐рдпрд╛ред 7 рд╕рд╛рд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рдж рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реИред
рдЖрдЗрдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
рд╕рд╛рдЗрдЯ рд╕реЗ рдЧреНрд░рд╣рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред
рдлрд┐рд░, рдЧрд┐рджреНрдз рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
рдЧреЛрдЯреЛ рдЧреНрд░рд╣рдг
рд╕рд╣рд╛рдпрддрд╛ тЖТ рдирдпрд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдиреВ
рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ , рдмрдЯрди
рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ / рдПрдХреНрд╕рдЯреЗрдВрд╢рди / рдЧреНрд░рд╣рдг / GhidraDev / рд╕реЗ GhidraDev.zip рдЪреБрдиреЗрдВред рдЗрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред рд╡рд┐рд╕реНрддрд╛рд░, рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдиреВ рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЧреНрд░рд╣рдг рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдФрд░ рд╡рд┐рддрд░рдг рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдбреЙрдХреНрд╕ рд╕реЗ рдЖрддрд╛ рд╣реИ, рдирдП рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдПрдВ
- рд▓реЛрдбрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВред рд▓реЛрдбрд░ рдХреЛ рдХреНрд▓рд╛рд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП AbstractLibrarySupportLoader ред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдбреЗрдЯрд╛ рдХреЛ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ
- рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░реЗрдВред рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдПрдмреНрд╕реНрдЯреНрд░реИрдирд▓ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдпрд╣ рд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдиреЛрдЯреЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рд╕рдордЭрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ)
- рдкреНрд░реЛрд╕реЗрд╕рд░ рдЬреЛрдбрд╝реЗрдВред рдШрд┐рджреНрд░рд╛ рдореЗрдВ рдПрдХ рдЕрдореВрд░реНрддрди рд╣реИ: рдкреНрд░реЛрд╕реЗрд╕рд░ред рдпрд╣ рдЖрдВрддрд░рд┐рдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрджреЗрд╢ рд╕реЗрдЯ, рдореЗрдореЛрд░реА рд▓реЗрдЖрдЙрдЯ рдФрд░ рдЕрдиреНрдп рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред
рдЕрдм, рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИрдВ, рддреЛ рдореЙрдбреНрдпреВрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдЧреНрд░рд╣рдг рд╡рд┐рд╕реНрддрд╛рд░ GhidraDev рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕
рдлрд╝рд╛рдЗрд▓-> рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдиреВ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд╣реА рд╣реИред

рдЬрд╛рджреВрдЧрд░ рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рди рдШрдЯрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╡рд░реНрдгрд┐рдд рдерд╛, рд╣рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: рд▓реЛрдбрд░ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХред

рд╡рд┐рдЬрд╝рд╛рд░реНрдб рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рднрд╛рдЧреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрдВрдХрд╛рд▓ рдмрдирд╛рддрд╛ рд╣реИ: рдлрд╝рд╛рдЗрд▓ WasmAnalyzer.java рдореЗрдВ рд░рд┐рдХреНрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдХ, рдлрд╝рд╛рдЗрд▓ WasmLoader.java рдореЗрдВ рдЦрд╛рд▓реА рд▓реЛрдбрд░ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / рдбреЗрдЯрд╛ / рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рднрд╛рд╖рд╛ рдХрдВрдХрд╛рд▓ред

рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕реЗ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрдЯ рдХреНрд▓рд╛рд╕рд╕реБрдкрд░рд╕реНрдкреЛрд░реНрдЯрд▓реЙрд▓реНрдбрд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдореЗрдВ рдУрд╡рд░рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ:
- getName - рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рд▓реЛрдбрд░ рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Ghidra рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЛрдбрд░ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП
- рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛, рддрдм findSupportedLoadSpecs - рдХреЙрд▓рдмреИрдХ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕ рдХреЙрд▓рдмреИрдХ рд▓реЛрдбрд░ рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдлрд╛рдЗрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ рдХреНрд▓рд╛рд╕ рд▓реЛрдбрд╕реНрдкреАрдХ рдХрд╛ рд░рд┐рдЯрд░реНрди рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯ рдмрддрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдлрд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рд▓реЛрдб - рдХреЙрд▓рдмреИрдХ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рджред рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рд▓реЛрдбрд░ рдкрд╛рд░реНрд╕ рдлрд╛рдЗрд▓ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧрд┐рдбреНрд░рд╛ рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ
рдкрд╣рд▓рд╛ рдФрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ getName рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рд▓реЛрдбрд░ рдХрд╛ рдирд╛рдо рджреЗрддрд╛ рд╣реИ
public String getName() { return "WebAssembly"; }
рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рд╣реИ findSupportedLoadSpecsред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдпрд╛рдд рдХреЗ рджреМрд░рд╛рди рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд▓реЛрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЕрдЧрд░ рдпрд╣ рд▓реЛрдб рдХрд░рдиреЗ
рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛ рдХреА рдСрдмреНрдЬреЗрдХреНрдЯ рд░рд┐рдЯрд░реНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╡рд┐рдзрд┐ рд╣реИ, рддреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд┐рд╕ рдХреЛрдб рдХреЛ
рдбрд┐рд╕рд╛рдЗрдб рдХрд░реЗрдЧрд╛ред
рдкреНрд░рд╛рд░реВрдк рд╕рддреНрдпрд╛рдкрди рд╕реЗ рд╡рд┐рдзрд┐ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣
рдХрд▓реНрдкрдирд╛ рд╕реЗ рд╣реИ , wasm рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрд╣рд▓реЗ рдЖрда рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ "\ 0asm" рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рд╣реЗрдбрд░ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреНрд▓рд╛рд╕ рд╡рд╛рд╢реЗрдорд░ рдмрдирд╛рдпрд╛, рдЗрдВрдЯрд░рдлрд╝реЗрд╕
рд╕реНрдЯреНрд░рдХреНрдЪрд░рдХреЙрдиреНрд╕рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЬреЛ рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рд╡рд╛рд╢рдорд╣реЗрдВрдбрд░ рдХрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░
рдмрд╛рдЗрдирд░реАрд░рдПрдбрд░ - рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдмрд╛рдЗрдирд░реА рд╕реЛрд░реНрд╕ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ
private byte[] magic; private byte [] version; public WasmHeader(BinaryReader reader) throws IOException { magic = reader.readNextByteArray(WASM_MAGIC_BASE.length()); version = reader.readNextByteArray(WASM_VERSION_LENGTH); }
рд▓реЛрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░, рд╕рдлрд▓рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдЪрд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреНрд▓рд╛рд╕
QueryOpinionService рдХреА рд╡рд┐рдзрд┐ рдХреНрд╡реЗрд░реА рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд▓реЛрдбрд░ ("Webassembly") рдХрд╛ рдирд╛рдо рджреЗрддрд╛ рд╣реИред OpinionService рдЗрд╕ рд▓реЛрдбрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
List<QueryResult> queries = QueryOpinionService.query(getName(), MACHINE, null);
рдирд┐рд╢реНрдЪрд┐рдд рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ ghidra рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ WebAssembly рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдмрддрд╛рдпрд╛, рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдиреЗ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдбреЗрдЯрд╛ / рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рднрд╛рд╖рд╛ рдХрд╛ рдХрдВрдХрд╛рд▓ рдмрдирд╛рдпрд╛ред

рд╡рд░реНрддрдорд╛рди рдЪрд░рдг рдореЗрдВ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬреЛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддреА рд╣реИрдВ: Webassembly.opinion рдФрд░ Wbassembly.ldefsред рдлрд╝рд╛рдЗрд▓ .opinon рд▓реЛрдбрд░ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
<opinions> <constraint loader="WebAssembly" compilerSpecID="default"> <constraint primary="1" processor="Webassembly" size="16" /> </constraint> </opinions>
рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рд░рд▓ xml рд╣реИред рдЗрд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛ рдирд╛рдо "рд▓реЛрдбрд░" рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ "рдкреНрд░реЛрд╕реЗрд╕рд░" рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рджреЛрдиреЛрдВ "рд╡реЗрдмрд╕рд╛рдЗрдб" рд╣реИрдВред рдЗрд╕ рдХрджрдо рдкрд░ рдореИрдВ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рднрд░ рджреВрдВрдЧрд╛ред рдЬреИрд╕реЗ рд╣реА рдореИрдВ Webassembly рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдорд╛рдиреЛрдВ рдореЗрдВ рдмрджрд▓ рджреВрдВрдЧрд╛ред
рдлрд╝рд╛рдЗрд▓ .ldefs рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
<language_definitions> <language processor="Webassembly" endian="little" size="16" variant="default" version="1.0" slafile="Webassembly.sla" processorspec="Webassembly.pspec" id="wasm:LE:16:default"> <description>Webassembly Language Module</description> <compiler name="default" spec="Webassembly.cspec" id="default"/> </language> </language_definitions>
рд╡рд┐рд╢реЗрд╖рддрд╛ "рдкреНрд░реЛрд╕реЗрд╕рд░" рдлрд╝рд╛рдЗрд▓ .opinion рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЕрдЫреВрддрд╛ рдЫреЛрдбрд╝ рджреЗрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд▓реА рдмрд╛рд░ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдмрд┐рдЯрдХреЙрдЗрди (рд╡рд┐рд╢реЗрд╖рддрд╛ "рдЖрдХрд╛рд░") рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдкреНрд░реЛрд╕реЗрд╕рд░ "рдкреНрд░реЛрд╕реЗрд╕рд░рд╕реНрдкреЗрдХ" рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдФрд░ рдлрд╝рд╛рдЗрд▓, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдШреЛрд╖рдгрд╛рдкрддреНрд░ рднрд╛рд╖рд╛ "рд╕реНрд▓реИрдлрд╝рд╛рдЗрд▓" рдореЗрдВ рдХреЛрдб рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рдпрд╣ disassembly рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЖрдПрдЧрд╛ред
рдЕрдм, рд▓реЛрдбрд░ рдХреЗ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдФрд░ рд▓реЛрдбрд░ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред
рдЯреЗрд╕реНрдЯ рд░рди рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред GhidraDev рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдиреЗ рд░рди рдСрдкреНрд╢рди рдЬреЛрдбрд╝рд╛ рд╣реИ "
рд░рди тЖТ рд░рди рдЕрд╕ тЖТ рдШрд┐рджреНрд░рд╛ " рдЧреНрд░рд╣рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

рдпрд╣ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдЧрд╝рд┐рджреНрд░рд╛ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╣рд╛рдБ рдореЙрдбреНрдпреВрд▓ рдХреЛ рддреИрдирд╛рдд рдХрд░рддрд╛ рд╣реИ, рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реА рд╕рдордп рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рд░рд▓ рдЪрд░рдг рдореЗрдВ рдбрд┐рдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдореИрдВ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдКрдВрдЧрд╛, рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░реВрдБрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдореЗрд░реЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рднреБрдЧрддрд╛рди рд╣реБрдЖ рдпрд╛ рдирд╣реАрдВред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдлрд╝рд╛рдЗрд▓ рдХреЛ WebAssembly рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реИ, рдФрд░ рд▓реЛрдбрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрд╕реА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЗрд░рд╛ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд▓реЛрдбрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЗрд╕реЗ рди рдХреЗрд╡рд▓ рдкрд╣рдЪрд╛рди рджреВрдВрдЧрд╛, рдмрд▓реНрдХрд┐ рдпрд╣ wasm рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рднреА рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдХреЛрдб
рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред