executable mmap
							parent
							
								
									39df01a782
								
							
						
					
					
						commit
						d9c2cc7c48
					
				| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					#! /usr/bin/env python
 | 
				
			||||||
 | 
					# encoding: utf-8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import struct
 | 
				
			||||||
 | 
					import mmap
 | 
				
			||||||
 | 
					import ctypes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Sins:
 | 
				
			||||||
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
					        self.seed = open('./build/scrap.asm.2.o', 'rb').read()
 | 
				
			||||||
 | 
					        self.pic = self.pic_load()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def pic_load(self):
 | 
				
			||||||
 | 
					        prot = (mmap.PROT_READ | mmap.PROT_WRITE | mmap.PROT_EXEC)
 | 
				
			||||||
 | 
					        page = mmap.mmap(-1, len(self.seed), prot=prot)
 | 
				
			||||||
 | 
					        page.write(self.seed)
 | 
				
			||||||
 | 
					        addr = ctypes.addressof((ctypes.c_char * len(self.seed)).from_buffer(page))
 | 
				
			||||||
 | 
					        func = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_uint)(addr)
 | 
				
			||||||
 | 
					        func.page = page
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return func(addr, len(self.seed))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    import pprint
 | 
				
			||||||
 | 
					    pp = pprint.PrettyPrinter()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sins = Sins()
 | 
				
			||||||
 | 
					    print('Seed')
 | 
				
			||||||
 | 
					    pp.pprint(sins.seed)
 | 
				
			||||||
 | 
					    print('pic_load')
 | 
				
			||||||
 | 
					    pp.pprint(sins.pic_load())
 | 
				
			||||||
							
								
								
									
										26
									
								
								wscript
								
								
								
								
							
							
						
						
									
										26
									
								
								wscript
								
								
								
								
							| 
						 | 
					@ -1,24 +1,16 @@
 | 
				
			||||||
import sys
 | 
					#! /usr/bin/env python
 | 
				
			||||||
 | 
					# encoding: utf-8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def options(opt):
 | 
					def options(opt):
 | 
				
			||||||
    opt.load('nasm compiler_c')
 | 
					    opt.load('nasm')
 | 
				
			||||||
 | 
					    opt.load('python')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def configure(conf):
 | 
					def configure(conf):
 | 
				
			||||||
    conf.load('nasm compiler_c')
 | 
					    conf.load('nasm')
 | 
				
			||||||
    conf.check_cc(header_name='openssl/sha.h')
 | 
					    conf.load('python')
 | 
				
			||||||
 | 
					    conf.check_python_version((3,5,1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def build(bld):
 | 
					def build(bld):
 | 
				
			||||||
    bld.program(
 | 
					    bld(features='py', source=('sins.py'))
 | 
				
			||||||
        source='pic-linux.c',
 | 
					 | 
				
			||||||
        target='pic-linux',
 | 
					 | 
				
			||||||
        cflags='-g',
 | 
					 | 
				
			||||||
        lib=['ssl', 'crypto'])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bld(features='asm',
 | 
					    bld(features='asm', source='scrap.asm', target='scrap')
 | 
				
			||||||
        source='scrap.asm',
 | 
					 | 
				
			||||||
        target='scrap')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # gdb --args ./pic-linux scrap.asm.2.o
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue