SlideShare a Scribd company logo
@mscottford
BUILDING A BRIDGE TO
@mscottford
BY M. SCOTT FORD
CO-FOUNDER & CHIEF CODE WHISPERER, CORGIBYTES
HOW HARD COULD THAT BE?
A LEGACY APPLICATION
@mscottford
ABOUT ME
@mscottford
@mscottford@mscottford
CHIEF CODE WHISPERER
CO-FOUNDER AND
@mscottford
THIS IS A STORY
@mscottford
VENDORS
APICLIENTS
GAMMA
DELTA
BETA
ALPHA
THE ARCHITECTURE
@mscottford
VENDORS
API
ALPHA
TYPICAL INTEGRATION
CONNECTOR
VENDOR
SDK
VENDOR
SYSTEM
@mscottford
VENDORS
API
TARGET
TARGET INTEGRATION
CONNECTOR
TARGET
SYSTEM
??
NO SDK
@mscottford
WHAT DID WE KNOW?
TARGET SYSTEM
SERVICE
ON PREMISES
CLIENT UI
DATABASE
ADMIN UI
• Target system ran on Windows 7 desktop
• Data was stored in some form of database on the desktop
@mscottford
OPTIONS
TARGET SYSTEM
SERVICE
ON PREMISES
CLIENT UI
DATABASE
ADMIN UI
@mscottford
OPTIONS
TARGET SYSTEM
SERVICE
ON PREMISES
CLIENT UI
DATABASE
ADMIN UI
• Find an undocumented SDK
@mscottford
OPTIONS
TARGET SYSTEM
SERVICE
ON PREMISES
CLIENT UI
DATABASE
ADMIN UI
• Find an undocumented SDK
• Find libraries for
communicating with DB
@mscottford
OPTIONS
TARGET SYSTEM
SERVICE
ON PREMISES
CLIENT UI
DATABASE
ADMIN UI
• Find an undocumented SDK
• Find libraries for
communicating with DB
• Screen scrape the UI
@mscottford
OPTIONS
TARGET SYSTEM
SERVICE
ON PREMISES
CLIENT UI
DATABASE
ADMIN UI
• Find an undocumented SDK
• Find libraries for
communicating with DB
• Screen scrape the UI
• Reverse engineer DB file format
@mscottford
OPTIONS
TARGET SYSTEM
SERVICE
ON PREMISES
CLIENT UI
DATABASE
ADMIN UI
• Find an undocumented SDK
• Find libraries for
communicating with DB
• Screen scrape the UI
• Reverse engineer DB file format
@mscottford
PLAN OF ATTACK
Reverse engineer DB file format
Find libraries for communicating with DB
@mscottford
@mscottford
PLAN OF ATTACK
Reverse engineer DB file format
Find libraries for communicating with DB
Find an undocumented SDK
@mscottford
@mscottford
PLAN OF ATTACK
Reverse engineer DB file format
Find libraries for communicating with DB
Find an undocumented SDK
@mscottford
@mscottford
PLAN OF ATTACK
Reverse engineer DB file format
Find libraries for communicating with DB
Find an undocumented SDK
@mscottford
@mscottford
MAYBE THERE’S AN SDK
@mscottford
THE HUNT FOR AN SDK
@mscottford
@mscottford
THE HUNT FOR AN SDK
•Visually skimmed installation directory looking for
anything obvious
@mscottford
@mscottford
THE HUNT FOR AN SDK
•Visually skimmed installation directory looking for
anything obvious
•Found evidence of very old tooling - some .EXEs had
default icon from old versions of Visual C++
@mscottford
@mscottford
THE HUNT FOR AN SDK
•Visually skimmed installation directory looking for
anything obvious
•Found evidence of very old tooling - some .EXEs had
default icon from old versions of Visual C++
•Ran dumpbin on all DLLs for any callable functions
@mscottford
@mscottford
THE HUNT FOR AN SDK
•Visually skimmed installation directory looking for
anything obvious
•Found evidence of very old tooling - some .EXEs had
default icon from old versions of Visual C++
•Ran dumpbin on all DLLs for any callable functions
•Nothing obvious found
@mscottford
@mscottford
MAYBE THE DB IS OFF THE SHELF
@mscottford
FIND THE DB ACCESS DLL
@mscottford
@mscottford
FIND THE DB ACCESS DLL
•Looked for evidence of commercially available
database (you name it we looked) – found none
@mscottford
@mscottford
FIND THE DB ACCESS DLL
•Looked for evidence of commercially available
database (you name it we looked) – found none
•Looked though dumpbin output for data access
functions we could call
@mscottford
@mscottford
FIND THE DB ACCESS DLL
•Looked for evidence of commercially available
database (you name it we looked) – found none
•Looked though dumpbin output for data access
functions we could call
•Decompiled a few .NET DLLs
@mscottford
@mscottford
FIND THE DB ACCESS DLL
•Looked for evidence of commercially available
database (you name it we looked) – found none
•Looked though dumpbin output for data access
functions we could call
•Decompiled a few .NET DLLs
•Nothing obvious found
@mscottford
@mscottford
YAY! REVERSE ENGINEERING TIME!
@mscottford
REVERSE ENGINEERING DB
@mscottford
@mscottford
REVERSE ENGINEERING DB
•Find the files
@mscottford
@mscottford
REVERSE ENGINEERING DB
•Find the files
–Made a small change in the admin UI
@mscottford
@mscottford
REVERSE ENGINEERING DB
•Find the files
–Made a small change in the admin UI
–Sorted files by date modified
@mscottford
@mscottford
REVERSE ENGINEERING DB
•Find the files
–Made a small change in the admin UI
–Sorted files by date modified
–Got lucky! Only one file, a .BIN
@mscottford
@mscottford
REVERSE ENGINEERING DB
•Find the files
–Made a small change in the admin UI
–Sorted files by date modified
–Got lucky! Only one file, a .BIN
•Open our favorite hex editor Synalyze It!
@mscottford
@mscottford
SYNALYZE IT!
@mscottford
@mscottford
REVERSE ENGINEERING DB
@mscottford
@mscottford
REVERSE ENGINEERING DB
•Search for strings
–Found tables names – including “btree”
@mscottford
@mscottford
REVERSE ENGINEERING DB
•Search for strings
–Found tables names – including “btree”
•Look for patterns in the file
–Map them out in Synalyze It!
@mscottford
@mscottford
TIME FOR THE GRIND
@mscottford
@mscottford
THE GRIND
@mscottford
@mscottford
THE GRIND
•Make a change in the UI (mostly via client UI)
@mscottford
@mscottford
THE GRIND
•Make a change in the UI (mostly via client UI)
•Diff before and after
@mscottford
@mscottford
THE GRIND
•Make a change in the UI (mostly via client UI)
•Diff before and after
•Mark location in Synalize It
@mscottford
@mscottford
THE GRIND
•Make a change in the UI (mostly via client UI)
•Diff before and after
•Mark location in Synalize It
•Repeat
@mscottford
@mscottford
THE GRIND
•Make a change in the UI (mostly via client UI)
•Diff before and after
•Mark location in Synalize It
•Repeat
•Only focus on data that we need
@mscottford
@mscottford
BUILD THE CONNECTOR
@mscottford
@mscottford
BUILDING THE CONNECTOR
@mscottford
@mscottford
BUILDING THE CONNECTOR
•Only implement read commands
@mscottford
@mscottford
BUILDING THE CONNECTOR
•Only implement read commands
•Delay read/write until after demo
@mscottford
@mscottford
BUILDING THE CONNECTOR
•Only implement read commands
•Delay read/write until after demo
•Come up with some ideas about how to avoid conflicts
when write is implemented
@mscottford
@mscottford
VENDORS
API
TARGET
TARGET INTEGRATION
CONNECTOR
TARGET
SYSTEM
CUSTOM
SDK
@mscottford
TIME TO DEMO TO THE CLIENT
@mscottford
@mscottford
THE DEMO
@mscottford
@mscottford
THE DEMO
•CTO of vendor was present at the demo
@mscottford
@mscottford
THE DEMO
•CTO of vendor was present at the demo
•They were alarmed by the fact that it was working
@mscottford
@mscottford
THE DEMO
•CTO of vendor was present at the demo
•They were alarmed by the fact that it was working
•Turns out there was an SDK after all
@mscottford
@mscottford
THE DEMO
•CTO of vendor was present at the demo
•They were alarmed by the fact that it was working
•Turns out there was an SDK after all
•When they found out we had plans for read/write
support, their department handed it over
@mscottford
@mscottford
BUMMER
@mscottford
@mscottford
NOT SO FAST
@mscottford
@mscottford
NOT SO FAST
•We learned a lot
@mscottford
@mscottford
NOT SO FAST
•We learned a lot
•We had a ton of fun
@mscottford
@mscottford
NOT SO FAST
•We learned a lot
•We had a ton of fun
•Our work led to the best possible solution being
uncovered
@mscottford
@mscottford
NOT SO FAST
•We learned a lot
•We had a ton of fun
•Our work led to the best possible solution being
uncovered
•A read/write implementation would have been risky
@mscottford
@mscottford
CONTACT INFO
@mscottford
@corgibytes
corgibytes.com
LegacyCode.Rocks
@mscottford
QUESTIONS?
@mscottford
CONTACT INFO
@mscottford
@corgibytes
corgibytes.com
LegacyCode.Rocks

More Related Content

PDF
Important metrics for Measuring Code Health
PPTX
How To Think Like A Programmer
PDF
Re-inventing the Database: What to Keep and What to Throw Away
PDF
ShaREing Is Caring
DOCX
Resume_AbinashMohanty
PDF
SQL Server User Group 02/2009
PDF
Thinking outside the box, learning a little about a lot
PDF
SQL Server 2008 Migration Workshop 04/29/2009
Important metrics for Measuring Code Health
How To Think Like A Programmer
Re-inventing the Database: What to Keep and What to Throw Away
ShaREing Is Caring
Resume_AbinashMohanty
SQL Server User Group 02/2009
Thinking outside the box, learning a little about a lot
SQL Server 2008 Migration Workshop 04/29/2009

Similar to Building a Bridge to a Legacy Application: How Hard Can That Be? (20)

PDF
SQL Server Workshop Paul Bertucci
KEY
Gearman
DOCX
RAGHUNATH_GORLA_RESUME
PDF
Cmdb intro 2012 v1
PPTX
Patterns of Cloud Applications Using Microsoft Azure Services Platform
PDF
I Know What You Did THIS Summer
PPTX
Azure Services Platform
PPT
Db trends final
PDF
Summer training oracle
PDF
Tools for developing and monitoring SQL in DB2 for z/OS
PPTX
DevOps, Databases and The Phoenix Project UGF4042 from OOW14
PDF
Tanel Poder - Performance stories from Exadata Migrations
PPTX
S424. Soa Mainframe Practices Best And Worst
PPTX
Remote Asset Management with InduSoft Web Studio
PPTX
Summer training oracle
PDF
Designing Enterprise IT Systems with REST - QCon San Francisco 2008
PPTX
Moving Web Apps to the Cloud - Iowa User Group Tour, Feb 2012
PDF
Joe Staner Zend Con 2008
PPTX
OOP -interface and objects.pptx
SQL Server Workshop Paul Bertucci
Gearman
RAGHUNATH_GORLA_RESUME
Cmdb intro 2012 v1
Patterns of Cloud Applications Using Microsoft Azure Services Platform
I Know What You Did THIS Summer
Azure Services Platform
Db trends final
Summer training oracle
Tools for developing and monitoring SQL in DB2 for z/OS
DevOps, Databases and The Phoenix Project UGF4042 from OOW14
Tanel Poder - Performance stories from Exadata Migrations
S424. Soa Mainframe Practices Best And Worst
Remote Asset Management with InduSoft Web Studio
Summer training oracle
Designing Enterprise IT Systems with REST - QCon San Francisco 2008
Moving Web Apps to the Cloud - Iowa User Group Tour, Feb 2012
Joe Staner Zend Con 2008
OOP -interface and objects.pptx
Ad

More from M. Scott Ford (10)

PPTX
Lessons Learned Migrating from Jekyll to Next.pptx
PDF
PyGeekle 2022 - A Deep Dive into Measuring Dependency Freshness with LibYear
PDF
Communication is Just as Important as Code
PDF
MenderCon 2021 - Keynote
PDF
Moving a Monolith to Kubernetes
PDF
MenderCon 2020 Keynote Presentation
PDF
Makers and menders - Finding Talent for Legacy Code Projects
PDF
A deep dive into measuring dependency freshness with lib year
PDF
Embracing the Red Bar: A Technique for Safely Refactoring Your Test Suite
PDF
Old Code, New Tricks
Lessons Learned Migrating from Jekyll to Next.pptx
PyGeekle 2022 - A Deep Dive into Measuring Dependency Freshness with LibYear
Communication is Just as Important as Code
MenderCon 2021 - Keynote
Moving a Monolith to Kubernetes
MenderCon 2020 Keynote Presentation
Makers and menders - Finding Talent for Legacy Code Projects
A deep dive into measuring dependency freshness with lib year
Embracing the Red Bar: A Technique for Safely Refactoring Your Test Suite
Old Code, New Tricks
Ad

Recently uploaded (20)

PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Essential Infomation Tech presentation.pptx
PDF
medical staffing services at VALiNTRY
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
System and Network Administration Chapter 2
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Nekopoi APK 2025 free lastest update
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
How to Migrate SBCGlobal Email to Yahoo Easily
Operating system designcfffgfgggggggvggggggggg
Wondershare Filmora 15 Crack With Activation Key [2025
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Essential Infomation Tech presentation.pptx
medical staffing services at VALiNTRY
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
How to Choose the Right IT Partner for Your Business in Malaysia
PTS Company Brochure 2025 (1).pdf.......
System and Network Administration Chapter 2
Design an Analysis of Algorithms I-SECS-1021-03
Nekopoi APK 2025 free lastest update
Which alternative to Crystal Reports is best for small or large businesses.pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Upgrade and Innovation Strategies for SAP ERP Customers
Softaken Excel to vCard Converter Software.pdf
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)

Building a Bridge to a Legacy Application: How Hard Can That Be?