Начинающий
- Статус
- Оффлайн
- Регистрация
- 21 Дек 2018
- Сообщения
- 86
- Реакции
- 1
Здарова с вами Вова (нет). Решил написать крутой софт на opengl, все очень интересно, ни черта не понятно. Максимальное что сделал, сдампил шейдер и понял, что там xor шифрование на xyz, modelmatrix, e.t.c.
Вот кусочек
Тут как я понял, нужно расшифровать всякие приколы и переменную С, но для этого нужно собирать картинку, звучит как не очень идея.
Можно ли как то по другому это реализовать? Где то в тредах видел вот такую информацию
Так же немного не понимаю как правильно хукать gldrawelements, понял что нужно хукать из под wglGetProcAddress при запуске игры, во время инициализации opengl
Вот кусочек
uint k = floatBitsToUint(asinh(uintBitsToFloat(x.x)));
vec2 d = vec2(uintBitsToFloat(x.w));
uvec4 c = uvec4(textureGrad(obfMap, uintBitsToFloat(x.yz), d, d) * 255.0);
k^=(c.r<<24) | (c.g<<16) | (c.b<<8) | (c.a);
k^=k>>((((2453356781U)+((3566219715U)-(448298095U)))+(((1529107149U)-(473713798U))^(2614345319U)))^(((4009146356U)^(398929913U))+(((1590081646U)-(4145005033U))-(1872355361U))));
k*=((((315156254U)^(3442652070U))-((3331634405U)-(((1701015467U)^(2842277642U))+(578199054U))))-((1451924589U)^((4077812685U)+((342611722U)^((1250320754U)-(257920435U))))));
k^=k>>(((4247278471U)+(2265308698U))+((((1439682877U)+(3629484040U))+((((3285126332U)-((549581776U)+(2651448754U)))^(296623452U))-((3476143132U)+(1649947140U))))+(1787376867U)));
k*=((((920835249U)-(3698243283U))-(((3336763965U)-(2491448024U))^((4102644584U)-((626624126U)+(3701815158U)))))+((2083632114U)-((3067303068U)+((838172506U)+(1687050852U)))));
k^=k>>(((2853179545U)^(((2944167880U)+((2932052179U)^(2553362872U)))^(1915985343U)))^((2452468155U)^((2561361120U)-(((2703520780U)+(1534562772U))-((1593751541U)-(1319948628U))))));
mat4 modelMatrix = mat4(
(uintBitsToFloat(m1 ^ uvec4(0x51678e36u)) / vec4(2.8768067)),
uintBitsToFloat(m2 ^ uvec4(0x22f020aau)),
((uintBitsToFloat(m4) / vec4(3.0997663)) - vec4(7.2596235)),
(uintBitsToFloat(m3 ^ uvec4(k,k,k,0u)) / vec4(9.784588))
vec2 d = vec2(uintBitsToFloat(x.w));
uvec4 c = uvec4(textureGrad(obfMap, uintBitsToFloat(x.yz), d, d) * 255.0);
k^=(c.r<<24) | (c.g<<16) | (c.b<<8) | (c.a);
k^=k>>((((2453356781U)+((3566219715U)-(448298095U)))+(((1529107149U)-(473713798U))^(2614345319U)))^(((4009146356U)^(398929913U))+(((1590081646U)-(4145005033U))-(1872355361U))));
k*=((((315156254U)^(3442652070U))-((3331634405U)-(((1701015467U)^(2842277642U))+(578199054U))))-((1451924589U)^((4077812685U)+((342611722U)^((1250320754U)-(257920435U))))));
k^=k>>(((4247278471U)+(2265308698U))+((((1439682877U)+(3629484040U))+((((3285126332U)-((549581776U)+(2651448754U)))^(296623452U))-((3476143132U)+(1649947140U))))+(1787376867U)));
k*=((((920835249U)-(3698243283U))-(((3336763965U)-(2491448024U))^((4102644584U)-((626624126U)+(3701815158U)))))+((2083632114U)-((3067303068U)+((838172506U)+(1687050852U)))));
k^=k>>(((2853179545U)^(((2944167880U)+((2932052179U)^(2553362872U)))^(1915985343U)))^((2452468155U)^((2561361120U)-(((2703520780U)+(1534562772U))-((1593751541U)-(1319948628U))))));
mat4 modelMatrix = mat4(
(uintBitsToFloat(m1 ^ uvec4(0x51678e36u)) / vec4(2.8768067)),
uintBitsToFloat(m2 ^ uvec4(0x22f020aau)),
((uintBitsToFloat(m4) / vec4(3.0997663)) - vec4(7.2596235)),
(uintBitsToFloat(m3 ^ uvec4(k,k,k,0u)) / vec4(9.784588))
Можно ли как то по другому это реализовать? Где то в тредах видел вот такую информацию
Цитирую: (сдампь шейдеры поставив хук на gl shader source, найди шейдер с обфусицированным model matrix) P.S эту часть в скобках я смог сделать. Там же есть юниформы view & projection матриц, получи их всех через ssbo предварительно подменив шейдер и все епта вот тебе есп на кубические кубики P.S.S а эту нет
Так же немного не понимаю как правильно хукать gldrawelements, понял что нужно хукать из под wglGetProcAddress при запуске игры, во время инициализации opengl
Всех люблю, спасибо за помощь. Мяу
ТГ для связи: @DJMaestrik
ТГ для связи: @DJMaestrik
Последнее редактирование: