37 lines
982 B
C++
37 lines
982 B
C++
//
|
|
// patch.cpp
|
|
// liboffsetfinder64
|
|
//
|
|
// Created by tihmstar on 09.03.18.
|
|
// Copyright © 2018 tihmstar. All rights reserved.
|
|
//
|
|
|
|
#include "patch.hpp"
|
|
|
|
using namespace tihmstar::patchfinder64;
|
|
|
|
patch::patch(loc_t location, const void *patch, size_t patchSize, void(*slidefunc)(class patch *patch, uint64_t slide)) : _location(location), _patchSize(patchSize), _slidefunc(slidefunc){
|
|
_patch = malloc(_patchSize);
|
|
memcpy((void*)_patch, patch, _patchSize);
|
|
_slideme = (_slidefunc) ? true : false;
|
|
}
|
|
|
|
patch::patch(const patch& cpy) : _location(cpy._location), _patchSize(cpy._patchSize){
|
|
_patch = malloc(_patchSize);
|
|
memcpy((void*)_patch, cpy._patch, _patchSize);
|
|
_slidefunc = cpy._slidefunc;
|
|
_slideme = cpy._slideme;
|
|
}
|
|
|
|
void patch::slide(uint64_t slide){
|
|
if (!_slideme)
|
|
return;
|
|
printf("sliding with %p\n",(void*)slide);
|
|
_slidefunc(this,slide);
|
|
_slideme = false; //only slide once
|
|
}
|
|
|
|
patch::~patch(){
|
|
free((void*)_patch);
|
|
}
|