-
Posts
522 -
Credits
0 -
Joined
-
Last visited
-
Days Won
4 -
Feedback
0%
Content Type
Articles
Profiles
Forums
Store
Posts posted by wongerlt
-
-
You can easily analyze it with l2phx, just check latest packets sent from game server to client.
-
-
4 hours ago, maxicroma said:
wow its working ,maybe you can give me a little hand of how to do it :D? (i have a lot files to decompile to ) ,maybe my regular decompiler its not working?
Rename decrypted_file.txt to orginal one and then u can use l2 file editor
-
9 minutes ago, maxicroma said:
Hello there after follow to the letter your guide im stuck with the final file called "decrypted_file.txt" ,i used this tool to decrypt the regular encrypt (413).
also i attached the file wich im try to decrypt
https://www.mediafire.com/file/b6xqfaov3yea91y/systemmsg-e.dat/file
Decrypted:
https://www.mediafire.com/file/0bj7p05cl64q1at/systemmsg-e.dat/file
- 1
-
Sharing is caring
This is similar topic to just with it u can decrypt 1.5.2.2 version files.
Everything same just source code different:
main.cpp
#include <string> #include <iostream> #include <fstream> #include <map> #include "hook.h" typedef BOOL(WINAPI *_ReadFile) (HANDLE hFile, char *lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); _ReadFile true_ReadFile; typedef HANDLE(WINAPI *_CreateFileW) (LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); _CreateFileW true_CreateFileW; std::map<int, DWORD> Handles; void fileputcontents(const std::string& name, char* content, DWORD size, bool append = false) { std::ofstream outfile; if (append) outfile.open(name, std::ios::app | std::ios::binary); else outfile.open(name, std::ios::binary); outfile.write(content, size); } int file = 0; BOOL WINAPI new_ReadFile(HANDLE hFile, char *lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) { bool result = true_ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped); std::map<int, DWORD>::iterator it = it = Handles.find((int)hFile); if (it != Handles.end()) { std::string filename; file++; filename = "decrypted_file.txt"; if (file == 1) { fileputcontents(filename, lpBuffer, nNumberOfBytesToRead); } else { fileputcontents(filename, lpBuffer, nNumberOfBytesToRead, true); } } return result; } HANDLE WINAPI new_CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) { HANDLE true_handle = true_CreateFileW(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); if (wcsstr(lpFileName, L"SysString-e.dat") != 0) { std::map<int, DWORD>::iterator iter = Handles.find((int)true_handle); Handles.insert(std::make_pair((int)true_handle, (DWORD)0)); } else { std::map<int, DWORD>::iterator iter = Handles.find((int)true_handle); if (iter != Handles.end()) Handles.erase(iter); } return true_handle; } bool SetHooks(void) { FARPROC addr; HANDLE hEngine = LoadLibraryA("engine.dll"); if ((addr = GetProcAddress(LoadLibraryA("kernel32.dll"), "ReadFile")) == 0) return false; true_ReadFile = (_ReadFile)splice((unsigned char*)addr, new_ReadFile); if ((addr = GetProcAddress(LoadLibraryA("kernel32.dll"), "CreateFileW")) == 0) return false; true_CreateFileW = (_CreateFileW)splice((unsigned char*)addr, new_CreateFileW); return true; } int load(void) { return 0; } BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { if (fdwReason == DLL_PROCESS_ATTACH) { if (!SetHooks()) { return false; } } return true; }
hook.h
hook.cpp
1. CFF Explorer part: in ogg.dll file.
SmartDecrypt.dll must be before npkscrypt.dll
Compiled Version: vs2017 (v141 xp)
https://drive.google.com/file/d/1J4_OQS0dq5UD119xHi06Ve5028Ht-IWg/view?usp=sharing
If u want decrypt example interface.u/xdat/or other file then just rename it to SysString-e.dat and run l2.exe (you will get error just click ok) after all in system folder must appear decrypted_file.txt. (this file will be encrypted with regular l2encrypt (413/111 and etc..)
- 2
-
On 1/29/2024 at 9:45 PM, Celestine said:
Name them
Finally decrypted
https://drive.google.com/file/d/1a0MwLUzcg2S19Y3Nq2HSF2VfvCSa13N8/view?usp=sharing
no problem and with interface files
-
-
Hello,
Maybe some one know what ecryption is used for this file?https://prnt.sc/lFGGAiQH8yBk
https://drive.google.com/file/d/1VCd1ywsc2dtIj2o66HZ-0v2DXDyI0cyB/view -
You can try find similar npc with same height/radius and with good name offset and change `class`(second after id) in npgrp.dat file, just copy paste with good one.
-
-
One idea which i just tested is just replace `UIAPI_MULTISELLNEEDEDITEM` to `UIAPI_HTMLCTRL` and just create how want via html code.
function OnClickItem( String strID, int index ) // ItemWindow { local int i; local int Index2; local int have; local string param; local string html; local string multi; local ItemInfo a_ItemInfo; InventoryItem = ItemWindowHandle(GetHandle("InventoryWnd.InventoryItem")); class'UIAPI_MULTISELLITEMINFO'.static.Clear("MultiSellWnd.ItemInfo"); class'UIAPI_MULTISELLNEEDEDITEM'.static.Clear("MultiSellWnd.NeededItem"); //debug("OnClickItem : " $ strID $ ", index : " $ index ); if( strID == "ItemList" ) { if( index >= 0 && index < m_itemList.Length ) { for( i=0 ; i < m_itemList[index].NeededItemList.Length ; ++i ) { have = 0; param = ""; //ParamAdd( param, "Name", m_itemList[index].NeededItemList[i].Name $ "\r\n99999"); //ParamAdd( param, "ID", string(m_itemList[index].NeededItemList[i].ID )); //ParamAdd( param, "Num", string(m_itemList[index].NeededItemList[i].Count )); //ParamAdd( param, "Icon", m_itemList[index].NeededItemList[i].IconName ); //ParamAdd( param, "enchant", string(m_itemList[index].NeededItemList[i].Enchant) ); //ParamAdd( param, "CrystalType", string(m_itemList[index].NeededItemList[i].CrystalType) ); //ParamAdd( param, "ItemType", string(m_itemList[index].NeededItemList[i].ItemType) ); //debug("AddData " $ param ); //class'UIAPI_MULTISELLNEEDEDITEM'.static.AddData("MultiSellWnd.NeededItem", param); Index2 = InventoryItem.FindItemWithClassID(m_itemList[index].NeededItemList[i].ID); if (Index2 > -1) { InventoryItem.GetItem(Index2,a_ItemInfo); have = a_ItemInfo.ItemNum; } multi = multi $ "<tr><td width=32><button width=32 height=32 back=\""$m_itemList[index].NeededItemList[i].IconName$"\" fore=\""$m_itemList[index].NeededItemList[i].IconName$"\"></td><td width=188 align=left><table cellspacing=0 cellpadding=0 width=188><tr><td>"$m_itemList[index].NeededItemList[i].Name$"</td></tr><tr><td>x "$string(m_itemList[index].NeededItemList[i].Count )$" (x"$string(have)$")</td></tr></table></td></tr>"; } html = "<html><body><table width=220>"$multi$"</table></body></html>"; class'UIAPI_HTMLCTRL'.static.LoadHtmlFromString("MultiSellWnd.NeededItemHtml", html); for( i=0 ; i < m_itemList[index].NeededItemNum ; ++i ) { class'UIAPI_MULTISELLITEMINFO'.static.SetItemInfo("MultiSellWnd.ItemInfo", i, m_itemList[index].ItemInfoList[i] ); }
xdat:
-
3 hours ago, L2OLDPLAYER said:
It's windows but in fact if I buy vps hosting and put the server there, the website can be on localhost and it will work, right?
What u mean on localhost? On ur pc?
-
18 minutes ago, L2OLDPLAYER said:
I change this in mysql
# Change here for bind listening
# bind-address="127.0.0.1"
# bind-address = ::1 # for ipv6
bind-address ="0.0.0.0"and add new user to detabase with all privilages , so now how configure this firewall?
What os?
-
3 hours ago, L2OLDPLAYER said:
could you elaborate? Add a user with some special accesses? I use Navicat
Firstly you need change bind-address in mysql config file. Then create another user. There is many guides in google. Keyword `Mysql remote access`.
After all you need configure firewall to allow access only from website.
-
MySQL remote access.
-
0. Stay in place where playing music then restart l2.
1. Open Process Explorer (Sysinternals)
2. Click `Find Handle or DLL) CTRL+F
3. Search for .ogg
ns06_f.ogg
- 1
-
L2Custom Server Information
Website: https://l2custom.com
Start Date: 2024/02/17 18:00
Interlude (C6) PVP server with custom modifications. Server has high rates and 80 level. at start. In server shops you can get free A/S grade and farm with it for better custom gears. You don't need buy many potions, soul/spirit-shots, arrows and etc., because this items is not consumable.
Start Level: 80 lv.
Max Level: 90 lv.
Custom Items.
All Interlude monsters with modified levels (80-95lv).
All Interlude Zones.
All Interlude Quests with modified rewards.
GM Shop.
Global Gatekeeper with all Interlude Zones.
Raid Boss Gatekeeper with over ~200 Raid/Grand Bosses (All bosses levels modified 80-96).
AIO/Scheme Buffer with all buffs with modified durations (1-2 hours).
Free Sub-Class.
Free Noblesse
Olympiad from 86 Lv.
Rebirth System.
Skin System - Skin use as normal item (special inventory slots for skins)
Auction House (Marketer) System.
Auto Hunting system (2 hours per day)
Mastery System.
Changed Augment system (less mouse clicks)
Fast Login Feature
Giant/Champion Monsters (Normal Monsters have chance respawn as Champion/Giant with better drop/stats.)
And much more...Fast Login
Giant/Champion Monsters
AIO Buffer
Global Gatekepper
Auto Hunt Feature
Mastery Skills Feature
GM Shop
Rebirth System
Skins System
Auction House System
Raid/Grand Boss Gatekepper
Custom Crystal Scrolls
Monster Drop List Feature
-
2 hours ago, 911reg said:
You can literally delete everything from inside LineagePawn, and just leave this:
class LineagePawn extends Pawn;
since you won't be using any of the functions that are stored inside of LineagePawn.uc when compiling LineageMonster. Same with LineageNpc.HerdNpc, same with LineageMonster.HerdMonster, etc.
You can also delete all files from LineageWarrior's folder, and only leave LineagePawn
If you need help with that kind of stuff, send me a DM on DiscordOh thanks you. finally compiled, but another problem animations gone from monster which im editing
-
Hello,
I'm trying compile unreal script (LineageMonster.u) but stucked.
Looks cant find superclass LineagePawn , ok then im trying recompile LineageWarrior where is LineagePawn but get error:
https://prnt.sc/lBm0aA2HwHVZon these lines are
simulated function AnimateRunning () { TurnLeftAnim = GetWalkAnimName(); // 400 line TurnRightAnim = GetWalkAnimName(); MovementAnims[0] = GetCurMoveAnimName(); MovementAnims[1] = GetCurMoveAnimName(); MovementAnims[2] = GetCurMoveAnimName(); MovementAnims[3] = GetCurMoveAnimName(); }
if i comment this line then next line with same error.
Very unclear all these errors, can't understand where is problem...
Maybe someone had this problem?
-
22 hours ago, Nightw0lf said:
i try to use it on my local host but no luck so ever, i also looked for videos still bad luck i guess nothing is coming up
check phx settings dll path
- 1
-
3 minutes ago, Nightw0lf said:
how it works cause i feel dumb
try search in youtube, there many videos about how to use it.
Easy.it not work on servers with protections like smartguard/aa
-
4 minutes ago, Nightw0lf said:
do you have it? i tried to find but i dont even know how it works
https://mega.nz/file/Gc13lC6T#2aZj_JYa-zyvjvRD07uCpED0fQ_ZGZvXmL6sD1ao2n4
good thing to watch/manipulate server/client packets
-
l2phx not working?
-
usemagic change with player ai tryToCast
- 1
Problem adding new items
in [Request] Client Dev Help
Posted
ID order can by problem.
must by
1
2
3
4
5
not
1
2
5
3
4