-
Notifications
You must be signed in to change notification settings - Fork 2
Making an application compatible with COAload
CompatibilityAPI'yi düzgün şekilde belgelendirmediğim için insanların kullanamadığını veya yanlış kullandığını fark ettim. Bunun bir sonucu olarak bu wiki'yi yazma ihtiyacı duydum. Elbette bu yolu(manuel yolu) tekrar tekrar yapmak yorucu geleceğinden(bana da öyle geliyor) şu anda CompatibilityAPI'yi otomatik olarak aşağıdaki işlemleri yapacak şekilde geliştiriyorum. Hazır olduğunda bu yolu sadece isterseniz yapmanız gerekecek diyebilirim.
Konuya dönecek olursak CompatibilityAPI iki farklı yolu kullanarak uygulamaları modifiye ediyor.
- İmport tablosu
- Bellek üzerinden modifiye(Hook)(MinHook projesine teşekkürler.)
Bunların ikiside tamamen farklı yöntemler olsa da ikisinde de V2'deki eksikliklerden dolayı tüm dosyaları modifiye etmeniz gerekiyor.
Uygulamayı uyumlu olması için modifiye edecekseniz uygulamanın kendisini ve tüm çalıştırılabilir(DLL/EXE) dosyalarını CompatibilityAPI V2'de COAload (C:/CompatibilityAPI/coaload.exe) ile ayrı ayrı açıp, ayrı ayrı modlanmasını beklemeniz gerekiyor. Bunun sebebi uygulamaların içeri aktardığı DLL dosyalarının ve uygulamanın kendisinin hangi API'yi kullandığını V2'de tam olarak anlamanın mümkün olmaması. Ayrıca uygulamalarınızı daha da manuel olarak modifiye edebilirsiniz(yani coaload olmadan).
Eğer uygulamanızın çok dosyası varsa shell:sendto klasörüne C:/CompatibilityAPI/coaload.exe'nin kısayolunu attıktan sonra çoklu olarak dosyaları seçip Gönder menüsünden dosyaları toplu modifiye edebilirsiniz.
I realized that people couldn't use CompatibilityAPI or were using it incorrectly because I hadn't documented it properly. As a result, I felt the need to write this wiki. Of course, since repeating this process (the manual way) would be tedious (it seems that way to me too), I am currently developing CompatibilityAPI to automatically perform the following operations. Once it's ready, I can say that you'll only need to do this method if you want to.
Getting back to the topic, the CompatibilityAPI modifies applications using two different methods.
- Import table
- Modification via memory (Hook) (Thanks to the MinHook project.)
Although these are completely different methods, in both cases, you need to modify all files in V2.
If you are going to modify the application to make it compatible, you need to open the application itself and all its executable (DLL/EXE) files separately in CompatibilityAPI V2 with COAload (C:/CompatibilityAPI/coaload.exe). The reason for this is that it is not possible to fully understand which API the DLL files imported by the applications and the application itself use in V2.
If your application has multiple files, you can modify them in bulk by placing a shortcut to C:/CompatibilityAPI/coaload.exe in the shell:sendto folder, then selecting multiple files and choosing Send from the menu.