X86Jumps
-
Постов
122 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные X86Jumps
-
-
это типа намек что в ptr будет занесен ecx значение
ведь это явно какой то объект
- 1
-
забыл (точнее не особо и знал)) ) что в gsub reg exp
надо было экранировать скобки
Цитатаscript2 = string.gsub(string.gsub(string.gsub(string.gsub(script, "//aligndatahere", str), "registerSymbol%(align%)",""), "label%(align%)",""),
-
что то вроде такого
Скрытый текстscript = [[
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
registerSymbol(align)
label(align)
label(data)newmem: //this is allocated memory, you have read,write,execute access
//place your code herepush eax
mov eax,(float)255.0
mov [data],eax
pop eaxoriginalcode:
movss [esi+0000486C],xmm0exit:
jmp returnherealign:
//aligndataheredata:
dd -1"BH6.exe"+159DD6:
jmp newmem
nop
nop
nop
returnhere:[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"BH6.exe"+159DD6:
movss [esi+0000486C],xmm0
//Alt: db F3 0F 11 86 6C 48 00 00]];
result, disableinfo = autoAssemble(script)
str = string.rep("nop\n", getAddress("align")%16)
autoAssemble(script, disableinfo)
unregisterSymbol("align")
--for i=0,getAddress("align")%16 do writeBytes(getAddress("align"),0x90); end
--print(string.format("%x",getAddress("align")))
script2 = string.gsub(string.gsub(string.gsub(string.gsub(script, "//aligndatahere", str), "registerSymbol(align)",""), "label(align)",""), "align","")
autoAssemble(script2)без disableinfo почему то не вырубает, можно было бы просто true передавать
(я дописал push ... pop чтоб надо было больше вставлять для выравнивания)
-
думал, можно ли данные выравнять по 16 байт например?
в lua можно только к символам обратиться
жаль нельзя label получать список или alloc
я набросал такой скрипт
хотя хотелось бы избавиться от label лишнего
Скрытый текстscript = [[
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
registerSymbol(align)
label(align)
label(data)newmem: //this is allocated memory, you have read,write,execute access
//place your code here
originalcode:
movss [esi+0000486C],xmm0exit:
jmp returnherealign:
data:
dd 0"BH6.exe"+159DD6:
jmp newmem
nop
nop
nop
returnhere:[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"BH6.exe"+159DD6:
movss [esi+0000486C],xmm0
//Alt: db F3 0F 11 86 6C 48 00 00]];
autoAssemble(script)
for i=0,getAddress("align")%16 do writeBytes(getAddress("align"),0x90); end
print(string.format("%x",getAddress("align")))
unregisterSymbol("align")но ссылается по-старому
получается надо 1 раз вставить определить размер и во второй раз дописать nop'ы
-
а как можно трейсить step by step?
например как встроенный трейсер, чтоб записал весь лог?
как он пошагово идет?
debug_continueFromBreakpoint?
а если несколько потоков то это как то разделяется или в куче будет?
вроде в последней CE с контекстом потоков что то есть
-
а нельзя оффтоп сделать не микроскопическим?
и можно ли добавить asm в snippet/код?
и еще, можно как в некоторых сайтах скрытому тексту присвоить заголовок
чтоб не только "показать содержимое" было
-
ну раз это шаблон на трейнеры можно и добавить))
мало ли, messagebox вылазиет про права админа и все
я б добавил)
...блин оффтоп тут реально фиг прочитаешь, хоть с лупой гляди
// @X86Jumps тег оффтопика не забываем. -
ну так он же про это не пишет))
"идиот, запусти игру сначала"))
-
не знаю как у других (или надо обязательно чтоб игра запущена была? он просто пишет "run as admin"
хотя я и запускаю так)
у меня не хочет запускаться на win7
и трейнер как cpl?
-
В ходе попытки сделать простой aimbot возникли вопросы того, как рисует сцену движок
как я написал тут, я наше матрицу, которую передают во все vertex shader (всегда c1 регист)
вопрос вот в чем, если все объекты расположены в разных позициях
имеют свою матрицу трансформации, то как же они правильно располагаются?
вот например такая матрица
Цитата1.66 0.00 0.16 0.16
0.00 2.99 0.00 0.00
0.27 0.01 -0.99 -0.99
86.18 -374.67 -651.33 -635.32
вот шейдер
Скрытый текст//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
// float4 CBROPTest__packed0;
// float4 CBSkinning__packed0;
// float4 CBVertexDisplacement2__packed0;
// float4 CBVertexDisplacement__packed0;
// float4 CBVertexDisplacement__packed1;
// sampler2D SSClampLinear__tVtxDisplacement;
// sampler2D SSPoint__tMatrixMap;
// sampler2D SSWrapLinear__tVtxDispMask;
// float4 __tMatrixMap__invsize;
// float4 __tVtxDisplacement__invsize;
// float2 fScreenHalfPixelOffset;
// row_major float4x4 fViewProj;
//
//
// Registers:
//
// Name Reg Size
// ------------------------------- ----- ----
// fViewProj c1 4
// CBROPTest__packed0 c5 1
// fScreenHalfPixelOffset c6 1
// CBSkinning__packed0 c7 1
// __tMatrixMap__invsize c8 1
// CBVertexDisplacement__packed0 c9 1
// CBVertexDisplacement__packed1 c10 1
// __tVtxDisplacement__invsize c11 1
// CBVertexDisplacement2__packed0 c12 1
// SSPoint__tMatrixMap s0 1
// SSClampLinear__tVtxDisplacement s1 1
// SSWrapLinear__tVtxDispMask s2 1
//vs_3_0
def c0, 2, -1, 32768, -0
def c13, 0.125, 1, 0, 3
dcl_position v0
dcl_normal v1
dcl_tangent v2
dcl_binormal v3
dcl_2d s0
dcl_2d s1
dcl_2d s2
dcl_position o0
dcl_color o1.xy
dcl_texcoord o2
add r0.x, c9.x, v3.x
frc r0.x, r0.x
mul r0.x, r0.x, c9.z
mov r0.yzw, c13.xxyz
texldl r0, r0, s1
add r0.y, c12.x, v3.y
frc r0.y, r0.y
mul r1.x, r0.y, c12.z
mov r1.y, c13.x
mov r0.zw, c13
mad r1.xy, c11, r0.zwzw, r1
mov r1.zw, -c0.xyyw
texldl r1, r1, s1
mul r2, -c0.yyww, v3.xyxx
texldl r2, r2, s2
mul r0.y, r2.x, c12.y
mul r0.z, r2.x, c9.y
mul r0.y, r0.y, r1.x
mad r0.x, r0.x, r0.z, r0.y
mov r1.zw, -c0.w
mul r0.y, c0.z, v0.w
frc r0.z, r0.y
add r0.y, -r0.z, r0.y
mad r2.x, r0.y, c7.x, c7.y
mov r3.xyw, c0
mul r2.yzw, -r3.xyww, c7.z
mad r1.xy, c8, -r3.ywzw, r2
texldl r1, r1, s0
mad r0.yzw, v1.xxyz, c0.x, c0.y
dp3 r4.y, r1, r0.yzww
mad r3.xy, c8, r3_abs.xwzw, r2
texldl r2, r2, s0
mov r3.zw, -c0.w
texldl r3, r3, s0
dp3 r4.z, r3, r0.yzww
dp3 r4.x, r2, r0.yzww
nrm r5.xyz, r4
mad r4, v2, c0.x, c0.y
dp3 r6.y, r1, r4
dp3 r6.z, r3, r4
dp3 r6.x, r2, r4
nrm r4.xyz, r6
mul r0.yzw, r5.xyzx, r4.xzxy
mad r0.yzw, r4.xyzx, r5.xzxy, -r0
mad r4.xyz, r4, c10.x, r5
mul r0.yzw, r4.w, r0
mad r0.yzw, r0, c10.y, r4.xxyz
nrm r4.xyz, r0.yzww
mad r5, v0.xyzx, -c0.yyyw, -c0.wwwy
dp4 r1.y, r1, r5
dp4 r1.z, r3, r5
dp4 r1.x, r2, r5
mad r0.xyz, r4, r0.x, r1
mul r1, r0.y, c2
mad r1, r0.x, c1, r1
mad r0, r0.z, c3, r1
add r0, r0, c4
mad o0.x, c6.x, -r0.w, r0.x
mad o0.y, c6.y, r0.w, r0.y
add o0.z, r0.z, c5.z
mov o0.w, r0.w
mov o1.xy, r0.zwzw
mov o2, v3.xyxy// approximately 75 instruction slots used (12 texture, 63 arithmetic)
ну их очень много, но все похожие
я сделал такой
Скрытый текстrow_major float4x4 WorldViewProj : WORLDVIEWPROJ;
struct VS_OUTPUT
{
float4 Pos : POSITION;
};VS_OUTPUT main(float4 inPos : POSITION )
{
VS_OUTPUT Out;Out.Pos = mul(inPos, WorldViewProj );
return Out;
};компилится в такое
Скрытый текстMicrosoft (R) Direct3D Shader Compiler 9.29.952.3111
Copyright (C) Microsoft Corporation 2002-2009. All rights reserved.//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// fxc /Tvs_3_0 C:\tmp\test.hlsl
//
//
// Parameters:
//
// row_major float4x4 WorldViewProj;
//
//
// Registers:
//
// Name Reg Size
// ------------- ----- ----
// WorldViewProj c0 4
//vs_3_0
dcl_position v0
dcl_position o0
mul r0, c1, v0.y
mad r0, v0.x, c0, r0
mad r0, v0.z, c2, r0
mad o0, v0.w, c3, r0// approximately 4 instruction slots used
проверял через Nvidia NSight 4.1, мои линии рисуются где то не понятно где
(ошибок в вызовах методов pDevice нет)
потом поняв что не получается решил перемещать объект простой (например спрей)
в точку которую хочу, у меня есть координаты игрока, партнера, камеры
еще вектора, подумал если я буду перемещать то хотя бы наглядно пойму что я делал не так при aimbot
я нашел место где создается объект спрея, но понять как он создается пока не очень понял
я знаю что в игре в архивах есть файлы lot, в которых встречаются строки типа такой
cSetInfoItem.....uItem.........H.......uWp1173
в файле заметок по игре у меня был адрес, где он обрабатывает эти файлы, ставил бряк перед вызовом и менял содержимое
после получалось что спавнился другой объект
но жесткий тот сдох, я там многое потерял
по памяти что то восстановил
...чтоб не тратить много времени решил пока просто перемещать уже расставленый предмет
нашел коллекцию объеков uItem, правда каждый раз тот спрей на сцене под разным номером
пока вручную придется (ну или проверять позицию что она не нулевая, просто придется по всему списку пройтись сначала и найти по определенному классу его)
Игра рисует сцену раза 3 4
сначала просто, потом кажется определяет глубину, потом освещенность
меши игроков разбиты по частям
список bone mapping я находил вроде, трансформацию тоже (но туда пока не лез)
-
я нашел матрицу какую-то
тут в игре через дамп vertex shader многих
я увидел что везде первым параметром идет
Цитата// Name Reg Size
// ------------------------------- ----- ----
// fViewProj c1 4
// CBROPTest__packed0 c5 1тогда как например в простых шейдерах типа того
Цитатаfloat4x4 WorldViewProj : WORLDVIEWPROJ;
struct VS_OUTPUT
{
float4 Pos : POSITION;
};VS_OUTPUT main(float4 inPos : POSITION )
{
VS_OUTPUT Out;Out.Pos = mul(inPos, WorldViewProj );
return Out;
};вот похожий из Irrlicht Engine
Цитата// part of the Irrlicht Engine Shader example.
// These simple Direct3D9 pixel and vertex shaders will be loaded by the shaders
// example. Please note that these example shaders don't do anything really useful.
// They only demonstrate that shaders can be used in Irrlicht.//-----------------------------------------------------------------------------
// Global variables
//-----------------------------------------------------------------------------
float4x4 mWorldViewProj; // World * View * Projection transformation
float4x4 mInvWorld; // Inverted world matrix
float4x4 mTransWorld; // Transposed world matrix// transform position to clip space
Output.Position = mul(vPosition, mWorldViewProj);я через Nsight 4.1 запустил игру
и увидел что почти все меши рисуются с первым параметром матрицы которую я нашел
(например такая в тот момент, когда сделал frame capture)
Цитата1.66 0.00 0.16 0.16
0.00 2.99 0.00 0.00
0.27 0.01 -0.99 -0.99
86.18 -374.67 -651.33 -635.32
-
для чего это нужно?
не проще ли pipe создать?
-
я сделал на tab срабатывание моего кода (200мс задержка)
как обычно для всех своих "читов" в ре6
(таб не как кнопка нажатая через getasynckeystate, а обращение к памяти для определения что нажато
тогда работать может и с джойстиками)
попробую разобраться почему у меня pitch глючит когда враги падают или стоят выше/ниже
-
1 час назад, partoftheworlD сказал:
Я бы по-другому сделал, использовал функцию автоаима с разными модификациями, чтобы расширить радиус действия, fov и прочее, это быстрее и думаю будет работать более стабильно и точно. Самое "сложное" бы было заставить думать игру, что играешь с джойстика.
в смысле задействовать встроенную функцию слежения за напарником?(V)
вместо напарника занести bp врага?я быстро наспех делал вроде так
но при прицеливании глючило, видимо не только 1 значение надо было заносить
не очень понял что значит "с различными модификациями "
а вообще? я то делают?даже на тетрадке расчертил точки
и вроде все верно было, но это для камеры не 3го лица
тут надо скорректировать
я трейс смотрел как игра делает, сначала yaw крутит, потом pitch
значение конечное находит, но потом плавно к нему идет
я отнимаю от target координаты камеры, хотя в игре отнимает от игрока (владельца)
потом еще что то делает (я толком не очень понял)
просто я могу точно узнать как он значение находит, но думал просто подскажут как для 3го лица обычно оно выходит
-
вот видео, может понятнее станет немного
-
а что там понимать)
просто сложение, вычитание, нахождение длины вектора)
нормализация
в игре есть функция за напарником следить, V держишь и за напарником следишь
если он не очень далеко то твоя камера крутится, если у двери стоишь и ждешь что он 2м откроет
то тогда камера как спектатор переключается
я думал если самому пытаться то может пригодится информация и опыт
-
Решил для разнообразия сделать примерный aimbot
не нужно чтоб прям точно попадал, хотя бы примерно
игра от 3го лица, камера крутится вокруг что-то вроде сферы
знаю координаты камеры, координаты игрока на кого привязан
знаю что forward vector (0,0,1), т.е. вдоль z (y "в народе")
есть pitch и yaw, их можно более менее менять
почему-то не могу найти forward vector (может он временно высчитывается?)
нашел вот такие расчеты
Цитатаpitch = asin(-d.Y);
yaw = atan2(d.X, d.Z)т.к. в fpu x87 есть только fpatan, то можно воспользоваться
Цитатаasin(x)=atan(x/(sqrt(1-x*x))
брал точку камеры, от цели (напарник, координаты головы кажется) отнимал точку камеры
нормализовал
передал в функцию fpatan эти данные
более менее направление правильно по yaw получалось
но глючило, потом пошел смотреть как игра высчитывает atan2
нашел функцию и ее вызываю (sse2, без fpu)
хотя потом понял причину, я забыл восстановить прежний стек fpu
по pitch понял что я считаю как камера поворачивалась бы на месте (в смысле вращалась бы а позицию не меняла бы)
а т.к. у меня она по сфере крутится, то чуть не точное я значение pitch получаю
сначала считал так
Цитатаpitch = asin(-d.Y);
потом посмотрев в dxut (из dx sdk) считал так
Цитатаfloat fLen = sqrtf( pZBasis->z * pZBasis->z + pZBasis->x * pZBasis->x );
m_fCameraPitchAngle = -atan2f( pZBasis->y, fLen );за zbasis брал мой вектор разницы (не нормализованный)
чуть точнее получалось вроде
я вообще правильно делаю ?
нашел коллекцию npc/врагов
по ним ставил цель (через registersymbol указывал индекс массива)
Скрытый текстmovss xmm0,[eax+30]
movss xmm1,[eax+34]
movss xmm2,[eax+38]mov ecx, eax
//mov ecx, ebx //bp owner
//source, camera pos
movss xmm3, [ecx+50]
movss [data+14],xmm3
movss xmm4, [ecx+54]
movss [data+18],xmm4
movss xmm5, [ecx+58]
movss [data+1c],xmm5subss xmm0, xmm3
subss xmm1, xmm4
//subss xmm4, xmm1
subss xmm2, xmm5
movss [data+20],xmm0
movss [data+24],xmm1
movss [data+28],xmm2mulss xmm0,xmm0
mulss xmm1,xmm1
mulss xmm2,xmm2addss xmm0, xmm1
addss xmm0, xmm2sqrtss xmm0, xmm0
movss [data+2c], xmm0
movss xmm3,[data+20]
movss xmm4,[data+24]
movss xmm5,[data+28]divss xmm3,xmm0
divss xmm4,xmm0
divss xmm5,xmm0movss [data+30],xmm3
movss [data+34],xmm4
movss [data+38],xmm5movss xmm0,[data+30]
movss xmm1,[data+38]
call atan2
movss [data+40], xmm0movss xmm0,[data+34]
mulss xmm0,[const+30] //-y
call asin
movss [data+3c], xmm0movss xmm0,[data+3c]
movss xmm1,[data+40]
//pitch
movss [eax+290],xmm0
//yaw
movss [eax+294],xmm1....
//atan2(y,x)
atan2:
push eax
cvtps2pd xmm0,xmm0 //y
cvtps2pd xmm1,xmm1 //x
//cvtps2pd xmm0,[data+38]
//cvtps2pd xmm1,[data+30]
call 013ED5C9 //xmm0 result
cvtsd2ss xmm0,xmm0
pop eax
ret//asin(x)
asin:
movss xmm3,xmm0
movss xmm1,[const+4] //-1
mulss xmm0,xmm0
subss xmm1,xmm0
sqrtss xmm0,xmm1
divss xmm3,xmm0
movss xmm0,xmm3movss xmm1,[const+4] //1
call atan2
ret -
1 час назад, uhx сказал:
Но мы видим, что нигде не говорится про возвращаемое значение. Значит, мы не можем проверить открылся ли процесс или нет.
честно говоря lua (Script Engine) описание нельзя приводить в пример (раздел в справке или celua.txt)
т.к. как то некоторые вещи явно опущены, в какой-то степени сумбурно
-
у меня вроде поиск работает
только вот когда я нажал "find out what addresses this instruction access" завис комп
-
В 23.07.2017 в 18:56, LIRW сказал:
ну вообще то в цитате про kernelmode и вылеты
а в ссылках про обход проверки целостности кода игры, т.е. xlive killer, который просто обходится
т.е. я просто из-за того что до этого имел дело с ре6 где для себя читы для фана делал (вызов голосовых команд, анимации и эффектов)
не сталкивался с необходимостью менять тип дебаггера
хотя kernelmode хоть как то дает работать, но стабильность....
хотя debug версия dll может помочь, но каждый раз придется немного проходить пролог
-
19 минут назад, partoftheworlD сказал:
Если настроить правильно, то подключится.
не знаю, но мне привычнее в CE, он мне дебаггер Borland Delphi 6 напоминает, в котором я первый раз видел asm
поэтому и нет особого желания разбираться в причинах, но в windbg я не нашел почти настроек
в ollydbg их тоже немного, а x32dbg мне почему то кажется на sdk ollydbg сделан, хотя вроде cpp
-
мне ни windbg ни x32dbg ни ollydbg не дают даже к процессу подключиться
вот такой вот CE умелый)
-
в этом видео в первых трех что я видел не было проблем (ну или они на видео не попали)) )
а у меня вроде не вылетал когда я брикпоинты ставил, но потом бац и вылет может пройти
синий экран, иногда минут 5 не вылетает иногда позже, или потом браузер тупо кручу скролл, зажал мышкой и вылет))
весело очень)
сейчас пытаюсь понять как вырубить xlive, потому что там куча потоков крутится
первый stack trace как раз выходит в одном месте, там после вызова функции eax=0 и ошибка получается
хотя он только проверяет eax, но как то не безопасно, сначала читает из памяти а потом проверяет
а 2й - это произвольный код, видимо там какой то баг происходит и return делается раньше
но откуда я пока не разобрался, в хорошем случае там был бы выше по стеку последний вызов, но не видно
я все эти ветки (иностранные те форумы) читал, но я так понял там только про проверку целостности, а не про проблемы дебага, я даже debug версию толком нигде найти не могу, хорошо у меня dead rising2 репак есть и оттуда взял. Пытался найти sdk на этот xlive, а его вообще нигде нет, видимо он для закрытого круга распространялся и никто не выкладывал ни хидеры ни pdb ни дебаг версии
-
ну так а как решают эту проблему?
у всех вылеты в kernelmode частые?
я кстати помню что в ре5 gfwl версии у меня не вылетало когда я трейсил
может потому что стояла версия старая а не 3.5.92
сейчас просто пытаюсь заменить dll в папку с игрой скидываю, но ругается
видимо надо сначала удалять и заново ставить
Вопрос по видовой матрице directx c++
in Низкоуровневое программирование
Опубликовано
насколько я понял да нужно ее найти
если получать d3dDevice и пытаться GetTransform вызывать
то если через шейдеры (что уже почти везде)) ) то ничего не выдаст
можно для начала попробовать найти родные функции которые hud рисуют (подсказки над игроками/объектам)
может так проще будет