Hello,
i have d3 10057 on ubuntu 12.04 32bit over wine and mooege on virtualbox winxp. both starting fine. communication between them also fine.
but i am stuck with login because of bnet patcher, so far there is only one patcher for linux (victor perron's) but its for d3 beta (old). when i look at the code i saw only one offset.
i think new patchers written in c# processing 2 offsets (server ip check and second challenge check).
i tried to make some modifications on it with zero c knowledge, no luck.
the offsets that PonyPatcher says (which is works patching on winxp):
public const Int32 ServerIPCheckOffset = 0x000BC2CC;
public const Int32 SecondChallengeCheckOffset = 0x000BC289;
and here is the patcher for linux:
Code:
#include <stdio.h>
#include <sys/ptrace.h>
#define ADDR 0x3C9C5605
int main(int argc, char** argv) {
long val, patched;
int pid;
if (argc < 2) {
printf("Usage : %s <PID>\n", argv[0]);
return 1;
}
pid = atoi(argv[1]);
val = ptrace(PTRACE_ATTACH, pid, 0, 0);
if (val != -1) {
printf("Successfully attached to process: %d\n",pid);
//need to wait a bit, to be sure the process is stopped
wait(2);
val = ptrace(PTRACE_PEEKDATA, pid, ADDR, 0);
if (val != -1) {
// The read byte should be 0x75 (JNZ / JumpNotZero)
printf("Read byte at %x : %x\n", ADDR, (int)(val & 0xff));
// Replace it with 0xEB (JMP, forced jump)
patched = (val & 0xffffff00) | 0xeb;
ptrace(PTRACE_POKEDATA, pid, ADDR, (int)patched);
val = ptrace(PTRACE_PEEKDATA, pid, ADDR, 0);
printf("Read patched byte at %x : %x\n", ADDR, (int)(val & 0xff));
ptrace(PTRACE_DETACH, pid, 0, 0);
return 0;
}
}
perror(NULL);
return 1;
}
can anyone point me to right direction for fixing it?