100% found this document useful (1 vote)
91 views55 pages

Full Mastering Assembly Programming 1st Edition Alexey Lyashko Ebook All Chapters

Programming

Uploaded by

innamibasing
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
91 views55 pages

Full Mastering Assembly Programming 1st Edition Alexey Lyashko Ebook All Chapters

Programming

Uploaded by

innamibasing
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

Download the Full Version of textbook for Fast Typing at textbookfull.

com

Mastering Assembly Programming 1st Edition Alexey


Lyashko

https://textbookfull.com/product/mastering-assembly-
programming-1st-edition-alexey-lyashko/

OR CLICK BUTTON

DOWNLOAD NOW

Download More textbook Instantly Today - Get Yours Now at textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Assembly Programming and Computer Architecture for


Software Engineers Brian Hall

https://textbookfull.com/product/assembly-programming-and-computer-
architecture-for-software-engineers-brian-hall/

textboxfull.com

Mastering bitcoin programming the open blockchain


Antonopoulos

https://textbookfull.com/product/mastering-bitcoin-programming-the-
open-blockchain-antonopoulos/

textboxfull.com

Mastering Bitcoin: Programming the Open Blockchain 3rd


Edition Antonopoulos

https://textbookfull.com/product/mastering-bitcoin-programming-the-
open-blockchain-3rd-edition-antonopoulos/

textboxfull.com

Mastering Delphi Programming A Complete Reference Guide


Primož Gabrijel■i■

https://textbookfull.com/product/mastering-delphi-programming-a-
complete-reference-guide-primoz-gabrijelcic/

textboxfull.com
Assembly 1st Edition Michael Hardt

https://textbookfull.com/product/assembly-1st-edition-michael-hardt/

textboxfull.com

Microcavities Alexey V. Kavokin

https://textbookfull.com/product/microcavities-alexey-v-kavokin/

textboxfull.com

Modern X86 Assembly Language Programming: Covers x86


64-bit, AVX, AVX2, and AVX-512 Daniel Kusswurm

https://textbookfull.com/product/modern-x86-assembly-language-
programming-covers-x86-64-bit-avx-avx2-and-avx-512-daniel-kusswurm/

textboxfull.com

Modern Arm Assembly Language Programming: Covers Armv8-A


32-bit, 64-bit, and SIMD Daniel Kusswurm

https://textbookfull.com/product/modern-arm-assembly-language-
programming-covers-armv8-a-32-bit-64-bit-and-simd-daniel-kusswurm/

textboxfull.com

RISC-V Assembly Language Programming: Unlock the Power of


the RISC-V Instruction Set (Maker Innovations Series) 1st
Edition Smith
https://textbookfull.com/product/risc-v-assembly-language-programming-
unlock-the-power-of-the-risc-v-instruction-set-maker-innovations-
series-1st-edition-smith/
textboxfull.com
Mastering Assembly Programming
From instruction set to kernel module with Intel processor
Alexey Lyashko

BIRMINGHAM - MUMBAI
Mastering Assembly Programming

Copyright © 2017 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a


retrieval system, or transmitted in any form or by any means, without the
prior written permission of the publisher, except in the case of brief
quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the
accuracy of the information presented. However, the information contained in
this book is sold without warranty, either express or implied. Neither the
author, nor Packt Publishing, and its dealers and distributors will be held
liable for any damages caused or alleged to be caused directly or indirectly by
this book.

Packt Publishing has endeavored to provide trademark information about all


of the companies and products mentioned in this book by the appropriate use
of capitals. However, Packt Publishing cannot guarantee the accuracy of this
information.

First published: September 2017

Production reference: 1220917

Published by Packt Publishing Ltd.


Livery Place
35 Livery Street
Birmingham
B3 2PB, UK.

ISBN 978-1-78728-748-8

www.packtpub.com
Credits
Author Copy Editor

Alexey Lyashko Pranjali Chury

Reviewer
Project Coordinator

Tomasz Grysztar Vaidehi Sawant

Commissioning Editor
Proofreader

Safis Editing

Merint Mathew

Acquisition Editor Indexer

Karan Sadawana Francy Puthiry

Content Development Editor Graphics

Zeeyan Pinheiro Abhinash Sahu

Technical Editor Production Coordinator

Vivek Pala Nilesh Mohite


About the Author
Alexey Lyashko is an Assembly language addict, independent software
reverse engineer, and consultant. At the very beginning of his career, when he
was a malware researcher at Aladdin Knowledge Systems, he invented and
developed a generic code recognition method known as HOFA™. After
spending a few years in the anti-malware industry and gaining sufficient
experience in low-level development and reverse engineering, Alexey
switched to content protection and worked as a reverse engineering
consultant with Irdeto’s BD+ department, actively participating in content
protection technology development.
Since 2013, he has worked with several software development companies
providing reverse engineering and low-level software development
consultancy.

I would like to express my endless gratitude to everyone who made this book
a reality--the current and former members of the team at Packt Publishing:
Sonali Vernekar, Kinnari Sanghvi, Angad Singh, Zeeyan Pinheiro, Vivek
Pala, and many others, who devoted their time and effort. To Mr. Tomasz
Grysztar, the author of the Flat Assembler, who agreed to be the technical
reviewer for the book--thank you and I hope you did not suffer much reading
my stream of consciousness.
A special thank you to my darling wife, Yulia, for her patience and support,
and to my 3 years old son, Yaakov, for helping with the cover design
selection. This book would never have happened without the support from
you all. Thank you!
About the Reviewer
Tomasz Grysztar is a self-employed programmer and systems designer,
with a focus on machine languages. He is the author of FASM, one of the
assemblers for the x86 architecture of processors, and he has been
continuously developing it for nearly 20 years.
www.PacktPub.com
For support files and downloads related to your book, please visit
www.PacktPub.com.

Did you know that Packt offers eBook versions of every book published, with
PDF and ePub files available? You can upgrade to the eBook version at
www.PacktPub.com and as a print book customer, you are entitled to a
discount on the eBook copy. Get in touch with us at [email protected]
for more details.

At www.PacktPub.com, you can also read a collection of free technical


articles, sign up for a range of free newsletters and receive exclusive
discounts and offers on Packt books and eBooks.

https://www.packtpub.com/mapt

Get the most in-demand software skills with Mapt. Mapt gives you full
access to all Packt books and video courses, as well as industry-leading tools
to help you plan your personal development and advance your career.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Customer Feedback
Thanks for purchasing this Packt book. At Packt, quality is at the heart of our
editorial process. To help us improve, please leave us an honest review on
this book's Amazon page at https://www.amazon.com/dp/1787287483.

If you'd like to join our team of regular reviewers, you can e-mail us at
[email protected]. We award our regular reviewers with free
eBooks and videos in exchange for their valuable feedback. Help us be
relentless in improving our products!
Table of Contents
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Intel Architecture
Processor registers
General purpose registers
Accumulators
Counter
Stack pointer
Source and destination indices
Base pointer
Instruction pointer
Floating point registers
XMM registers
Segment registers and memory organization
Real mode
Protected mode - segmentation
Protected mode - paging
Long mode - paging
Control registers
Debug registers
Debug address registers DR0 - DR3
Debug control register (DR7)
Debug status register (DR6)
The EFlags register
Bit #0 - carry flag
Bit #2 - parity flag
Bit #4 - adjust flag
Bit #6 - zero flag
Bit #7 - sign flag
Bit #8 - trap flag
Bit #9 - interrupt enable flag
Bit #10 - direction flag
Bit #11 - overflow flag
Remaining bits
Summary
2. Setting Up a Development Environment
Microsoft Macro Assembler
Installing Microsoft Visual Studio 2017 Community
Setting up the Assembly project
GNU Assembler (GAS)
Installing GAS
Step 1 - installing GAS
Step 2 - let's test
Flat Assembler
Installing the Flat Assembler
The first FASM program
Windows
Linux
Summary
3. Intel Instruction Set Architecture (ISA)
Assembly source template
The Windows Assembly template (32-bit)
The Linux Assembly template (32-bit)
Data types and their definitions
A debugger
The instruction set summary
General purpose instructions
Data transfer instructions
Binary Arithmetic Instructions
Decimal arithmetic instructions
Logical instructions
Shift and rotate instructions
Bit and byte instructions
Execution flow transfer instructions
String instructions
ENTER/LEAVE
Flag control instructions
Miscellaneous instructions
FPU instructions
Extensions
AES-NI
SSE
Example program
Summary
4. Memory Addressing Modes
Addressing code
Sequential addressing
Direct addressing
Indirect addressing
RIP based addressing
Addressing data
Sequential addressing
Direct addressing
Scale, index, base, and displacement
RIP addressing
Far pointers
Summary
5. Parallel Data Processing
SSE
Registers
Revisions
Biorhythm calculator
The idea
The algorithm
Data section
The code
Standard header
The main() function
Data preparation steps
Calculation loop
Adjustment of sine input values
Computing sine
Exponentiation
Factorials
AVX-512
Summary
6. Macro Instructions
What are macro instructions?
How it works
Macro instructions with parameters
Variadic macro instructions
An introduction to calling conventions
cdecl (32-bit)
stdcall (32-bit)
Microsoft x64 (64-bit)
AMD64 (64-bit)
A note on Flat Assembler's macro capabilities
Macro instructions in MASM and GAS
Microsoft Macro Assembler
The GNU Assembler
Other assembler directives (FASM Specific)
The conditional assembly
Repeat directives
Inclusion directives
The include directive
File directive
Summary
7. Data Structures
Arrays
Simple byte arrays
Arrays of words, double words, and quad words
Structures
Addressing structure members
Arrays of structures
Arrays of pointers to structures
Linked lists
Special cases of linked lists
Stack
Queue and deque
Priority queues
Cyclic linked list
Summary for special cases of linked lists
Trees
A practical example
Example - trivial cryptographic virtual machine
Virtual machine architecture
Adding support for a virtual processor to the Flat
Assembler
Virtual code
The virtual processor
Searching the tree
The loop
Tree balancing
Sparse matrices
Graphs
Summary
8. Mixing Modules Written in Assembly and Those Written in High-Level
Languages
Crypto Core
Portability
Specifying the output format
Conditional declaration of code and data sections
Exporting symbols
Core procedures
Encryption/decryption
Setting the encryption/decryption parameters
f_set_data_pointer
f_set_data_length
GetPointers()
Interfacing with C/C++
Static linking - Visual Studio 2017
Static linking - GCC
Dynamic linking
Assembly and managed code
Native structure versus managed structure
Importing from DLL/SO and function pointers
Summary
9. Operating System Interface
The rings
System call
System call hardware interface
Direct system calls
Indirect system calls
Using libraries
Windows
Linking against object and/or library files
Object file
Producing the executable
Importing procedures from DLL
Linux
Linking against object and/or library files
Object file
Producing the executable
Dynamic linking of ELF
The code
Summary
10. Patching Legacy Code
The executable
The issue
PE files
Headers
Imports
Gathering information
Locating calls to gets()
Preparing for the patch
Importing fgets()
Patching calls
Shim code
Applying the patch
A complex scenario
Preparing the patch
Adjusting file headers
Appending a new section
Fixing the call instruction
ELF executables
LD_PRELOAD
A shared object
Summary
11. Oh, Almost Forgot
Protecting the code
The original code
The call
The call obfuscation macro
A bit of kernel space
LKM structure
LKM source
.init.text
.exit.text
.rodata.str1.1
.modinfo
.gnu.linkonce.this_module
__versions
Testing the LKM
Summary
Preface
The Assembly language is the lowest-level human readable programming
language on any platform. Knowing the way things are on the Assembly level
will help developers design their code in a much more elegant and efficient
way.

Unfortunately, the modern world of software development does not require


deep understanding of how programs are executed on the low level, not to
mention the number of scripting languages and different frameworks that are
there to ease the process of software development, and which are often
mistakenly treated as inefficient mostly because developers think that the
framework/scripting engine should cope with the lameness of the code. The
intent behind this book is to show how important it is to understand the
basics, which are too often left behind a developer’s learning curve.

The Assembly language is a powerful tool that developers may use in their
projects to gain more efficiency with their code, not to mention that
Assembly is the basis of computing even in today's world of high-level
languages, software frameworks, and scripting engines. The core idea behind
this book is to familiarize software developers with things that are often
skipped or are not given enough attention by developers and, much worse, by
those who teach them. It may be hard to believe that the Assembly language
itself is only the tip of the iceberg (unfortunately, the part of the iceberg that
is hidden in water falls outside the scope of this book), but even it alone may
highly improve your ability to develop much cleaner, more elegant and, more
importantly, much more efficient code.
What this book covers
Chapter 1, Intel Architecture, provides a brief insight into the Intel
architecture, covering processor registers and their usage.

Chapter 2, Setting Up a Development Environment, contains detailed


instructions on setting up a development environment for programming in
Assembly.

Chapter 3, Intel Instruction Set Architecture (ISA), introduces you to the


instruction set of Intel processors.

Chapter 4, Memory Addressing Modes, gives an overview of the many


memory addressing modes supported by Intel processors.

Chapter 5, Parallel Data Processing, is dedicated to the Intel architecture


extensions that add support for parallel processing of multiple data.

Chapter 6, Macro Instructions, provides an introduction to one of the most


powerful features of modern assemblers--their support for macro instructions.

Chapter 7, Data Structures, helps us organize data properly as there isn't


much that we can do with it.

Chapter 8, Mixing Modules Written in Assembly and Those Written in High-


Level Languages, gives a description of the various methods of interfacing
our Assembly code with the outer world.

Chapter 9, Operating System Interface, gives you a way to discover how


programs written in Assembly may interact with Windows and Linux
operating systems.

Chapter 10, Patching Legacy Code, attempts to show the basics of patching
existing executables, which is an art in itself.

Chapter 11, Oh, Almost Forgot, covers a few things that did not fit into any
of the preceding chapters but are, nevertheless, interesting and may even be
important.
What you need for this book
The requirements for this book are rather minimal. All you need is a
computer running either Windows or Linux and the desire to learn new
things.
Who this book is for
This book is primarily intended for developers wishing to enrich their
understanding of low-level proceedings, but, in fact, there is no special
requirement for much experience, although a certain level of experience is
anticipated. Of course, anyone interested in Assembly programming should
be able to find something useful in this book.
Conventions
In this book, you will find a number of text styles that distinguish between
different kinds of information. Here are some examples of these styles and an
explanation of their meaning.

Code words in text, database table names, folder names, filenames, file
extensions, pathnames, dummy URLs, user input, and Twitter handles are
shown as follows:

"If you decide to move it elsewhere, do not forget to put the INCLUDE folder
and the FASMW.INI file (if one has already been created) into the same
directory."

A block of code is set as follows:


fld [radius] ; Load radius to ST0
; ST0 <== 0.2345
fldpi ; Load PI to ST0
; ST1 <== ST0
; ST0 <== 3.1415926
fmulp ; Multiply (ST0 * ST1) and pop
; ST0 = 0.7367034
fadd st0, st0 ; * 2
; ST0 = 1.4734069
fstp [result] ; Store result
; result <== ST0

Any command-line input or output is written as follows:


sudo yum install binutils gcc

New terms and important words are shown in bold.

Warnings or important notes appear like this.


Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think
about this book-what you liked or disliked. Reader feedback is important for
us as it helps us develop titles that you will really get the most out of. To send
us general feedback, simply e-mail [email protected], and mention
the book's title in the subject of your message. If there is a topic that you have
expertise in and you are interested in either writing or contributing to a book,
see our author guide at www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of
things to help you to get the most from your purchase.
Downloading the example code
You can download the example code files for this book from your account at
http://www.packtpub.com. If you purchased this book elsewhere, you can
visit http://www.packtpub.com/support and register to have the files e-mailed
directly to you. You can download the code files by following these steps:

1. Log in or register to our website using your e-mail address and


password.
2. Hover the mouse pointer on the SUPPORT tab at the top.
3. Click on Code Downloads & Errata.
4. Enter the name of the book in the Search box.
5. Select the book for which you're looking to download the code files.
6. Choose from the drop-down menu where you purchased this book from.
7. Click on Code Download.

Once the file is downloaded, please make sure that you unzip or extract the
folder using the latest version of:

WinRAR / 7-Zip for Windows


Zipeg / iZip / UnRarX for Mac
7-Zip / PeaZip for Linux

The code bundle for the book is also hosted on GitHub at


https://github.com/PacktPublishing/Mastering-Assembly-Programming. We
also have other code bundles from our rich catalog of books and videos
available at https://github.com/PacktPublishing/. Check them out!
Errata
Although we have taken every care to ensure the accuracy of our content,
mistakes do happen. If you find a mistake in one of our books-maybe a
mistake in the text or the code-we would be grateful if you could report this
to us. By doing so, you can save other readers from frustration and help us
improve subsequent versions of this book. If you find any errata, please
report them by visiting http://www.packtpub.com/submit-errata, selecting
your book, clicking on the Errata Submission Form link, and entering the
details of your errata. Once your errata are verified, your submission will be
accepted and the errata will be uploaded to our website or added to any list of
existing errata under the Errata section of that title. To view the previously
submitted errata, go to https://www.packtpub.com/books/content/support and
enter the name of the book in the search field. The required information will
appear under the Errata section.
Piracy
Piracy of copyrighted material on the Internet is an ongoing problem across
all media. At Packt, we take the protection of our copyright and licenses very
seriously. If you come across any illegal copies of our works in any form on
the Internet, please provide us with the location address or website name
immediately so that we can pursue a remedy. Please contact us at
[email protected] with a link to the suspected pirated material. We
appreciate your help in protecting our authors and our ability to bring you
valuable content.
Questions
If you have a problem with any aspect of this book, you can contact us at
[email protected], and we will do our best to address the problem.
Exploring the Variety of Random
Documents with Different Content
charge. On the mission-fields there are most important posts that call
in vain for re-enforcements. At home supplies can be had to meet
any emergency within a very short time; but on the mission-field we
often must wait years for the right man. I left Kansas City in the
morning, and my successor, a very worthy and successful man,
arrived in the evening of the same day. But out in Burma I have
pleaded for years for one man to re-enforce the mission. The
Arlington Church, which I was serving, was then and is now a very
enjoyable pastorate—one in which the people, always cherish their
pastor, and better, where they have from the founding of the Church
cordially supported every effort for the salvation of men. The decision
to leave that Church to go half way round the world to a people I had
never seen, was largely due to the fact that we were needed most on
this picket-line of missions, and good men, who for any reason could
not go to the foreign fields, could be found to take up promptly the
work I laid down at home.
The farewells in Kansas City were of the cheerful and happy kind
that send missionaries on their way to their peculiar missions strong
in heart. Arlington Church spoke its own farewell in a reception to
their pastor and his family, while Grand Avenue Church, the
Methodists of Kansas City, followed with a general reception to the
outgoing missionaries. This general gathering was under the
direction of the pastor, Dr. Jesse Bowman Young, and Dr. O. M.
Stewart, the presiding elder. The latter sounded the note of
cheerfulness for the farewell. He said, “Let us have nothing of a
funeral sort about this reception.” We have always thanked him for
the cheerful and hopeful tone which ran all through the meeting. Dr.
Young was of the same spirit, and in his address, which at one
moment bordered on the emotional at the thought of a long parting
from those to whom he had been one of the best of friends,
recovered himself by saying, “If you discover anything suspicious in
my eyes, charge it up to the hayfever.” These good brethren did
more than they knew to set a standard of joyful anticipation on the
part of the Church and the outgoing missionaries in the honorable
service to which they were called, that toned up their courage when
facing the actual separation from home ties. This was of very great
value to us who were leaving a very enjoyable pastorate, a native
land in which we had taken deep root, and most of all, an aged
father and mother.
We left Kansas City on September 3, 1890, and after a little over
two months spent in resting and arranging our affairs, we sailed from
New York for Liverpool on November 12th. The closing hours in New
York were very different from those in Kansas City, and made it
appear very real to us that we were being plucked up from the home
land and transplanted to a foreign country. We had no acquaintances
at all in New York, except one of the Missionary Secretaries, who
had visited us in Kansas City. He and his associates were as kind as
they could be; but then as now, they were men worked beyond their
strength with the burdens of business there is upon them, and at that
particular time were hurried to get off to Boston, to the annual
Missionary Committee meeting, and they had to tell us a hasty
farewell at the Mission Rooms, and leave us to go alone to the ship.
While our sailing was more lonely than that of most missionaries, yet
it is now the custom to make very little out of the departure of men
and women to mission-fields, however distant. The older
missionaries contrast this formal dispatch of recruits with the custom
of forty years ago, when men still in active service, were first sent
out. Then it was the plan to have the new missionaries gathered in
one or more churches, and after speeches and exchange of good-
will all around, to send them forth with the feeling that their outgoing
on this great mission was a matter of moment to the whole Church. It
is presumable that custom may change in this matter from time to
time, and especially as the number and frequency of the departure of
missionaries increase; but it is certain that the departure of
missionaries to our distant fields on this, the highest mission of the
Church, can not be made less of than it has been in recent years.
We sailed on the steamship City of New York, the largest and
swiftest ship then afloat. She loosed her moorings at five o’clock in
the morning of November 12th. It was a gloomy morning with a cold
rain, and though I was on deck to note any objects of interest amidst
the gloom, nothing at all of importance was in view, save the Statue
of Liberty holding its light aloft in the harbor. No departure from the
shores of the home-land could have been less cheering and
romantic. But as the great ship made her way out to sea, there was a
peculiar satisfaction in the feeling that came over us, that we were
actually on our way to Burma. Some time before sailing, it had been
decided that we would go there, making headquarters at Rangoon,
the capital of that province of the Indian Empire.
Our voyage across the Atlantic was uneventful for the most part,
but not uninteresting. On a great ship one has a good opportunity to
study his fellow-passengers. One among our company has since
become an international character, and even then had become
widely known. This personage was none other than Paul Kruger,
President, then and since, of the Transvaal Republic. We then
thought of Majuba Hill and its consequences, but could not foresee
that this son of the African velt would, before ten years had passed,
throw so large a part of the world into turmoil and lead in a great war.
I was impressed with his strong leonine features, and the less heroic
fact that he was one of the first among the passengers to yield to the
power of a rough sea.
Four days out we ran into a great storm that lasted nearly two
days. Up to that time we were making a quick passage, but the wind
and waves soon destroyed all hopes of making a high record. The
storm was worst at midnight, and as we were being rolled until it was
hardly possible to remain in our berths, the ammonia pipes broke
and flooded the lower cabins with gas. Our cabin was located near
that part of the ship where the trouble occurred, but no one was
seriously injured. A similar thing recently happened on the same ship
in a storm on the Atlantic, and again the suffocating gas spread
through the ship with one fatality and a number of prostrations.
Landing at Liverpool, we went to London for ten days, returning
to the former place to take the first ship direct for Rangoon. There
are two general routes from English ports to points in India. By one
you travel across the continent, and usually take ship at some
Mediterranean port, and sail to Bombay. By the other you sail via
Gibraltar, and so go by sea all the way. Our route was the latter
course, and at the time we went out there was only one line of
steamers, the Patrick Henderson, direct from English ports to
Rangoon. We took passage on a new vessel, the steamship Pegu,
making its third voyage. “What a strange name for a ship!” we said.
We soon learned that the name was taken from an old, ruined city of
Burma, and that all the company’s steamers bear the name of some
city, ancient or modern, in the land of Burma. So, at the very docks,
as we started Eastward, we met a name suggestive of the ancient
history of the land of our future labors. In the appointments of the
steamer we were much impressed with the fact that we had no
arrangement for heating the vessel, but every plan for thorough
ventilation. We found it very cold on board until we passed the Suez
Canal. Otherwise the appointments were every way satisfactory, and
the fare reasonable.
This good ship made but one voyage more under its Scotch
ownership. It was then sold to the Spaniards and renamed the
Alicante. This circumstance became of much interest to us at a later
date, when this ship was the first to be loaded with defeated Spanish
troops at Santiago.
The outward voyage had its many objects of interest to the
passengers going out for the first time. We sailed in plain view of the
Portuguese and Spanish coasts, but were disappointed in passing
Gibraltar at night. The next day, however, we were charmed with a
magnificent view of the Sierra Nevada Mountains in Southern Spain,
as they lifted their snowy heights into cloudless skies, and their
vineclad slopes dropped away to the level of the sea. For nearly a
whole day we sailed close by the picturesque shores of Sardinia.
Here we noted a singular confusion of the compass by reason of
being magnetized by the land. As the good ship swung off from the
southern cape of the island, it made two great curves to correct the
erratic state of the compass. We entered the harbor of Naples in the
full floodlight of a Mediterranean noon. The afternoon was spent in
the city. Our party was not favorably impressed with the gay people
in their holiday attire. It seems they have many holidays of the like
kind. In the evening we sailed southward; and as darkness closed
around us, distant Vesuvius sent its fiery glow upward on the black
mass of overhanging cloud, making a lurid night scene. In the
morning we woke in plain view of the great volcanic cone of
Stromboli, rising out of the sea. We were near the island, which
seems to have no land except the volcano itself; yet houses nestle
here and there around its base. What a choice for a home—at the
base of an actual volcano! The weather was perfect as we sailed
through the Straits of Messina, but great Mount Ætna, which we
hoped to see, was hid in clouds.
The second stop in our journey was at Port Said. The Suez
Canal is the gateway of the nations. Port Said is its northern
entrance. It is under international control, and hence its government
is less responsible than that of almost any other city. It is one of the
most wicked cities of the world. Representatives of all races are
congregated there. It is not our purpose to describe this city, but to
point out that here for the first time we had a glimpse of the Orient.
The fellaheen of Egypt loaded our ship with coal, carrying great
baskets on their heads. We arrived in the night, and the coaling
began almost immediately. My wife and I got out of our cabin before
day to go on deck and see these people at work by the light of
torches. A strange, weird sight it was to Western eyes; and their
shouting in strange tongues emphasized the fact that we had indeed
come to a strange land.
The Suez Canal is the natural dividing-line between the Western
and the Eastern civilizations, between the cold Northlands and the
perpetually tropical countries of Southern Asia. Looking westward
and northward, you find energy put to practical account; looking
eastward, you find lethargy and life no more aggressive that it must
be to keep peoples as they have been for a thousand years.
Westward you greet progress, but Eastward life has been stagnated
for ages, and only stirs as it is acted upon from the West. Westward
you have an increasing degree of prosperity and material comforts
and advantages of modern civilization, but Eastward you have such
poverty among the millions as can not be conceived by people more
favored. Westward you have civilizations never content with present
attainment; but Eastward you have peoples whose highest ideals are
only to be and to do what their fathers were and did before them.
The West seeks to produce new things, but the East condemns all
improvement for no other reason than that it is new. All this, and
much more, is suggested by the Suez Canal, from which you plunge
downward into Asiatic civilization. Climatically you are henceforth to
know only the tropics, a climate, so far as Southern Asia is
concerned, that you will come to know henceforth as dividing the
year into two seasons, “Three months very hot, and nine months
very much hotter.” At Port Said you will be informed of the change
that is just ahead of you. Whatever you may have bought in New
York or London, you will need one more article of dress at Port Said
—a helmet, to protect your head from the tropical sun. You will never
see a day in Southern Asia in which you can go forth in the noonday
sun with an ordinary hat, or without a helmet, except at your peril;
and most of the time you will wear that protection for your head from
early morning until five in the evening, or later. You will have another
indication that you are going down into the tropics. If you have made
your journey, as we did, in the colder months, the sunniest place on
the deck has been the most comfortable until you arrive at Port Said;
but there they raise double canvas over the whole ship, and from
that on, as long as you go to and fro in the tropical seas, you will
never travel a league by sea that you do not have that same double
canvas above you when the sun is in the heavens. No wonder the
Suez Canal means so much besides commerce or travel to all who
have passed through it to Southern Asia!
Through the fifteen hundred miles of the Red Sea we took our
way. Then the Gulf of Aden was traversed, and next through the
Arabian Sea our good ship bore us on our journey. The heat, like
very hot summer at home, was upon us, though we were out at sea
in December. Coming on deck one morning before other passengers
were astir, I was delighted to see the green hills of Ceylon a few
miles to our left. We had rounded the island in the night. The decks
had been scrubbed in the early morning, as usual; the ocean was
smooth, and the tropical sun flooded sea and land, while the
sweetest odor of spices filled the air. At once I thought of “Ceylon’s
spicy breezes,” but I suddenly noted that the wind was toward the
shore, which lay some miles away, and then I was prepared for the
sentiment of the chief steward who had sprinkled spices out of the
ship stores over the wet deck to please the passengers’ sense of
smell as they came forth to give their morning greetings to this
emerald isle of the Indian Ocean. In rounding Ceylon we reached our
lowest latitude, six degrees north. We were still six days’ sail from
Burma, and our course took us nearly northeast from this point. The
entire voyage from the Suez Canal to Burma was made under
cloudless skies and through calm waters. A day from Rangoon we
passed near the beautiful little Cocoa Islands, while the Andamans
showed above the horizon far to the southward. It is remarkable how
much interest there is among passengers when a ship is sighted, or
land appears on a long voyage. These Cocoa Islands are important
as being guides to vessels homeward or outward bound, and they
mark the line between the Bay of Bengal and the Gulf of Martahan.
An important lighthouse has been maintained there for the past fifty
years. The Andamans are shrouded in gloomy mystery, due to the
fact that they are used as a penal colony of criminals transported
from India. On the 31st of December, 1890, after passing several
light-ships, we came, about noon, in sight of the low-lying shores of
Burma. We had been thirty-five days from Liverpool, and were
getting weary of the sea, to say nothing of our curiosity to land in a
country new to us. But no land could be less interesting than this
shore-line of Burma, first sighted on coming in from the sea. It lies
just above the sea-level, and besides a fringe of very small
shrubbery, and here and there a cocoanut palm-tree, it is absolutely
expressionless. After lying at anchor for three hours at the mouth of
the Rangoon River, waiting for the incoming tide, we began the last
twenty miles of our journey up the broad river to the city of Rangoon.
The passengers were made up mostly of people who were
returning to Burma after a furlough in England. The anticipation of
friendly greetings and the appearance of every familiar object along
the river created a quiver of pleasant excitement among them. Our
missionary party were almost the only ones who had not special
friends in Rangoon to meet them.
Sway Dagon Pagoda

Presently all eyes were turned up the river as the second officer
called out, “There is the Great Pagoda.” Yes, this, the greatest shrine
of the Buddhist world, rising from a little hilltop just behind the main
part of the city of Rangoon, lifted its gilded and glistening form
hundreds of feet skyward. This is the first object of special
importance that is looked for by every traveler going up the Rangoon
River. It is seen before any public building comes into view. But
presently the smoke from the great chimneys of the large rice mills of
Rangoon appeared, and then the city was outlined along a river
frontage of two or three miles. The city has no special attractions, as
viewed from the harbor; but the whole river presents an animated
scene, always interesting even to any one familiar with it, but full of
startling surprises to the newcomer to the East. With the single
exception of Port Said, our missionary party had seen nothing of
Oriental life. The panoramic view of that river and shore life seen on
that last day of 1890 will remain a lifetime in the minds of our party.
Steamers of many nations and sailing-vessels under a score of flags,
native crafts of every description, steam launches by the dozen, and
half a thousand small native boats of a Chinese pattern, called
“sampans,” moved swiftly about the river, while two or three
thousand people crowded the landing and the river front. It is
possible that half a hundred nationalities were represented in that
throng, but to us strangers there were only two distinctions to be
made out clearly: a few men and women with fair skins, and the
remainder of the multitude men of darker hue. “Europeans and
natives” is the general distinction used in all India.
Some incidents at such moments in our lives, as our landing in
this strange country, make profound impressions far above their
actual importance. It was just six o’clock in the evening as we made
fast to the wharf. Suddenly, as I faced the new world life of labor just
before me, and began to contrast it with that of the past, I
remembered that just eleven years before, on that day and at that
hour, allowing for difference of latitude, I stepped off the cars in a
college town, and parted with my old life as a farmer boy for the new
life of a college student. A great change that proved to be, and this
was destined to prove even more in contrast with life hitherto. The
curious circumstance was that the two transitions corresponded by
the year and hour.
I awoke suddenly to the fact of great loneliness. There were
multitudes of people, but in the whole company not a familiar face.
There were some whose names we had heard, and they were ready
to give us a cordial welcome as fellow-workers, but we did not know
them from all the others in the throng in whose thoughts we had no
place. For myself, I have never had a more lonely moment, even
when unattended in the Burma jungles or lost on the mountains at
night.
Another incident, of a painful kind, occurred. As I stood beside
the ship’s doctor, who had been coming and going to India for thirty
years, he volunteered information of the people who were boarding
the ship to greet expected friends. One young lady passenger was
greeted by her sister, whose husband stood by her side. She was a
fair English lady; he was a tall, well-proportioned man of good
features, but he was very dark. The doctor said: “That young lady is
destined to a great disappointment. Her sister is married to a
Eurasian, and she, as an English girl, will have no social recognition
among English people here because she has that Eurasian
relationship.” To my inquiries of interest, he said many things about
these people, in whose veins flow the blood of European and Asiatic,
concluding with the following slander on these people, “They inherit
the vices of both Europeans and Asiatics and the virtues of neither.” I
refer to this expression here to show how such unjust expressions
fall from careless tongues; for I have heard it scores of times,
breathing out unkind, even cruel injustice. It is a slander that is not
often rebuked with the energy its injustice calls for. As I will discuss
this people in another chapter, I only say here that for ten years I
have been connected with them, and while they have their
weaknesses, this charge against them is entirely groundless.
We were presently greeted by the small band of Methodist
missionaries and some of their friends, and taken immediately to our
Girls’ School in the heart of the town. Here we rested in easy-chairs
of an uncouth pattern, but which we have hundreds of times since
had occasion to prove capable of affording great comfort. While
resting and making the acquaintance of Miss Scott, our hostess, an
agent of the Woman’s Foreign Missionary Society, I was impressed
with several features of our new surroundings. Though it was New-
Year’s Eve, the whole house was wide open, and three sides of the
sitting-room had open venetian blinds instead of walls, to let in the
air.
Then we were quickly conscious of the noise, mostly of human
voices, speaking or shouting strange speech in every direction,
which the wooden open-plank house caught up much as a violin
does its sound, and multiplied without transferring them into music.
We came, by later painful experiences, to know that one of the
enemies of nerves and the working force of the missionary in
Rangoon is the ceaseless noise from human throats that seems
inseparable from this Oriental city. I have been in some other noisy
cities, but, as Bishop Thoburn once remarked, our location in
Rangoon was “the noisiest place in the world.” Before these thoughts
had taken full possession of our minds, we were greeted by another
surprise. As we leaned back in the easy-chairs and our eyes sought
the high ceiling of the room, there we saw small lizards moving
about, sometimes indeed stationary, but more often running or
making quick leaps as they caught sluggish beetles or unsuspecting
flies from the ceiling. We counted nine of them in plain view,
seemingly enjoying themselves, unmindful of the presence of the
residents of the building or the nerves or tastes of the new arrivals.
A watch-night service was held that night intended for sailors
and soldiers especially, to which I went, while my wife remained and
rested at the school with our children. At the service I saw for the first
time what is so common in all like gatherings in Eastern cities, the
strange mingling of all people who speak the English language.
Being a seaport, the sailors from every European land were present,
and, so far as they can be secured, attend this wholesome service,
while the soldiers from the garrison come in crowds, and others
interested in these meetings are there also. Every shade of
Eurasians was present. Some of the people whom I saw that night
for the first time became my friends and co-laborers in the Church
and mission for the entire time of which I write. Late that night, or in
the earliest hour of the new year, I fell asleep with my latest
conscious thought, “We are in Burma.”
CHAPTER II
First Year in Burma

W E were wakened early on January 1, 1891, by the harsh


cawing of a myriad of crows, which roost in the shade-trees of
the public streets and private yards. We came afterwards to know
these annoying pests, that swarm over Rangoon all day long, as a
tribe of thieves full of all cunning and audacity. The first exhibition of
their pilfering given us, was that first morning when the early tea and
toast, always brought to you on rising in India, was passed into our
room and placed in reach of the children. The crows had been
perched on the window-sill before this, restlessly watching us within
the room. But on our turning for a moment from the tray on which the
toast was placed, the crows swooped upon it, and carried it off out of
the window. This is but a sample of the audacious annoyance
suffered from their beaks and claws continually. They are in country
places also, but not so plentifully as here in the cities, where they
literally swarm. Were it to our purpose we could write pages of these
petty and cunning robberies of which they are guilty. A very common
sight is, when a coolie is going through the streets with a basket of
rice on his head, to see the crows swoop down and fill their mouths
with the rice, and be off again before the man knows their intention,
or has time even to turn around. It must have been some such sight
as this in ancient Egypt, familiar to Pharaoh’s baker, that caused him
to dream of the birds eating the bread out of the basket that he
carried on his head, and that foreshadowed the dire results to
himself. Those “birds” must have been “crows” of the Rangoon
species.
I could not wait long that first morning in Rangoon, and the first
of a new year, to get out into the streets astir with human life. I took
my first impression of many specimens of humanity that passed in
view. While the common distinctions in dress, complexion, manners,
and occupations, which mean so much when you come to know their
significance, were not recognized in this first view of the people, I did
get a very definite impression of two classes—one well formed and
well fed, and the other class, those poor weaklings, mostly of the
depressed peoples of India, who migrate to Burma. Of the latter, I
wrote at the time to friends in America, that they were specimens of
the human race that had about run their course, and must die away
from sheer weakness. Later conclusions do not differ materially from
this first decision. But I did learn later that the fine-looking people of
strong physique were Burmese, and that the province of Burma,
generally, has very few peoples of any race that compare in
feebleness with some of the immigrants from India that flock into the
cities, such as Rangoon. It is chiefly what the traveler sees in coast
towns like Rangoon, which leads so many transient passers-by to
wrong conclusions concerning Oriental countries. In Rangoon, many
other peoples are more in evidence than the Burmese.
After that early walk and breakfast, which came about ten
o’clock, the usual time, I met with Rev. Mr. Warner, and took in
charge the affairs of our mission. It is a simple thing for a preacher to
go from one pastoral charge to another in America, in every respect
very much like the Church and community he has always served; but
it is entirely different to go to a distant and unfamiliar country, and
take up work essentially different from anything you ever had to do
with before. Then, at home it is the custom for each man to be
occupied with some one specific work and its obligations; but on the
mission-field, such as Burma has been until now, there is such a
variety of interests as loads every missionary with the work that
ought to be distributed between two or three. That morning I learned
that we had an English Church in Rangoon which supported its own
pastor; an English school that numbered nearly two hundred pupils,
and an Orphanage for the poor Eurasians and Anglo-Indian children.
There was also a work among the seamen that visited the port. A
woman’s workshop had been founded some time before for helping
the poor Eurasian, and other women, to earn a living with the needle.
There was also preaching going on among the Tamils and Telegus,
some converts and a fair day-school being conducted among them.
This work was mostly in Rangoon; but some preaching was done in
the villages round about, and one exhorter was holding a little
congregation of Tamils at Toungoo, one hundred and sixty miles
north from Rangoon. A further account of Methodism will be given
later, and it is only necessary here to tell how the work appeared to
me that morning when I began my labors in Burma.

Methodist Church, Rangoon

We had a modest wooden church and also a parsonage, a fair-


sized building for the school, and another of equal size for the
Orphanage. Besides these buildings, we had a couple of residence
bungalows, intended for rental for the support of the Orphanage, but
for which we were badly in debt. Considering the small size of the
mission, our debts were large and troublesome. They were incurred
out of the emergencies of our work, and were not the result of bad
management in any way. These debts were to be met at once, and
added much to my concern for the mission.
Another embarrassing feature of the finances of the mission was
found in this, that we had very small missionary appropriations, and
the time had been not long before when our workers in Burma had
no money from home. The beginning of the mission had been made
entirely without funds from America.
This was the more apparent when we look at the distribution of
the missionaries. I was to take the pastorate of the English Church,
and receive my salary from it; Miss Files, the principal of the Girls’
High School, had never had any salary, except what the school could
pay her; Miss Scott, principal of the Orphanage, had half salary; Miss
Perkins, the new missionary, alone had a salary from the Woman’s
Foreign Missionary Society. Mr. Warner had less than full salary,
though appointed to native work. We had, also, a number of
teachers all paid locally, and supplies in the mission-work, none of
whom received a salary from America. Here was an outline of a
situation in what was called a “self-supporting” mission-field. How to
pay debts, keep all this work going, and make advance in mission
operations with our limited money, was my greatest responsibility.
There had never been a dollar given to the mission from America for
property. The problem was easy of statement, but difficult of solution.
To plunge right into this work, my first day in the country, and
immediately become the responsible head of the district, was
beginning mission-work with vigor and without delay. I have learned
since to believe it a serious misfortune that any missionary should be
so overwhelmed with work and responsibility on entering a foreign
mission-field. All this, too, when we had yet to adjust ourselves to life
in the tropics.
We were about to prove what it meant to be suddenly dropped
down into the heart of an Oriental city, and there adjust ourselves to
the most trying conditions we had ever known. The parsonage
belonging to the English Church, which we occupied, shared the lot
with the church building. At the time the church and parsonage was
to be built, it was the policy of the Government to give a grant of land
to any religious society for a church or parsonage. The city is
blocked out in rectangular shape, but unwisely made very narrow
and long. The blocks are eight hundred feet long by one hundred
and fifteen feet wide. Our lot included one end of a block, and was
one hundred feet deep. On this lot stood the church and parsonage,
facing the main street. When the location was chosen, it was a fairly
satisfactory site on which to have a residence, and in a Western
country, with Western conditions, it might have contained a fairly
comfortable residence; but in Rangoon the natives soon began to
crowd into poorly constructed buildings all around the parsonage,
and the filth, that so rapidly accumulates in an Oriental city, piled up
everywhere. The only sewerage was in open ditches that ran on
three sides of our residence. The stench of these sewers was ever
present in our nostrils, and especially offensive in the rainless
season. But the worst condition was the incessant noise made by
the natives. This neighborhood was occupied almost entirely by
Madassis, who have harsh, strident voices, and speak with a
succession of guttural sounds. They are always shouting, and
quietness is almost unknown to them. They quarrel incessantly. At
the time we lived in this locality there were six hundred of these
noisy people living within a hundred yards of the parsonage. They
kept no hours for rest. All day and all night the noise went on.
Sometimes, of course, they slept, and the native can sleep in bedlam
and not even dream. But there are hundreds astir at all hours of the
day and night. Then there were thousands of passers-by who at all
hours added their voices to the din. Besides, a heavy traffic was
carried on on two sides of us. The streets were metaled, and every
wheel and hoof added to the uproar.
The parsonage was of the uncouth architectural plan
characteristic of Burma, roomy and arranged well enough for comfort
in that country, had the surroundings been endurable. But being
placed upon posts, some ten feet from the ground to the first floor,
and the floor and walls being made of single thicknesses of teak
planks, these multitudinous sounds of the neighborhood were
gathered up and multiplied as a violin gathers the sounds of the
strings, and this discordant din was poured into our ears. Added to
all this noise was the intense heat, which even in the coolest part of
the year is very great, and you have conditions of life that tax you to
the utmost. My wife and I have pretty steady nerves; but in the
thirteen months we tried to live in the parsonage we did not have
more than twenty nights of unbroken sleep. Just after we entered
this residence, we received our first mail from home, and in the
papers to hand we read the speech of the senior missionary
secretary at the Missionary Committee meeting in Boston, held at
the time we were sailing from New York, in which he dwelt at length,
“on the luxury of missionary life in India.” I promptly sent him an
invitation to spend the last week preceding the next Missionary
Committee meeting in our guest-chamber, overlooking and
overhearing all that happens among this noisy throng of Tamils. I felt
that I had learned more of the actual conditions of life in an Oriental
city in one week, than this good man had learned in all the years of
his missionary official life. He did not accept the invitation.
Natives of Burma
When one is overworked with unusual duties that tax nerves to
the utmost, and then lives in perpetual noise and heat day and night,
he has the ideal conditions for a short missionary career. We were to
prove all that this meant within one year from landing in the country.
Surprises and disappointments in the working force of a mission,
at least in its earlier and less well organized state, occur with great
frequency. Within less than three months, my missionary colleague,
Mr. Warner, and his wife left us, and took work in another mission.
He had been with our mission less than two years, having been sent
out from America. It may be said here that such changes, so early in
a missionary’s career, do not generally argue well for the stability of
purpose or settled convictions of the missionary, and do not usually
help the mission to which a change is made. But in our case it added
to our difficulties, as the Burmese work, to begin which Mr. Warner
was appointed, did not get started for some years afterward. There
was no other man to take up his work, and there could be no one
supplied for some time. This situation, coming so soon after I took up
the work with the high hopes of a new beginner, added to the
complications.
The heat increased from January onward. The work became
very laborious, largely owing to failure to get rest at night. In May, I
began to be troubled with a strange numbness in my arms. This
gradually spread to most of the muscles of the body, and began to
affect my head seriously. At the same time, the heat, especially any
direct ray of the sun, caused very distressing nervous symptoms.
Having all my life worked hard, and having a body that had stood
almost all kinds of strain and seemed none the worse for it, I at the
beginning expected to throw off these symptoms quickly. But when I
did not succeed in this, I consulted physicians and found that they
were puzzled as much as myself. Had it been possible to go to some
cooler place and take rest at the beginning of this disorder, it is likely
that I could have met the difficulty and overcome it quickly; but there
was no chance to leave the work, no place to go to, and no one to
relieve me. Steadily for five months the trouble increased, until it was
impossible even to read in an attentive way, though under the
excitement of a Sabbath’s congregation I could talk to the people. In
October, only a little over nine months after landing in Burma, Bishop
Thoburn peremptorily ordered me to the hills of India for a change.
He temporarily supplied my place at Rangoon.
I left Rangoon on the evening of the 10th of October on this
painful flight for health. My wife remained and did hard service, all
too hard as the case proved, to give the English congregations
attention during my absence. This early flight from my work with the
uncertainties of my ailment, and the long distance to the Indian Hills,
which as we supposed at the time, was the nearest place to get
above the heat of the plains, and the condition of the work in my
absence, and the added burden to my wife, all combined to give the
occasion a serious aspect.
I took passage on a little vessel of the British India Steam
Navigation Company, which has a large fleet of steamers in these
tropical waters. I traveled after this many times on steamers of this
company, and always found the trip of four days to Calcutta very
interesting. The sea breeze modifies the heat until you can be in
comparative comfort. The officers are usually courteous, but
somewhat reserved, for the most part. Perhaps this show of dignity
is assumed to support the important office they hold. It may be that it
is a National characteristic also. The engineers, who number about
the same on each ship as the officers, and have about as much
responsibility, and are equally capable men, are usually very free
and sociable. The officers are generally Englishmen, and the
engineers Scotchmen. I have been greatly surprised to find how
approachable most Scotchmen are. Being of a social disposition
myself, I usually get in touch with both classes; but I have secured
the most friendly response from the Scotch. This has been generally
true on land also.
The Bay of Bengal is a stormy water during the monsoon, from
May until October. At the latter time the wind turns into the northeast,
and one or two cyclones generally form as it turns the rain currents
back to the southwest, from whence they came. Our captain was
nervous as we rounded the land and made for the open sea, lest we
be met by a cyclone. But instead of a storm, the sea was as smooth
as a sea of glass all the way to the mouth of the Hoogli River, where
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like