Tools are overrated anyway. You're going to benefit a TON more by learning how to do this for yourself. Alright. here's a bunch of information comin' at ya, are you ready?
First you'll need a hex editor, such as Hexecute, Translhextion, WindHex32, or GoldFinger. It's up to you which one you prefer, but these are some of the most popular. And before I really get into all of this, I want to apologize if it ever appears like I am insulting your knowledge, I just don't know how much you know at this point so I am going to try to be thorough.
Now open up your rom in the hex editor
Here are he offsets to the trainer party data for the gym leaders and the Elite Four:
Giovanni - 0x3A290
Bruno - 0x3A3A9
Brock - 0x3A3B5
Misty - 0x3A3BB
Lt. Surge - 0x3A3C1
Erika - 0x3A3C9
Koga - 0x3A3D1
Blaine - 0x3A3DB
Sabrina - 0x3A3E5
Lorelei - 0x3A4BB
Agatha - 0x3A516
Lance - 0x3A522
Note: "0x" is a prefix indicating that the number is in hexadecimal (base 16). You can use Windows Calculator to easily convert between decimal (base 10) and hexadecimal. Just open up Windows Calculator, press the "View" drop-down and select "Scientific" if it is not already selected and then you can type a number in decimal and then click "Hex" to get the hexadecimal, or type a number in hexadecimal and click "Dec" to get the decimal number. Let me know if you need more information on how the base 16 number system works.
Now at these offsets, you'll notice the first byte is always 0xFF. This indicates that this trainer is a special trainer where each Pokemon can have a unique level. Other trainer party data, such as Bug Catcher or Youngster, do not have 0xFF and just start with the party data because all of their Pokemon have to be the same level. Anyway, the format for special trainers is:
1st byte: FF (indicates special trainer)
2nd byte: First Pokemon's level
3rd byte: First Pokemon's ID
4th byte: Second Pokemon's level
5th byte: Second Pokemon's ID
if there are more Pokemon for the trainer, the format continues (level, then Pokemon)
Last byte: 00 (tells the game it is done reading the party data for this trainer)
Now to edit this data, the levels are pretty simple. Just replace the level byte with whatever level you want it to be, but the number you put in has to be hexadecimal. So the decimal number 100 is 0x64 in hex so you probably won't want to use a number above 0x64. (although the levels are capable of going up to 255 (0xFF))
Next is editing the Pokemon ID. Here are the IDs for each Pokemon:
Hex Dec Pokémon
01 001 Rhydon
02 002 Kangaskhan
03 003 NidoranM
04 004 Clefairy
05 005 Spearow
06 006 Voltorb
07 007 Nidoking
08 008 Slowbro
09 009 Ivysaur
0A 010 Exeggutor
0B 011 Lickitung
0C 012 Exeggcute
0D 013 Grimer
0E 014 Gengar
0F 015 NidoranF
10 016 Nidoqueen
11 017 Cubone
12 018 Rhyhorn
13 019 Lapras
14 020 Arcanine
15 021 Mew
16 022 Gyarados
17 023 Shellder
18 024 Tentacool
19 025 Gastly
1A 026 Scyther
1B 027 Staryu
1C 028 Blastoise
1D 029 Pinsir
1E 030 Tangela
1F 031 Missingno.
20 032 Missingno.
21 033 Growlithe
22 034 Onix
23 035 Fearow
24 036 Pidgey
25 037 Slowpoke
26 038 Kadabra
27 039 Graveler
28 040 Chansey
29 041 Machoke
2A 042 Mr. Mime
2B 043 Hitmonlee
2C 044 Hitmonchan
2D 045 Arbok
2E 046 Parasect
2F 047 Psyduck
30 048 Drowzee
31 049 Golem
32 050 Missingno.
33 051 Magmar
34 052 Missingno.
35 053 Electabuzz
36 054 Magneton
37 055 Koffing
38 056 Missingno.
39 057 Mankey
3A 058 Seel
3B 059 Diglett
3C 060 Tauros
3D 061 Missingno.
3E 062 Missingno.
3F 063 Missingno.
40 064 Farfetch'd
41 065 Venonat
42 066 Dragonite
43 067 Missingno.
44 068 Missingno.
45 069 Missingno.
46 070 Doduo
47 071 Poliwag
48 072 Jynx
49 073 Moltres
4A 074 Articuno
4B 075 Zapdos
4C 076 Ditto
4D 077 Meowth
4E 078 Krabby
4F 079 Missingno.
50 080 Missingno.
51 081 Missingno.
52 082 Vulpix
53 083 Ninetales
54 084 Pikachu
55 085 Raichu
56 086 Missingno.
57 087 Missingno.
58 088 Dratini
59 089 Dragonair
5A 090 Kabuto
5B 091 Kabutops
5C 092 Horsea
5D 093 Seadra
5E 094 Missingno.
5F 095 Missingno.
60 096 Sandshrew
61 097 Sandslash
62 098 Omanyte
63 099 Omastar
64 100 Jigglypuff
65 101 Wigglytuff
66 102 Eevee
67 103 Flareon
68 104 Jolteon
69 105 Vaporeon
6A 106 Machop
6B 107 Zubat
6C 108 Ekans
6D 109 Paras
6E 110 Poliwhirl
6F 111 Poliwrath
70 112 Weedle
71 113 Kakuna
72 114 Beedrill
73 115 Missingno.
74 116 Dodrio
75 117 Primeape
76 118 Dugtrio
77 119 Venomoth
78 120 Dewgong
79 121 Missingno.
7A 122 Missingno.
7B 123 Caterpie
7C 124 Metapod
7D 125 Butterfree
7E 126 Machamp
7F 127 Missingno.
80 128 Golduck
81 129 Hypno
82 130 Golbat
83 131 Mewtwo
84 132 Snorlax
85 133 Magikarp
86 134 Missingno.
87 135 Missingno.
88 136 Muk
89 137 Missingno.
8A 138 Kingler
8B 139 Cloyster
8C 140 Missingno.
8D 141 Electrode
8E 142 Clefable
8F 143 Weezing
90 144 Persian
91 145 Marowak
92 146 Missingno.
93 147 Haunter
94 148 Abra
95 149 Alakazam
96 150 Pidgeotto
97 151 Pidgeot
98 152 Starmie
99 153 Bulbasaur
9A 154 Venusaur
9B 155 Tentacruel
9C 156 Missingno.
9D 157 Goldeen
9E 158 Seaking
9F 159 Missingno.
A0 160 Missingno.
A1 161 Missingno.
A2 162 Missingno.
A3 163 Ponyta
A4 164 Rapidash
A5 165 Rattata
A6 166 Raticate
A7 167 Nidorino
A8 168 Nidorina
A9 169 Geodude
AA 170 Porygon
AB 171 Aerodactyl
AC 172 Missingno.
AD 173 Magnemite
AE 174 Missingno.
AF 175 Missingno.
B0 176 Charmander
B1 177 Squirtle
B2 178 Charmeleon
B3 179 Wartortle
B4 180 Charizard
B5 181 Missingno.
B6 182 Missingno. Kabutops Fossil
B7 183 Missingno. Aerodactyl Fossil
B8 184 Missingno. Ghost
B9 185 Oddish
BA 186 Gloom
BB 187 Vileplume
BC 188 Bellsprout
BD 189 Weepinbell
BE 190 Victreebel
Now just get the Hexadecimal ID of the Pokemon you want to put in and replace the ID of the Pokemon you are trying to edit.
Let's do Brock as an example. So go to 0x3A3B5. The first byte we see is FF so we know this is a special trainer. The next two bytes are 0C A9. The first byte should be the level and 0x0C in decimal is 12. According to the table I provided, A9 is Geodude. So Brock's first Pokemon should be a level 12 Geodude. The next two bytes are 0E 22. 0x0E is 14 and 22 is Onix. So Brock's second Pokemon is a level 14 Onix. The next byte is 00 so we know those are the only two Pokemon Brock has. Make sense?
Let me know if you have any questions on anything I said or anything about how to use a hex editor. Good luck!