• Domingo 22 de Diciembre de 2024, 14:52

Autor Tema:  Consulta Sobre Programacion De Dll En Asm  (Leído 1588 veces)

L3andro

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Consulta Sobre Programacion De Dll En Asm
« en: Lunes 17 de Diciembre de 2007, 18:00 »
0
Hola a todos, bueno quisiera consultarles lo siguiente, estoy intentando trabajar con una DLL programada en ASM, tengo algunas cuantas dudas sobre el tema, las cuales seguramente no sean muy complicadas de contestar.

 Bueno el codigo Fuente completo hasta ahora de la DLL es el siguiente:

Código: Text
  1.  
  2. ;EasyCodeName=Module1,1
  3. .386
  4. .Model flat, StdCall
  5. Option CaseMap:none
  6. Include  \masm32\include\windows.inc
  7. Include  \masm32\include\user32.inc
  8. Include  \masm32\include\kernel32.inc
  9. Include  \masm32\include\masm32.inc
  10. IncludeLib  \masm32\lib\user32.lib
  11. IncludeLib  \masm32\lib\kernel32.lib
  12. IncludeLib  \masm32\lib\masm32.lib
  13. Include  \masm32\macros\MACROS.ASM
  14.  
  15. .Const
  16. MEMSIZE Equ 175535
  17. LittleBuffer Equ 10H
  18. GSAuthKey1 Equ 00BE2329H
  19. GSAuthKey2 Equ 0AED66CE1H
  20. GSAuthKey3 Equ 0F1499052H
  21. GSAuthKey4 Equ 0EBE9BBF1H
  22. GSAuthKey5 Equ 0A6B3H
  23. GSAuthKey6 Equ 0DBH
  24. .Data
  25. ItemKor DB "..\data\lang\Kor\item(Kor).txt", 0
  26. ItemVTM DB "..\data\lang\vtm\item(Vtm).txt", 0
  27. SkillKor DB "..\data\lang\Kor\skill(Kor).txt", 0
  28. SkillVTM DB "..\data\lang\vtm\skill(Vtm).txt", 0
  29. QuestKor DB "..\data\lang\Kor\Quest(Kor).txt", 0
  30. QuestVTM DB "..\data\lang\Vtm\Quest(Vtm).txt", 0
  31. CheckSum DB "..\data\lang\Kor\CheckSum.dat", 0
  32. Monster DB "..\data\Monster.txt", 0
  33. Gate DB "..\data\gate.txt", 0
  34. MonsterBase DB "..\data\MonsterSetBase.txt", 0
  35. Shop0 DB "..\data\Shop0.txt", 0
  36. Shop1 DB "..\data\Shop1.txt", 0
  37. Shop2 DB "..\data\Shop2.txt", 0
  38. Shop3 DB "..\data\Shop3.txt", 0
  39. Shop4 DB "..\data\Shop4.txt", 0
  40. Shop5 DB "..\data\Shop5.txt", 0
  41. Shop6 DB "..\data\Shop6.txt", 0
  42. Shop7 DB "..\data\Shop7.txt", 0
  43. Shop8 DB "..\data\Shop8.txt", 0
  44. Shop9 DB "..\data\Shop9.txt", 0
  45. Shop10 DB "..\data\Shop10.txt", 0
  46. Shop11 DB "..\data\Shop11.txt", 0
  47. Shop12 DB "..\data\Shop12.txt", 0
  48. MoveReqKor DB "..\data\lang\Kor\movereq(kor).txt", 0
  49. MoveReqVTM DB "..\data\lang\Vtm\movereq(Vtm).txt", 0
  50. ItemSetOption DB "..\data\lang\Kor\itemsetoption(Kor).txt", 0
  51. ItemSetType DB "..\data\lang\Kor\itemsettype(Kor).txt", 0
  52. CommonLoc DB "..\data\lang\Kor\CommonLoc.cfg", 0
  53. GameServerInfo DB "GameServerInfo", 0
  54. ClientVersion DB "ClientExeVersion", 0
  55. ClientSerial DB "ClientExeSerial", 0
  56. ServerName DD LittleBuffer Dup(0)
  57. VersionServer DD LittleBuffer Dup(0)
  58. ClientVersionReturn DD LittleBuffer Dup(0)
  59. ClientSerialReturn DD LittleBuffer Dup(0)
  60. AGGSOffset DD ?
  61. AGSOffset2 DD ?
  62. FirstTime DD ?
  63. .Data?
  64. hFile HANDLE ?
  65. hMemory HANDLE ?
  66. pMemory DWord ?
  67. SizeReadWrite DWord ?
  68. .Code
  69. DllEntry Proc hInstDLL:HINSTANCE, reason:DWord, reserved1:DWord
  70.  Mov Eax, TRUE
  71.  Ret
  72. DllEntry EndP
  73.  
  74. AGSetInfo Proc
  75.  Mov Eax, DWord Ptr Ss:[Ebp + 18H]
  76.  Mov Ecx, DWord Ptr Ss:[Ebp + 14H]
  77.  Mov Edx, DWord Ptr Ss:[Ebp + 0CH]
  78.  Mov Ebx, DWord Ptr Ss:[Ebp + 20H]
  79.  Mov ServerName, Eax
  80.  Mov VersionServer, Ecx
  81.  Mov AGGSOffset, Edx
  82.  Mov AGSOffset2, Ebx
  83.  Xor Eax, Eax
  84.  Ret
  85. AGSetInfo EndP
  86.  
  87. AGGetKey Proc
  88.  Mov Edx, GSAuthKey1
  89.  Mov Eax, DWord Ptr Ss:[Ebp + 8]
  90.  Mov DWord Ptr Ds:[Eax], Edx
  91.  Mov Edx, GSAuthKey2
  92.  Mov DWord Ptr Ds:[Eax + 4], Edx
  93.  Mov Edx, GSAuthKey3
  94.  Mov DWord Ptr Ds:[Eax + 8], Edx
  95.  Mov Edx, GSAuthKey4
  96.  Mov DWord Ptr Ds:[Eax + 0CH], Edx
  97.  Mov Cx, GSAuthKey5
  98.  Mov Word Ptr Ds:[Eax + 10H], Cx
  99.  Mov Dl, GSAuthKey6
  100.  Mov Byte Ptr Ds:[Eax + 12H], Dl
  101.  Xor Eax, Eax
  102.  Ret
  103. AGGetKey EndP
  104.  
  105. AGRequestData Proc
  106.  Local Number:DWord
  107.  Cmp FirstTime, 0
  108.  Jnz DeleteBuffer
  109.  Mov FirstTime, 1
  110.  Jmp SwitchNumbers
  111. DeleteBuffer:
  112.  Invoke CloseHandle, hFile
  113.  Invoke GlobalUnlock, pMemory
  114.  Invoke GlobalFree, hMemory
  115. SwitchNumbers:
  116.  Mov Ecx, DWord Ptr Ss:[Ebp + 0CH]
  117.  Mov Number, Ecx
  118.  Switch Number
  119. Case 0
  120.  Mov Eax, Offset ItemKor
  121. Case 1
  122.  Mov Eax, Offset ItemVTM
  123. Case 2
  124.  Mov Eax, Offset SkillKor
  125. Case 3
  126.  Mov Eax, Offset SkillVTM
  127. Case 4
  128.  Mov Eax, Offset QuestKor
  129. Case 5
  130.  Mov Eax, Offset QuestVTM
  131. Case 6
  132.  Mov Eax, Offset CheckSum
  133. Case 7
  134.  Mov Eax, Offset Monster
  135. Case 8
  136.  Mov Eax, Offset Gate
  137. Case 9
  138.  Mov Eax, Offset MonsterBase
  139. Case 0BH
  140.  Mov Eax, Offset Shop0
  141. Case 0CH
  142.  Mov Eax, Offset Shop1
  143. Case 0DH
  144.  Mov Eax, Offset Shop2
  145. Case 0EH
  146.  Mov Eax, Offset Shop3
  147. Case 0FH
  148.  Mov Eax, Offset Shop4
  149. Case 10H
  150.  Mov Eax, Offset Shop5
  151. Case 11H
  152.  Mov Eax, Offset Shop6
  153. Case 12H
  154.  Mov Eax, Offset Shop7
  155. Case 13H
  156.  Mov Eax, Offset Shop8
  157. Case 14H
  158.  Mov Eax, Offset Shop9
  159. Case 15H
  160.  Mov Eax, Offset Shop10
  161. Case 16H
  162.  Mov Eax, Offset Shop11
  163. Case 17H
  164.  Mov Eax, Offset Shop12
  165. Case 18H
  166.  Mov Eax, Offset MoveReqKor
  167. Case 1AH
  168.  Mov Eax, Offset ItemSetOption
  169. Case 1CH
  170.  Mov Eax, Offset ItemSetType
  171. EndSw
  172. LoadFile:
  173.  Invoke CreateFile, Eax, GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL
  174.  Mov hFile, Eax
  175.  Invoke GlobalAlloc, GMEM_MOVEABLE Or GMEM_ZEROINIT, MEMSIZE
  176.  Mov hMemory, Eax
  177.  Invoke GlobalLock, hMemory
  178.  Mov pMemory, Eax
  179.  Invoke ReadFile, hFile, pMemory, MEMSIZE - 1, Addr SizeReadWrite, NULL
  180.  Xor Eax, Eax
  181.  Ret
  182. AGRequestData EndP
  183.  
  184. AGGetDataBufferSize Proc
  185.  Mov Eax, SizeReadWrite
  186.  Ret
  187. AGGetDataBufferSize EndP
  188.  
  189. AGGetDataBuffer Proc
  190.  Mov Eax, pMemory
  191.  Ret
  192. AGGetDataBuffer EndP
  193.  
  194. AGGetClientVersion Proc
  195. Invoke GetPrivateProfileString, Addr GameServerInfo, Addr ClientVersion, NULL, Addr ClientVersionReturn, 14H, Addr CommonLoc
  196. Invoke GetPrivateProfileString, Addr GameServerInfo, Addr ClientSerial, NULL, Addr ClientSerialReturn, 14H, Addr CommonLoc
  197. Mov Eax, DWord Ptr Ds:[ClientVersionReturn]
  198. Mov Ecx, DWord Ptr Ds:[ClientVersionReturn + 4]
  199. Mov Edx, DWord Ptr Ss:[Ebp + 8]
  200. Mov DWord Ptr Ds:[Edx], Eax
  201. Mov DWord Ptr Ds:[Edx + 4], Ecx
  202. Mov Eax, DWord Ptr Ds:[ClientSerialReturn]
  203. Mov Ecx, DWord Ptr Ds:[ClientSerialReturn + 4]
  204. Mov Edx, DWord Ptr Ss:[Ebp + 0CH]
  205. Mov DWord Ptr Ds:[Edx], Eax
  206. Mov DWord Ptr Ds:[Edx + 4], Ecx
  207. Mov Eax, DWord Ptr Ds:[ClientSerialReturn + 8]
  208. Mov Ecx, DWord Ptr Ds:[ClientSerialReturn + 0CH]
  209. Mov DWord Ptr Ds:[Edx + 8], Eax
  210. Mov DWord Ptr Ds:[Edx + 0CH], Ecx
  211. Mov Eax, DWord Ptr Ds:[ClientSerialReturn + 10H]
  212. Mov DWord Ptr Ds:[Edx + 10H], Eax
  213. Xor Eax, Eax
  214. Ret
  215. AGGetClientVersion EndP
  216.  
  217. End DllEntry
  218.  
  219.  

Asi como esta, funciona bien... Ahora mi consulta es la siguiente, me decidi a agregarle algunas funciones mas de configuracion, añadiendo un .ini - y quisiera ver si esto esta bien y si de estarlo hay alguna forma de optimizar el codigo si pueden asesorarme, o corregirme de estar mal.

 Lo que agrego seria lo siguiente.

Dentro de .Data añado esto:

Código: Text
  1.  
  2. .Data
  3.  
  4. IsGlobalChatBuff DB 1 Dup(0)
  5. GChatLevelBuff DB 4 Dup(0)
  6. GChatMoneyBuff DB 4 Dup(0)
  7.  
  8. Sections DB "Config", 0
  9. IniFileName DB "./Config.ini" , 0
  10.  
  11.  


Y posteriormente creo un nuevo Proc de la siguiente manera:

Código: Text
  1.  
  2. LoadConfig Proc
  3.   Invoke GetPrivateProfileInt, Addr Sections, Addr IsGlobalChat, 0, Addr IniFileName
  4.   Mov DWord Ptr Ds:[IsGlobalChatBuff], Eax
  5.   Invoke GetPrivateProfileInt, Addr Sections, Addr GChatLevel, 50, Addr IniFileName
  6.   Mov DWord Ptr Ds:[GChatLevelBuff], Eax
  7.   Invoke GetPrivateProfileInt, Addr Sections, Addr GChatMoney, 10000, Addr IniFileName
  8.   Mov DWord Ptr Ds:[GChatMoneyBuff], Eax
  9.   Retn
  10. LoadConfig EndP
  11.  
  12.  


Las opciones son muchisimas mas, pero en resumen la idea es esa, y esto quedaria de la siguiente manera:

Código: Text
  1.  
  2.  
  3. .386
  4. .Model flat, StdCall
  5. Option CaseMap:none
  6. Include  \masm32\include\windows.inc
  7. Include  \masm32\include\user32.inc
  8. Include  \masm32\include\kernel32.inc
  9. Include  \masm32\include\masm32.inc
  10. IncludeLib  \masm32\lib\user32.lib
  11. IncludeLib  \masm32\lib\kernel32.lib
  12. IncludeLib  \masm32\lib\masm32.lib
  13. Include  \masm32\macros\MACROS.ASM
  14.  
  15. .Const
  16. MEMSIZE Equ 175535
  17. LittleBuffer Equ 10H
  18. GSAuthKey1 Equ 00BE2329H
  19. GSAuthKey2 Equ 0AED66CE1H
  20. GSAuthKey3 Equ 0F1499052H
  21. GSAuthKey4 Equ 0EBE9BBF1H
  22. GSAuthKey5 Equ 0A6B3H
  23. GSAuthKey6 Equ 0DBH
  24. .Data
  25.  
  26. IsGlobalChatBuff DB 1 Dup(0)
  27. GChatLevelBuff DB 4 Dup(0)
  28. GChatMoneyBuff DB 4 Dup(0)
  29.  
  30. Sections DB "Config", 0
  31. IniFileName DB "./Config.ini" , 0
  32.  
  33. ItemKor DB "..\data\lang\Kor\item(Kor).txt", 0
  34. ItemVTM DB "..\data\lang\vtm\item(Vtm).txt", 0
  35. SkillKor DB "..\data\lang\Kor\skill(Kor).txt", 0
  36. SkillVTM DB "..\data\lang\vtm\skill(Vtm).txt", 0
  37. QuestKor DB "..\data\lang\Kor\Quest(Kor).txt", 0
  38. QuestVTM DB "..\data\lang\Vtm\Quest(Vtm).txt", 0
  39. CheckSum DB "..\data\lang\Kor\CheckSum.dat", 0
  40. Monster DB "..\data\Monster.txt", 0
  41. Gate DB "..\data\gate.txt", 0
  42. MonsterBase DB "..\data\MonsterSetBase.txt", 0
  43. Shop0 DB "..\data\Shop0.txt", 0
  44. Shop1 DB "..\data\Shop1.txt", 0
  45. Shop2 DB "..\data\Shop2.txt", 0
  46. Shop3 DB "..\data\Shop3.txt", 0
  47. Shop4 DB "..\data\Shop4.txt", 0
  48. Shop5 DB "..\data\Shop5.txt", 0
  49. Shop6 DB "..\data\Shop6.txt", 0
  50. Shop7 DB "..\data\Shop7.txt", 0
  51. Shop8 DB "..\data\Shop8.txt", 0
  52. Shop9 DB "..\data\Shop9.txt", 0
  53. Shop10 DB "..\data\Shop10.txt", 0
  54. Shop11 DB "..\data\Shop11.txt", 0
  55. Shop12 DB "..\data\Shop12.txt", 0
  56. MoveReqKor DB "..\data\lang\Kor\movereq(kor).txt", 0
  57. MoveReqVTM DB "..\data\lang\Vtm\movereq(Vtm).txt", 0
  58. ItemSetOption DB "..\data\lang\Kor\itemsetoption(Kor).txt", 0
  59. ItemSetType DB "..\data\lang\Kor\itemsettype(Kor).txt", 0
  60. CommonLoc DB "..\data\lang\Kor\CommonLoc.cfg", 0
  61. GameServerInfo DB "GameServerInfo", 0
  62. ClientVersion DB "ClientExeVersion", 0
  63. ClientSerial DB "ClientExeSerial", 0
  64. ServerName DD LittleBuffer Dup(0)
  65. VersionServer DD LittleBuffer Dup(0)
  66. ClientVersionReturn DD LittleBuffer Dup(0)
  67. ClientSerialReturn DD LittleBuffer Dup(0)
  68. AGGSOffset DD ?
  69. AGSOffset2 DD ?
  70. FirstTime DD ?
  71. .Data?
  72. hFile HANDLE ?
  73. hMemory HANDLE ?
  74. pMemory DWord ?
  75. SizeReadWrite DWord ?
  76. .Code
  77. DllEntry Proc hInstDLL:HINSTANCE, reason:DWord, reserved1:DWord
  78.  Mov Eax, TRUE
  79.  Ret
  80. DllEntry EndP
  81.  
  82. LoadConfig Proc
  83.   Invoke GetPrivateProfileInt, Addr Sections, Addr IsGlobalChat, 0, Addr IniFileName
  84.   Mov DWord Ptr Ds:[IsGlobalChatBuff], Eax
  85.   Invoke GetPrivateProfileInt, Addr Sections, Addr GChatLevel, 50, Addr IniFileName
  86.   Mov DWord Ptr Ds:[GChatLevelBuff], Eax
  87.   Invoke GetPrivateProfileInt, Addr Sections, Addr GChatMoney, 10000, Addr IniFileName
  88.   Mov DWord Ptr Ds:[GChatMoneyBuff], Eax
  89.   Retn
  90. LoadConfig EndP
  91.  
  92. AGSetInfo Proc
  93.  Mov Eax, DWord Ptr Ss:[Ebp + 18H]
  94.  Mov Ecx, DWord Ptr Ss:[Ebp + 14H]
  95.  Mov Edx, DWord Ptr Ss:[Ebp + 0CH]
  96.  Mov Ebx, DWord Ptr Ss:[Ebp + 20H]
  97.  Mov ServerName, Eax
  98.  Mov VersionServer, Ecx
  99.  Mov AGGSOffset, Edx
  100.  Mov AGSOffset2, Ebx
  101.  Xor Eax, Eax
  102.  Ret
  103.  AGSetInfo
  104.  
  105. AGGetKey Proc
  106.  Mov Edx, GSAuthKey1
  107.  Mov Eax, DWord Ptr Ss:[Ebp + 8]
  108.  Mov DWord Ptr Ds:[Eax], Edx
  109.  Mov Edx, GSAuthKey2
  110.  Mov DWord Ptr Ds:[Eax + 4], Edx
  111.  Mov Edx, GSAuthKey3
  112.  Mov DWord Ptr Ds:[Eax + 8], Edx
  113.  Mov Edx, GSAuthKey4
  114.  Mov DWord Ptr Ds:[Eax + 0CH], Edx
  115.  Mov Cx, GSAuthKey5
  116.  Mov Word Ptr Ds:[Eax + 10H], Cx
  117.  Mov Dl, GSAuthKey6
  118.  Mov Byte Ptr Ds:[Eax + 12H], Dl
  119.  Xor Eax, Eax
  120.  Ret
  121. AGGetKey EndP
  122.  
  123. AGRequestData Proc
  124.  Local Number:DWord
  125.  Cmp FirstTime, 0
  126.  Jnz DeleteBuffer
  127.  Mov FirstTime, 1
  128.  Jmp SwitchNumbers
  129. DeleteBuffer:
  130.  Invoke CloseHandle, hFile
  131.  Invoke GlobalUnlock, pMemory
  132.  Invoke GlobalFree, hMemory
  133. SwitchNumbers:
  134.  Mov Ecx, DWord Ptr Ss:[Ebp + 0CH]
  135.  Mov Number, Ecx
  136.  Switch Number
  137. Case 0
  138.  Mov Eax, Offset ItemKor
  139. Case 1
  140.  Mov Eax, Offset ItemVTM
  141. Case 2
  142.  Mov Eax, Offset SkillKor
  143. Case 3
  144.  Mov Eax, Offset SkillVTM
  145. Case 4
  146.  Mov Eax, Offset QuestKor
  147. Case 5
  148.  Mov Eax, Offset QuestVTM
  149. Case 6
  150.  Mov Eax, Offset CheckSum
  151. Case 7
  152.  Mov Eax, Offset Monster
  153. Case 8
  154.  Mov Eax, Offset Gate
  155. Case 9
  156.  Mov Eax, Offset MonsterBase
  157. Case 0BH
  158.  Mov Eax, Offset Shop0
  159. Case 0CH
  160.  Mov Eax, Offset Shop1
  161. Case 0DH
  162.  Mov Eax, Offset Shop2
  163. Case 0EH
  164.  Mov Eax, Offset Shop3
  165. Case 0FH
  166.  Mov Eax, Offset Shop4
  167. Case 10H
  168.  Mov Eax, Offset Shop5
  169. Case 11H
  170.  Mov Eax, Offset Shop6
  171. Case 12H
  172.  Mov Eax, Offset Shop7
  173. Case 13H
  174.  Mov Eax, Offset Shop8
  175. Case 14H
  176.  Mov Eax, Offset Shop9
  177. Case 15H
  178.  Mov Eax, Offset Shop10
  179. Case 16H
  180.  Mov Eax, Offset Shop11
  181. Case 17H
  182.  Mov Eax, Offset Shop12
  183. Case 18H
  184.  Mov Eax, Offset MoveReqKor
  185. Case 1AH
  186.  Mov Eax, Offset ItemSetOption
  187. Case 1CH
  188.  Mov Eax, Offset ItemSetType
  189. EndSw
  190. LoadFile:
  191.  Invoke CreateFile, Eax, GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL
  192.  Mov hFile, Eax
  193.  Invoke GlobalAlloc, GMEM_MOVEABLE Or GMEM_ZEROINIT, MEMSIZE
  194.  Mov hMemory, Eax
  195.  Invoke GlobalLock, hMemory
  196.  Mov pMemory, Eax
  197.  Invoke ReadFile, hFile, pMemory, MEMSIZE - 1, Addr SizeReadWrite, NULL
  198.  Xor Eax, Eax
  199.  Ret
  200. AGRequestData EndP
  201.  
  202. AGGetDataBufferSize Proc
  203.  Mov Eax, SizeReadWrite
  204.  Ret
  205. AGGetDataBufferSize EndP
  206.  
  207. AGGetDataBuffer Proc
  208.  Mov Eax, pMemory
  209.  Ret
  210. AGGetDataBuffer EndP
  211.  
  212. AGGetClientVersion Proc
  213. Invoke GetPrivateProfileString, Addr GameServerInfo, Addr ClientVersion, NULL, Addr ClientVersionReturn, 14H, Addr CommonLoc
  214. Invoke GetPrivateProfileString, Addr GameServerInfo, Addr ClientSerial, NULL, Addr ClientSerialReturn, 14H, Addr CommonLoc
  215. Mov Eax, DWord Ptr Ds:[ClientVersionReturn]
  216. Mov Ecx, DWord Ptr Ds:[ClientVersionReturn + 4]
  217. Mov Edx, DWord Ptr Ss:[Ebp + 8]
  218. Mov DWord Ptr Ds:[Edx], Eax
  219. Mov DWord Ptr Ds:[Edx + 4], Ecx
  220. Mov Eax, DWord Ptr Ds:[ClientSerialReturn]
  221. Mov Ecx, DWord Ptr Ds:[ClientSerialReturn + 4]
  222. Mov Edx, DWord Ptr Ss:[Ebp + 0CH]
  223. Mov DWord Ptr Ds:[Edx], Eax
  224. Mov DWord Ptr Ds:[Edx + 4], Ecx
  225. Mov Eax, DWord Ptr Ds:[ClientSerialReturn + 8]
  226. Mov Ecx, DWord Ptr Ds:[ClientSerialReturn + 0CH]
  227. Mov DWord Ptr Ds:[Edx + 8], Eax
  228. Mov DWord Ptr Ds:[Edx + 0CH], Ecx
  229. Mov Eax, DWord Ptr Ds:[ClientSerialReturn + 10H]
  230. Mov DWord Ptr Ds:[Edx + 10H], Eax
  231. Xor Eax, Eax
  232. Ret
  233. AGGetClientVersion EndP
  234.  
  235.  
  236. End DllEntry
  237.  
  238.  

 Bueno mi consulta es la nombrada, quisiera saber si los ultimos agregados como el del .ini para configuracion estan bien aplicados, y si hay alguna manera de optimizar el codigo.

Saludos y desde ya gracias.
Single I Want To learn as much that Likes
Studying ASM, You can Help Me?