AylinCE Grandmaster Cheater Supreme
  Reputation: 37
  Joined: 16 Feb 2017 Posts: 1529
 
  | 
		
			
				 Posted: Sat Jan 25, 2025 2:27 pm    Post subject: CE Unique Aobs Generator | 
				       | 
			 
			
				
  | 
			 
			
				A unique aob code creation tool that reads aobs (Hex) codes taken from addresses (or pasted into the Memo box) and places a wildcard "??" character in different bytes.
 
 
You can create a list in 3 ways;
 
1) From Foundlist addresses (with the Found List button)
 
2) From the Address List (with the Address List button)
 
3) Copy and paste your Aobs codes into the Memo box.
 
 
You can also write any length of bytes you want for options 1 and 2.
 
If the box is empty, the default length will be 40 bytes.
 
 
If you want this to be an add-on in the CE menu and can't, let me know in the comments.
 
 
Otherwise, it's just released as a code sample.
 
 
 	  | Code: | 	 		  if aobFrm1 then aobFrm1.Destroy() aobFrm1=nil end
 
DP1=getScreenDPI()/96
 
aobFrm1=createForm()
 
aobFrm1.height=300*DP1 aobFrm1.width=700*DP1 aobFrm1.left=440*DP1 aobFrm1.top=109*DP1
 
aobFrm1.PopupMode=0 aobFrm1.caption="AylinCE Trainers (2025)"
 
aobFrm1.Position="poDesktopCenter" aobFrm1.ShowInTaskBar="stAlways"
 
aobFrm1.BorderStyle="bsNone"
 
aobFrm1.setLayeredAttributes(0x000100, 255, LWA_COLORKEY | LWA_ALPHA )
 
aobFrm1.Color=0x000100
 
 
-------------------------
 
local ftb = {}
 
----------------------- ftb.mnPnl1 ----- 
 
ftb.mnPnl1=createPanel(aobFrm1)
 
ftb.mnPnl1.AutoSize=false
 
ftb.mnPnl1.height=34*DP1 ftb.mnPnl1.width=690*DP1 ftb.mnPnl1.left=5*DP1 ftb.mnPnl1.top=5*DP1
 
ftb.mnPnl1.caption="Unique Aobs Generator"
 
ftb.mnPnl1.Color=8882055 ftb.mnPnl1.BevelWidth=4
 
ftb.mnPnl1.Font.Style="fsBold" ftb.mnPnl1.Font.Size=14*DP1
 
ftb.mnPnl1.OnMouseDown=function() aobFrm1.DragNow() end ftb.mnPnl1.Cursor = -22
 
-----------------------
 
----------------------- ftb.btPnl1 ----- 
 
ftb.btPnl1=createPanel(ftb.mnPnl1)
 
ftb.btPnl1.AutoSize=false
 
ftb.btPnl1.height=24*DP1 ftb.btPnl1.width=25*DP1 ftb.btPnl1.left=5*DP1 ftb.btPnl1.top=5*DP1
 
-----------------------
 
----------------------- ftb.btPnl2 ----- 
 
ftb.btPnl2=createPanel(ftb.mnPnl1)
 
ftb.btPnl2.AutoSize=false
 
ftb.btPnl2.height=24*DP1 ftb.btPnl2.width=25*DP1 ftb.btPnl2.left=660*DP1 ftb.btPnl2.top=5*DP1
 
-----------------------
 
----------------------- ftb.mnPnl2 ----- 
 
ftb.mnPnl2=createPanel(aobFrm1)
 
ftb.mnPnl2.AutoSize=false
 
ftb.mnPnl2.height=255*DP1 ftb.mnPnl2.width=690*DP1 ftb.mnPnl2.left=5*DP1 ftb.mnPnl2.top=40*DP1
 
ftb.mnPnl2.BevelWidth=4
 
ftb.mnPnl2.Color=8882055
 
-----------------------
 
----------------------- ftb.btPnl3 ----- 
 
ftb.btPnl3=createPanel(ftb.mnPnl2)
 
ftb.btPnl3.AutoSize=false
 
ftb.btPnl3.height=25*DP1 ftb.btPnl3.width=105*DP1 ftb.btPnl3.left=10*DP1 ftb.btPnl3.top=10*DP1
 
-----------------------
 
----------------------- ftb.btPnl4 ----- 
 
ftb.btPnl4=createPanel(ftb.mnPnl2)
 
ftb.btPnl4.AutoSize=false
 
ftb.btPnl4.height=25*DP1 ftb.btPnl4.width=110*DP1 ftb.btPnl4.left=125*DP1 ftb.btPnl4.top=10*DP1
 
-----------------------
 
----------------------- ftb.btPnl5 ----- 
 
ftb.btPnl5=createPanel(ftb.mnPnl2)
 
ftb.btPnl5.AutoSize=false
 
ftb.btPnl5.height=25*DP1 ftb.btPnl5.width=100*DP1 ftb.btPnl5.left=580*DP1 ftb.btPnl5.top=10*DP1
 
-----------------------
 
----------------------- ftb.btMm1 ----- 
 
ftb.btMm1=createMemo(ftb.mnPnl2)
 
ftb.btMm1.AutoSize=false
 
ftb.btMm1.height=150*DP1 ftb.btMm1.width=670*DP1 ftb.btMm1.left=10*DP1 ftb.btMm1.top=40*DP1
 
ftb.btMm1.Color=14737632
 
ftb.btMm1.Font.Style="fsBold" ftb.btMm1.Font.Size=0*DP1
 
ftb.btMm1.ScrollBars="ssAutoBoth" ftb.btMm1.wordWrap=false
 
-----------------------
 
----------------------- ftb.btEdt1 ----- 
 
ftb.btEdt1=createEdit(ftb.mnPnl2)
 
ftb.btEdt1.AutoSize=true
 
ftb.btEdt1.height=23*DP1 ftb.btEdt1.width=670*DP1 ftb.btEdt1.left=10*DP1 ftb.btEdt1.top=225*DP1
 
ftb.btEdt1.text=""
 
ftb.btEdt1.Color=14737632
 
ftb.btEdt1.Font.Style="fsBold" ftb.btEdt1.Font.Size=0*DP1
 
-----------------------
 
----------------------- ftb.btPnl6 ----- 
 
ftb.btPnl6=createPanel(ftb.mnPnl2)
 
ftb.btPnl6.AutoSize=false
 
ftb.btPnl6.height=25*DP1 ftb.btPnl6.width=110*DP1 ftb.btPnl6.left=290*DP1 ftb.btPnl6.top=196*DP1
 
-----------------------
 
----------------------- ftb.btLbl1 ----- 
 
ftb.btLbl1=createLabel(ftb.mnPnl2)
 
ftb.btLbl1.AutoSize=false
 
ftb.btLbl1.height=22*DP1 ftb.btLbl1.width=75*DP1 ftb.btLbl1.left=245*DP1 ftb.btLbl1.top=12*DP1
 
ftb.btLbl1.caption="Byte Leng: "
 
ftb.btLbl1.alignment="taLeftJustify"
 
ftb.btLbl1.Font.Style="fsBold" ftb.btLbl1.Font.Size=10*DP1
 
-----------------------
 
----------------------- ftb.btEdt2 ----- 
 
ftb.btEdt2=createEdit(ftb.mnPnl2)
 
ftb.btEdt2.AutoSize=false
 
ftb.btEdt2.height=22*DP1 ftb.btEdt2.width=30*DP1 ftb.btEdt2.left=315*DP1 ftb.btEdt2.top=10*DP1
 
ftb.btEdt2.text=""
 
ftb.btEdt2.Color=14737632
 
ftb.btEdt2.Font.Style="fsBold" ftb.btEdt2.Font.Size=0*DP1
 
-----------------------
 
 
--############################################################################--
 
--############################################################################--
 
 
function panelClickEffect(item2, fsize, text, thint)
 
--local item2 = item2
 
item2.Color=4342338
 
item2.BevelColor=clDefault
 
item2.Font.Size=fsize item2.BevelInner="bvRaised" item2.BevelWidth=3 item2.Font.Color="0x000000"
 
item2.Font.Style="fsBold" item2.Hint=thint item2.ShowHint=true item2.OptimalFill=true
 
item2.Font.Name="Georgia" item2.Cursor=-21 item2.Font.Color="0xffffff"
 
item2.caption = text
 
 
item2.OnMouseMove=function() item2.BevelColor=65280 end
 
item2.OnMouseLeave=function() item2.BevelColor=clDefault end
 
 
item2.OnMouseDown=function() item2.Color=10395294 end
 
item2.OnMouseUp=function() item2.Color=4342338 end
 
end
 
 
panelClickEffect(ftb.btPnl1, 16*DP1, "-", "")
 
panelClickEffect(ftb.btPnl2, 12*DP1, "X", "")
 
panelClickEffect(ftb.btPnl3, 10*DP1, "Found List", "")
 
panelClickEffect(ftb.btPnl4, 10*DP1, "Address List", "")
 
panelClickEffect(ftb.btPnl5, 10*DP1, "Clear List", "")
 
panelClickEffect(ftb.btPnl6, 10*DP1, "Format List", "")
 
 
--############################################################################--
 
--############################################################################--
 
 
ftb.btPnl1.OnClick=function() aobFrm1.WindowState = "wsMinimized" end
 
ftb.btPnl2.OnClick=function() aobFrm1.Close() end
 
 
--############################################################################--
 
--############################################################################--
 
function getByteString1(address, bytecount)
 
 local bytes = readBytes(address, bytecount, true)
 
 if bytes then
 
 local result = ""
 
 for i = 1, #bytes do
 
 if #result > 0 then result = result .. " " end
 
 result = result .. string.format("%02X", bytes[i]) end
 
 return result end
 
end
 
 
ftb.btPnl3.OnClick=function()
 
local fnlst = MainForm.Foundlist3.Items
 
local leng1 = tonumber(ftb.btEdt2.Text)
 
 if leng1==nil then leng1=40 end
 
  if fnlst.Count~=0 then
 
    for i=0, fnlst.Count -1 do
 
      addr1 = fnlst[i].Caption
 
      ftb.btMm1.Lines.Add(getByteString1(addr1, leng1))
 
    end
 
  end
 
end
 
 
ftb.btPnl4.OnClick=function()
 
local al = getAddressList()
 
local leng1 = tonumber(ftb.btEdt2.Text)
 
 if leng1==nil then leng1=40 end
 
  if al.Count~=0 then
 
    for i=0, al.Count -1 do
 
      if al[i].Type ~= vtAutoAssembler and al[i].getCurrentAddress() ~= 0
 
        and al[i].Value ~= "??" then
 
        addr1 = al[i].Address
 
        ftb.btMm1.Lines.Add(getByteString1(addr1, leng1))
 
      end
 
    end
 
  end
 
end
 
 
ftb.btPnl5.OnClick=function() ftb.btMm1.Clear() end
 
 
ftb.btEdt1.OnClick=function()
 
  txt = ftb.btEdt1.Text
 
  writeToClipboard(txt)
 
end
 
 
----------------------------------- Filters ------------------------------------
 
 
function compareHexCodes(hexTable)
 
    local result = {}
 
    local byteTables = {}
 
 
    for _, hex in ipairs(hexTable) do
 
        local bytes = {}
 
        for byte in hex:gmatch("%S+") do
 
            table.insert(bytes, byte)
 
        end
 
        table.insert(byteTables, bytes)
 
    end
 
    for i = 1, #byteTables[1] do
 
        local byte = byteTables[1][i]
 
        local allEqual = true
 
        for j = 2, #byteTables do
 
            if byteTables[j][i] ~= byte then
 
                allEqual = false
 
                break
 
            end
 
        end
 
        if allEqual then
 
            table.insert(result, byte)
 
        else
 
            table.insert(result, "??")
 
        end
 
    end
 
    return table.concat(result, " ")
 
end
 
 
ftb.btPnl6.OnClick=function()
 
  if ftb.btMm1.Lines.Text~="" then
 
    local outTbl = {}
 
     for i = 0, ftb.btMm1.Lines.Count - 1 do
 
       local outs = ftb.btMm1.Lines[i]
 
       table.insert(outTbl, outs)
 
     end
 
    local result = compareHexCodes(outTbl)
 
    ftb.btEdt1.Text=result
 
  end
 
end | 	  
 
 
As always; Happy coding, until we meet on a different topic.
 
 
Here is a result image:
 _________________
  | 
			 
		  |