On Sat, 06 Dec 2008 14:08:29 +0100, mosfet <[EMAIL PROTECTED]> wrote:
> About the WM6.1 issue, in the case newer gcc\binutils doesn't solve the
> issue I am following another
> track.
> Actually the problem with WM6.1 comes from a modification done in the
> kernel(nk.exe) and especially
> in the loader. What you need to know is the fact Microsoft give access to
> Windows CE sources through its platform
> builder software and so we can have loader source code.
> Unfortunately we don't have access to Windows Mobile sources and only
> manufacturer can, so I need to disassemble
> a WM6.1 nk.exe and compare with assembly and source code from WinCE 5.0. 

> 
> My problem is very simple, I am spending too much time on this task  and
> preventing my girld friend
> to make some shopping (I am kidding but it's almost true) ;-) 
> So if you have time I would need some help, what I need is very simple :
> 
> I have two text files one called nk-HTC-SHADOW2-WM61.map with the
following
> format :
> 
>  Address         Publics by Value              Rva+Base     Lib:Object
>  
>  0001:0000001c       cinfAPISet                 0001101c    
nk:objdisp.obj
> 
>  0001:00000030       APISetMethods              00011030    
nk:objdisp.obj
>  0001:00000048       cbMDStkAlign               00011048     nk:mdarm.obj
>  0001:0000004c       NKCpuType                  0001104c     nk:mdarm.obj
>  0001:00000054       IdStrings                  00011054     nk:mdarm.obj
 
> 
>  0001:00000080       NKSignon                   00011080     nk:mdarm.obj
>  ...
>  0001:00023a8c       IsLoadingInExclusiveVA     00034a8c f  
nk:loader.obj 
> 
>  0001:00023b50       InitStackSlotSetting       00034b50 f  
nk:loader.obj
>  0001:00023bdc       IsStackSlotSet             00034bdc f  
nk:loader.obj
>  0001:00023d38       FreeProcModList            00034d38 f  
nk:loader.obj
> 
> 
> and another one nk-HTC-SHADOW2-WM61.asm with the assembly
>   
>   8492901C: 53495041 movtpl      r5, #0x9041
>   84929020: 00050602 andeq       r0, r5, r2, lsl #12
>   84929024: 84929030 ldrhi       r9, [r2], #0x30
>   84929028: 00000000 andeq       r0, r0, r0
>   8492902C: 00000000 andeq       r0, r0, r0
>   ...
>   84937B80: 0A000007 beq         84937BA4
>   84937B84: E31004FE tst         r0, #0xFE, 8
>   84937B88: 03A03010 moveq       r3, #0x10
>   84937B8C: 02433DDE subeq       r3, r3, #0xDE, 26
>   84937B90: 05933000 ldreq       r3, [r3]
>   84937B94: 0593300C ldreq       r3, [r3, #0xC]
>   84937B98: 01833000 orreq       r3, r3, r0
>   84937B9C: 058D3010 streq       r3, [sp, #0x10]
>   84937BA0: 0A000000 beq         84937BA8
>   84937BA4: E58D0010 str         r0, [sp, #0x10]
>   84937BA8: E59F3040 ldr         r3, [pc, #0x40]
>   84937BAC: E3A06C01 mov         r6, #1, 24
>   ...
> 
> I would need a script(perl, python, ruby, sh,..) or a program that maps
> address in ASM with
> its corresponding name found in .map.
> It would be called like that : mapasm nk-HTC-SHADOW2-WM61.asm
> nk-HTC-SHADOW2-WM61.map and it would produce
> a file with the functions name before assembly :
> 
> cinfAPISet:
>   8492901C: 53495041 movtpl      r5, #0x9041
>   84929020: 00050602 andeq       r0, r5, r2, lsl #12
>   84929024: 84929030 ldrhi       r9, [r2], #0x30
>   84929028: 00000000 andeq       r0, r0, r0
>   8492902C: 00000000 andeq       r0, r0, r0
> ...
> XXX:
> 
> To do so, the important value in nk-HTC-SHADOW2-WM61.map are the
> 2nd(publics By value) and 3d column(Rva+Base) :
> 
>   Address         Publics by Value              Rva+Base     Lib:Object
> 
>  0001:0000001c       cinfAPISet                 0001101c    
nk:objdisp.obj
> 
>  0001:00000030       APISetMethods              00011030    
nk:objdisp.obj
> 
> It means that cinfAPISet starts at virtual address 0001101c and 
> symbol APISetMethods starts 00011030-0001101c = 0x14 after  cinfAPISet.
> 
> if we apply this to our asm we know that  0001101c corresponds to
8492901C,
> so we can find the following symbol address 8492901C+0x14 = 84929030:
> 
> cinfAPISet:
>   8492901C: 53495041 movtpl      r5, #0x9041
>   ...
> APISetMethods:
>   84929030:
> ...
> 
> You will find everything here :
> http://www.smartmobili.com/Downloads/cegcc-bug-wm61.zip
> 
> 
> Thanks
> 
Oups I forgot to mention that not only I need to have symbol name before
asm like this :


cinfAPISet:
 849477A0: EB001F65 bl          8494F53C
...

but also to map name with jump\branch(b, bl, beq, bne, ...)  operands :

   849477A0: EB001F65 bl          8494F53C
would become
   849477A0: EB001F65 bl          KUnicodeToAscii




 

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
Cegcc-devel mailing list
Cegcc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cegcc-devel

Reply via email to