Alexander Blade 1,407 Posted February 21, 2015 Author Share Posted February 21, 2015 Nothing special til the PC release Also, anything new in the world of V scripts, Alexander? 1 Link to post Share on other sites
kraftwerkd 193 Posted February 22, 2015 Share Posted February 22, 2015 Just wanted to extend my thanks to everyone doing this. You guys give me inspiration to learn coding! Link to post Share on other sites
Alexander Blade 1,407 Posted March 6, 2015 Author Share Posted March 6, 2015 (edited) Launching online database with natives ! NATIVE DB is aimed to gather every piece of information about script native functions that we have , think of it as of native wiki where anyone who wants to contribute can do so and everyone who needs the latest script documentation or the header with natives for ScriptHook can get it right here ! Suggestions are welcome . NATIVE DB Edited March 6, 2015 by Alexander Blade 2 Link to post Share on other sites
sasuke78200 176 Posted March 6, 2015 Share Posted March 6, 2015 Looks nice Alexander, but maybe you should add the changes we made on this page. Link to post Share on other sites
Alexander Blade 1,407 Posted March 6, 2015 Author Share Posted March 6, 2015 Why don't you do it , there are not much of a changes there Looks nice Alexander, but maybe you should add the changes we made on this page. Link to post Share on other sites
sasuke78200 176 Posted March 6, 2015 Share Posted March 6, 2015 I'm a lazy boy, haha. (I made some minor changes) Link to post Share on other sites
NTAuthority 2,569 Posted March 6, 2015 Share Posted March 6, 2015 Suggestions are welcome . perhaps json/xml dump for generating call stubs for different environments without having to parse the C++ header? Link to post Share on other sites
2much4u 2 Posted March 6, 2015 Share Posted March 6, 2015 (edited) Suggestions are welcome . Would like to be able to hit ctrl + f and search through all the natives without having to download a file or open up each individual category. That was something I could easily do on the wiki page. Edited March 6, 2015 by 2much4u Link to post Share on other sites
KiLLerBoy_001 8 Posted March 8, 2015 Share Posted March 8, 2015 Agree with the CTRL+F thing makes it kinda hard ( guess he could add a custom search function ) BTW love the VEHICLE::0xE943B09C (i call it "_SET_VEHICLE_RPM_MULTIPLIER") its pretty neat _SET_VEHICLE_RPM_MULTIPLIER(EntityID, Float) is how its used Link to post Share on other sites
sasuke78200 176 Posted March 12, 2015 Share Posted March 12, 2015 I was documenting some natives, when I saw that we can't set the return type to void or change the return type of a native when you set it to void. Like, "_0xC0B971EA" which is returning a boolean. We also can't submit a change of an unnamed native it says "Invalid name format", can you fix this please ? Link to post Share on other sites
Alexander Blade 1,407 Posted March 13, 2015 Author Share Posted March 13, 2015 (edited) If it says return type is void or vector then this is for sure , that's why you can't edit it , for example original scripts use 0xC0B971EA as a void one only and according to the code it's void as well I see a name check bug while submitting , thx I was documenting some natives, when I saw that we can't set the return type to void or change the return type of a native when you set it to void. Like, "_0xC0B971EA" which is returning a boolean. We also can't submit a change of an unnamed native it says "Invalid name format", can you fix this please ? Edited March 13, 2015 by Alexander Blade Link to post Share on other sites
sasuke78200 176 Posted March 13, 2015 Share Posted March 13, 2015 Oh yeah sorry for the void return, I wasn't reading the good native. Link to post Share on other sites
proditaki 40 Posted April 9, 2015 Share Posted April 9, 2015 (edited) Suggestions are welcome . Would like to be able to hit ctrl + f and search through all the natives without having to download a file or open up each individual category. That was something I could easily do on the wiki page.Theres an "expand all" option. Then u can ctrl+f Edit: or was this added after that comment? Edited April 9, 2015 by proditaki Link to post Share on other sites
Alexander Blade 1,407 Posted April 9, 2015 Author Share Posted April 9, 2015 (edited) After Suggestions are welcome . Would like to be able to hit ctrl + f and search through all the natives without having to download a file or open up each individual category. That was something I could easily do on the wiki page.Theres an "expand all" option. Then u can ctrl+fEdit: or was this added after that comment? Edited April 9, 2015 by Alexander Blade Link to post Share on other sites
XeClutch 33 Posted April 15, 2015 Share Posted April 15, 2015 (edited) I figure I should give my 2 cents regarding the native hook since I haven't posted anything on here in awhile. Now that PC is released I figure you guys could use some of this information. When calling a native, use the following struct. typedef struct _NativeParams{ PDWORD pdwReturn; // ptr to DWORD array DWORD dwParamCount; PDWORD pdwParams; // ptr to DWORD array (24 elems) that consists of the arguments that are passed through the native call _NativeParams(DWORD _dwParamCount, ...) { dwParamCount = _dwParamCount; va_list params; va_start(params, dwParamCount); for (int i = 0; i < dwParamCount; i++) pdwParams[i] = va_arg(params, DWORD); va_end(params); }} NativeParams, *pNativeParams; You can create a successful script hook by hooking the function that ciphers through the RAGE opcodes (dubbed "ParseOpCodes" by XBLToothpik). I've seen others create a working scripthook other ways but this is how I and a few others do it. When using the "ParseOpCodes" scripthook you'll need to skip a frame each time around, meaning you have a switch that toggles itself each time it's executed and the value of the switch will determine if your code is going to get executed or not. This might just be for consoles though because when you don't skip a frame each time around the game lags horribly. Also, when passing arguments through that struct I provided earlier, if the data type is a string you'll need to pass the address of where the string is located instead. Example: void _0xF42C43C7(char* type){ // _CALL_NATIVE is a function I made that just calls whatever native you pass through it. The first argument being the native hash and the second is the NativeParams. _CALL_NATIVE(0xF42C43C7, NativeParams(1, &type));} For other data types such as bytes, floats, etc.. just cast them as an int. Edited April 21, 2016 by XeClutch 2 Link to post Share on other sites
saracoglu 6 Posted April 15, 2015 Share Posted April 15, 2015 do we have an asi loader for GTA V already? Alexander, will you make one similar to yours for GTA IV? Link to post Share on other sites
Alexander Blade 1,407 Posted April 15, 2015 Author Share Posted April 15, 2015 I have asi loader , it's done in another way a bit in order to bypass exe encryption , I have script hook (since x360 actually) , it's ported to PC as well . Currently I'm matching natives between x360 and PC since they use different hashing algo (or even use random values instead) for natives in PC 10 Link to post Share on other sites
XeClutch 33 Posted April 15, 2015 Share Posted April 15, 2015 I have asi loader , it's done in another way a bit in order to bypass exe encryption , I have script hook (since x360 actually) , it's ported to PC as well . Currently I'm matching natives between x360 and PC since they use different hashing algo (or even use random values instead) for natives in PC Now you've gone and done it Alex! Attention everyone: Link to post Share on other sites
sjaak327 1,044 Posted April 15, 2015 Share Posted April 15, 2015 I have asi loader , it's done in another way a bit in order to bypass exe encryption , I have script hook (since x360 actually) , it's ported to PC as well . Currently I'm matching natives between x360 and PC since they use different hashing algo (or even use random values instead) for natives in PC All I can say is thank you very much sir ! Time to replace self radio with something better Link to post Share on other sites
saracoglu 6 Posted April 15, 2015 Share Posted April 15, 2015 I have asi loader , it's done in another way a bit in order to bypass exe encryption , I have script hook (since x360 actually) , it's ported to PC as well . Currently I'm matching natives between x360 and PC since they use different hashing algo (or even use random values instead) for natives in PC you're the man! I am starting the framework then. When will you be sharing the loader with us? Link to post Share on other sites
Mellnik 1 Posted April 15, 2015 Share Posted April 15, 2015 (edited) I have asi loader , it's done in another way a bit in order to bypass exe encryption , I have script hook (since x360 actually) , it's ported to PC as well . Currently I'm matching natives between x360 and PC since they use different hashing algo (or even use random values instead) for natives in PC When are you going to release the source? I figure I should give my 2 cents regarding the native hook since I haven't posted anything on here in awhile. Now that PC is released I figure you guys could use some of this information. When calling a native, use the following struct. typedef struct _NativeParams{ DWORD pdwReturn[5]; DWORD dwParamCount; DWORD pdwParams[100]; _NativeParams(DWORD _dwParamCount, ...) { dwParamCount = _dwParamCount; va_list params; va_start(params, dwParamCount); for (int i = 0; i < dwParamCount; i++) pdwParams = va_arg(params, DWORD); va_end(params); } } NativeParams, *pNativeParams; You can create a successful script hook by hooking the function that ciphers through the RAGE opcodes (dubbed "ParseOpCodes" by XBLToothpik). I've seen others create a working scripthook other ways but this is how I and a few others do it. When using the "ParseOpCodes" scripthook you'll need to skip a frame each time around, meaning you have a switch that toggles itself each time it's executed and the value of the switch will determine if your code is going to get executed or not. This might just be for consoles though because when you don't skip a frame each time around the game lags horribly. Also, when passing arguments through that struct I provided earlier, if the data type is a string you'll need to pass the address of where the string is located instead. Example: void _0xF42C43C7(char* type){ // _CALL_NATIVE is a function I made that just calls whatever native you pass through it. The first argument being the native hash and the second is the NativeParams. _CALL_NATIVE(0xF42C43C7, NativeParams(1, &type)); } For other data types such as bytes, floats, etc.. just cast them as an int. So can you show us the _CALL_NATIVE function? Edited April 15, 2015 by Mellnik Link to post Share on other sites
XeClutch 33 Posted April 16, 2015 Share Posted April 16, 2015 I figure I should give my 2 cents regarding the native hook since I haven't posted anything on here in awhile. Now that PC is released I figure you guys could use some of this information. When calling a native, use the following struct. typedef struct _NativeParams{ DWORD pdwReturn[5]; DWORD dwParamCount; DWORD pdwParams[100]; _NativeParams(DWORD _dwParamCount, ...) { dwParamCount = _dwParamCount; va_list params; va_start(params, dwParamCount); for (int i = 0; i < dwParamCount; i++) pdwParams = va_arg(params, DWORD); va_end(params); } } NativeParams, *pNativeParams; You can create a successful script hook by hooking the function that ciphers through the RAGE opcodes (dubbed "ParseOpCodes" by XBLToothpik). I've seen others create a working scripthook other ways but this is how I and a few others do it. When using the "ParseOpCodes" scripthook you'll need to skip a frame each time around, meaning you have a switch that toggles itself each time it's executed and the value of the switch will determine if your code is going to get executed or not. This might just be for consoles though because when you don't skip a frame each time around the game lags horribly. Also, when passing arguments through that struct I provided earlier, if the data type is a string you'll need to pass the address of where the string is located instead. Example: void _0xF42C43C7(char* type){ // _CALL_NATIVE is a function I made that just calls whatever native you pass through it. The first argument being the native hash and the second is the NativeParams. _CALL_NATIVE(0xF42C43C7, NativeParams(1, &type)); } For other data types such as bytes, floats, etc.. just cast them as an int. So can you show us the _CALL_NATIVE function? All it does is cipher through the native pool searching for the call address and then passes the address of the NativeParams struct as the only parameter. Link to post Share on other sites
ClareXoBearrx3R9 250 Posted April 16, 2015 Share Posted April 16, 2015 I have asi loader , it's done in another way a bit in order to bypass exe encryption , I have script hook (since x360 actually) , it's ported to PC as well . Currently I'm matching natives between x360 and PC since they use different hashing algo (or even use random values instead) for natives in PC Awesome! Can't wait to start writing, hopefully with a C++ (or even C) framework Link to post Share on other sites
stef538 57 Posted April 16, 2015 Share Posted April 16, 2015 I have asi loader , it's done in another way a bit in order to bypass exe encryption , I have script hook (since x360 actually) , it's ported to PC as well . Currently I'm matching natives between x360 and PC since they use different hashing algo (or even use random values instead) for natives in PC I hope it's also in C# 1 Link to post Share on other sites
Jitnaught 422 Posted April 17, 2015 Share Posted April 17, 2015 (edited) I have asi loader , it's done in another way a bit in order to bypass exe encryption , I have script hook (since x360 actually) , it's ported to PC as well . Currently I'm matching natives between x360 and PC since they use different hashing algo (or even use random values instead) for natives in PC I hope it's also in C# It is probably in C++, but a .NET Scripthook will be made around it.Edit: Told ya! XD Edited May 5, 2015 by LetsPlayOrDy 1 Link to post Share on other sites
gta.bullet 39 Posted April 17, 2015 Share Posted April 17, 2015 (edited) I was hoping we will get native names in exe, but unfortunately most strings are meaningless online debug related things, it is stripped well. Sad. Edited April 17, 2015 by gta.bullet Link to post Share on other sites
XeClutch 33 Posted April 17, 2015 Share Posted April 17, 2015 I was hoping we will get native names in exe, but unfortunately most strings are meaningless online debug related things, it is stripped well. Sad. They started hashing everything once V came around. Link to post Share on other sites
MulleDK19 138 Posted April 18, 2015 Share Posted April 18, 2015 (edited) I was hoping we will get native names in exe, but unfortunately most strings are meaningless online debug related things, it is stripped well. Sad. They started hashing everything once V came around. And they aren't just hashed; they're salted. Edited April 18, 2015 by MulleDK19 Link to post Share on other sites
Alexander Blade 1,407 Posted April 18, 2015 Author Share Posted April 18, 2015 (edited) He means not just natives but other stuff as well . Natives are probably not hashed but replaced with random 64bit values (there are 3 natives that comes under old hashes) , according to the rule that only used in scripts natives go to the executable I may assume that native registration source file is autogenerated , so they could do some stuff like plain replace there . I was hoping we will get native names in exe, but unfortunately most strings are meaningless online debug related things, it is stripped well. Sad. They started hashing everything once V came around. And they aren't just hashed; they're salted. Edited April 21, 2015 by Alexander Blade Link to post Share on other sites
Bucho 11 Posted April 18, 2015 Share Posted April 18, 2015 Register Native for vm is a GTA5.exe+14013F8? Link to post Share on other sites