Related
I'm currently getting information on a developement project and one of th requirements may need some developement with the himalaya's camera. I will of course post more information when it becomes avalible, but for the time being does anyone know if there is a standard SDK ?
search's results for your question
http://forum.xda-developers.com/viewtopic.php?t=11726&highlight=cam+api+sdk
http://forum.xda-developers.com/viewtopic.php?t=11200&highlight=cam+api+sdk
http://forum.xda-developers.com/viewtopic.php?t=11200&highlight=cam+api+sdk
http://forum.xda-developers.com/viewtopic.php?t=11095&highlight=cam+api+sdk
http://forum.xda-developers.com/viewtopic.php?t=10172&highlight=cam+api+sdk
http://forum.xda-developers.com/viewtopic.php?t=4950&highlight=cam+api+sdk
redegar, once again you have shown me the way. so thats what that search lable is for !
Hi,
Can someone assist me with how i might go about decompiling or viewing a dll, making changes to it and recompiling it? What tools can i use to do this?
I have tried copying some of the dlls from my device over to my local pc, however most of the time i get an "access violation" message.
Further, i realize i can use idlasm to disassemble .net files, but it seems most of the more interesting dlls and files may be standard c dlls. How can i take a look at the code in these and modify if wanted?
thanks much.
farseer: what level of experience do you have?
V
I'd like to think i am decent developer, but that may be in my own mind
However, i do not do a lot of "hacking", i.e., have not had the need to do much reverse engineering. I have been coding ground up apps for over 10 years however, uisng C++, Java, C#, VB, etc. You name the language, and i've probably done something in it .
vijay555 said:
farseer: what level of experience do you have?
V
Click to expand...
Click to collapse
was that the wrong answer?
farseer said:
I'd like to think i am decent developer, but that may be in my own mind
However, i do not do a lot of "hacking", i.e., have not had the need to do much reverse engineering. I have been coding ground up apps for over 10 years however, uisng C++, Java, C#, VB, etc. You name the language, and i've probably done something in it .
vijay555 said:
farseer: what level of experience do you have?
V
Click to expand...
Click to collapse
Click to expand...
Click to collapse
The correct answer should be "I know ARM assembler language, the structure of Win32 PE files, I know what is XIP DLL and why I cannot modify them directly, and I have read the WM5 source code".
In this case the process is simple - you decompile a DLL with IDA (www.datarescue.com), find the place you need, modify the code to suit your needs - and that is all. In most cases there is not enough place in DLL for your code, so you need to use virus-like techniques, my prefered method is to patch the code so that it loads my DLL and run it instead of original code. Or use some other hooking methods so that my code is executed instead of original.
Ah, thanks much, this was helpful. I do have a few follow up questions:
1. Is "Arm assembler" different than standard assembler? If so, any suggested readings?
2. There are some dlls that cannot be copied to my local pc (i get an access violation i believe). How does one extract an image of such dlls?
3. Where is the WM5 source code? and why would i need to read this to be able to hack/patch dlls?
thanks again.
mamaich said:
The correct answer should be "I know ARM assembler language, the structure of Win32 PE files, I know what is XIP DLL and why I cannot modify them directly, and I have read the WM5 source code".
In this case the process is simple - you decompile a DLL with IDA (www.datarescue.com), find the place you need, modify the code to suit your needs - and that is all. In most cases there is not enough place in DLL for your code, so you need to use virus-like techniques, my prefered method is to patch the code so that it loads my DLL and run it instead of original code. Or use some other hooking methods so that my code is executed instead of original.
Click to expand...
Click to collapse
Hi farseer!
I am nowhere near the level of mamaich or vijay555 but I have some experience in this and I believe I can give you some basic answers:
1. ARM is a different architecture then x86 processors and the assembler is different to accommodate it. There are some basic similarities like mov add and such, but even the registers are different (R0 - R15 if I am not mistaken). Sorry, I don't know any books on it, but if you google you will quickly find the list of commands with basic explanation.
2. Since the OS is in ROM you can't just copy and paste it's DLLs and EXEs. Look for ROM dumping tools on this forum, or already extracted images on the ftp. Keep in mind MS did some tricks to save memory and make it harder to get at the files, so like mamaich said, you need to learn about XIP and the ROM structure in general to understand whats going on.
3. Hmm... MS does have a program for sharing most of WM source code, but it's not for common people like us. (check out their site to see what I mean) I suspect there are other sources of getting the parts necessary to understand DLL hooking, but I have no idea what they might be.
Well that's my two cents until an expert can answer you. Hope this helps.
farseer: you gave a perfectly good answer IMHO, just needed to get an idea of what level to pitch a response without talking up or down to you!
It's well documented that I'm a self confessed newb to c++, and would say that your programming skills should certainly hold you in good stead. However, having a good knowledge of the Win32 API is certainly beneficial.
For decompiling, basically IDA. There is an IDA demo available on their website that should get you going, it's pretty much 100% functional other then it won't save, and closes itself (or crashes itself) after a reasonable, random period of time. IDA is "the daddy" for pretty much all mainstream reversing, although you could write your own decompiler/debugger.
Recompiling - that's a toughy. IDA won't permit recompiling on ARM AFAIK.
You'll have to hexedit into the target and patch directly. Otherwise you get into the exciting world of code injection, hooking etc, as Mamaich says.
For that area, read everything he's ever written, before you start reversing
Oh, and a helpful hint to all. Don't just read what Mamaich's written on this board, his posts on other boards are even more useful!
It's worth getting a good familiarity with reversing on x86 first, get used to how IDA works etc (and Soft Ice is very useful to give a good insight into x86, although AFAIK it's not available for WinCE). ARM assembler is different, but just grab a list of the opcodes and read through a few CPU developers' guides (online).
There are a number of tutorials on reversing ARM stuff online. In the usual places for that kind of stuff.
For getting access to the ROM files, easiest way is to grab a rom update file and decrypt it. Mamaich is once again your man, his romtools do the job. He also has a "live" rom grabber, that'll grab all the files/modules out of your running phone for your perusal.
Platform Builder is available free to give you (some) WinCE source code. Not all, but enough to give you years worth of reading.
V
Thanks all...very kind of you to respond in such detail. I look forward to dabbling a bit with IDA and some of mamaich tools. I suppose the first order of business is to do a lil more research and then just dive in! It's been a while since i wrote any assembly code (not since college!), but i am a bit excited at having an excuse to do so again.
thanks again.
Just remember that unless you really luck out and the developer left the symbol table intact, you're going to end up with garbage for the names of variables and subroutines.
I hate reading decompiled code.
Hi,
I have a fair background in various coding languages, and there are a couple of programs I want to try and build.
However, while I can usually pick up and understand a language quite easily the problem I usually find is a lack of knowledge of the objects available to make life easier and the functions which are available.
So far, I've sat around and got a setup which I think should allow me to write and compile WM5 applications and today plugins, but I have suddenly found I am missing that "thing" that made writing in other languages easier - effectively a "Cheat Sheet".
What I would appreciate from the other coders with experience in writing software for WM5 is a list of what windows or books you have open for reference when coding. Is it just MSDN, is there a specific page that you have bookmarked or do you just google for it every time?
Any further advice (like good compilers I might have missed) will also be greatly appreciated.
Thanks in advance.
I'd like to hear from others too about this..
So far, My buddies for development help have been:
1. Search in MSDN
2. Search in Google
3. Ask on xda-developers
4. Search in MSDN forums and usenet groups for pocket pc developers
5. A book (that i dont refer to too often) whose name goes smthing like "Programming for Microsoft Windows CE .net" by Douglas Boling (Its not for .net development, it covers native development mostly. Windows CE .Net refers to a version of CE)
6. I also have another book that i have not even opened till now. It is solely for .net development (which is not my forte). Its by Wrox Publishers. If I remember the name correctly, it goes smthing like "Professional Microsoft Smartphone Programming"
There is an exellent documentation on .NET & Native Code on MSDN.
Then there are samples as well, again on MSDN.
For a today plugin, there is a very good sample by levenum which u can easily find in this section of the forum.
For me its always been google & this forum, no boooooks !!!
or
www.codeguru.com
in most cases programming for pocketpc's is like programming for pc's
Thanks for the replies guys. I see what you mean, MSDN is rather good. I was beginning to think it was just WM6, but I eventually found the section on WM5 (which I am planning on coding for given my phone is WM5). Their Wiki also had some good info on it too. Don't know whether these will be my coding buddies yet though....
shantzg001 said:
I'd like to hear from others too about this..
Click to expand...
Click to collapse
I'm glad someone else is interested. TBH I am surprised there is not a sticky at the top of the forum with this information in or a link to the Wiki for further details, but I could only find details of Development Tools on the wiki.
shaileshashar said:
For a today plugin, there is a very good sample by levenum which u can easily find in this section of the forum.
Click to expand...
Click to collapse
Thanks for this pointer. I found two (here and here) which look promising. Don't know if there are any I missed....
Just a small tip when searching in MSDN... add ce in the search pharse. For e.g., "ce WM_TIMER" will give you the CE related sessions at the top.
I like www.pocketpcdn.com - articles and code examples for Pocket PC and Smartphones arranged by categories.
Also www.codeproject.com has been helpfull at times.
Hi,
I'm interested to know which debugging/logging tools are available.
I'd like to get more information about the processes at startup, and specially logs of the CPU usage by each application over a period of time.
I've been searching for some time and the only I've found are the old Htc Test applications, but can't get what I want.
Noted that HTC devices have a builtin debug tool (debuglog.dll). Anyone knows how to use it?
Also found the following the following post describing the HTCDiagDriver and the possibility to analyze the device using QUALCOMM eXtensible Diagnostic Monitor.
http://forum.xda-developers.com/showpost.php?p=12624471&postcount=2
Anyone uses it?
Global debuglog can be enabled via DebugTool.exe (available in Htc Test Applications). It depends on debuglog.dll, yeah. Read manual, it works quite well.
Then, if you want to get log for selected app, launch it via IDA.
Also we have CeLog available, I will post needed launchers soon. I can hardly call it useful as we have retail/ship SYS builds. The only useful purpose for us is page faults chart.
EDIT: CeLog attached.
Some of the builds come with the Perfman package. That s.o.b. will really slow down your device, though, and it creates a massive log file, which I could never find the tools to analyze. I think celog does it, though, which is pretty sweet.
The htc debugger works better. You just change one of the debug flags and reset, and the device starts writing the log file. It doesn't slow down the device nearly as much as perfman. I think celog may work on that log file, too. You can royally eff up your device with that tool, though, if you mess with the radio flags. It's pretty cool how it writes to flash memory. Too bad you can't change other things with it like the page pool size.
ultrashot said:
Also we have CeLog available, I will post needed launchers soon. I can hardly call it useful as we have retail/ship SYS builds. The only useful purpose for us is page faults chart.
EDIT: CeLog attached.
Click to expand...
Click to collapse
I have been playing with the tool on my Tornado and observed the following (usage related):
Use it while the device is disconnected from PC. The overhead of repllog.exe (connected to ActiveSync on XP PC) and syncing is just filling your log. For my installation (no further MS Mobile development tools on the PC) kerneltracker.exe does not connect to the device anyway.
Though obvious, the files CeLog*.exe have to run on the device, so copy them to a convenient place there.
The CeLogAttach.exe seems to start the kernel logging and it slows down the device (kind of obvious). There is no way to stop this logging. Something like CeLogDetach would be needed, if it exists, to restore the state before CeLogAttach.exe was run.
The CeLogFlush.exe will flush the existing log but also immediately start the logging again.
The CeLogStopFlush.exe does just what the name tells - it stops the flush to file of the (still ongoing) logging.
After transfering the celog.clg file (from \Release\ directory of the device) it can be opened in kerneltracker.exe. Then you see all the kernelactivities logged and aligned per process/thread on a zoom-able timeline (10ms - 10s) including the labels of the logged primitives. With event filtering you can sort out what you are not interested in. Here you may need advice on what to look after when you want to hunt down a certain device behaviour.
I have checked for page-faults, Virtual Memory related actions (Allocate, Copy, Free) and also Module actions (load, free) to get a clue if and how modules and paging (or better said: the use of the Page-Pool) is correlated. Nothing eye-striking coming up here, but it may just be for the unknowing observer like myself.
@ultrashot: I could not find anything I would call a "page faults chart" - where is that - or what is that?
Looking further: If I change certain device properties (like increase the pagepool or playing with OSB advanced options) I fear that the logged information here is just far too detailed for a useful compare. For that you would have to create identical conditions for the action under scrutiny - something that cannot be done with a disconnected device.
So I have to admit that all objective compare of such tuning and tweaking is far above my head and I just have to join the many that make more or less clever assumptions trusting on their model of actions in their heads. I hope that the better knowing heads continue to spread their wisdom without only telling RTFM or guide with LMGTFY (which can help if the results really point to right places).
tobbbie said:
@ultrashot: I could not find anything I would call a "page faults chart" - where is that - or what is that?
Click to expand...
Click to collapse
Use Event filter->Miscellaneous->Page fault.
I am not too advanced user of this tool. If we had builds with extra celog instrumentation, we could have take much more from this tool. However, there are some articles in the internets about celog, so anyone who wants to be get more info may just try to google it. I don't want
ultrashot said:
Use Event filter->Miscellaneous->Page fault.
Click to expand...
Click to collapse
That is what I did already when telling about the items I cared below. Page faults are however part of generic virtual memory management and they do also apply for any normal loaded executables. As you know I seek for traces of module related paging and the use of the page-pool.
So it will stay with the trial and error and side-by-side compare with two devices having different settings. Not a big thing doing that...
Some interesting articles on MSDN regarding the paging pool (aka "pagepool"):
Kernel Blog article explaining the fundamentals (highly recommended): http://blogs.msdn.com/b/ce_base/archive/2008/01/19/paging-and-the-windows-ce-paging-pool.aspx
Pagepool Variable explained and simple methods to measure impact: http://msdn.microsoft.com/en-us/library/aa451041.aspx
-> this is what kitchentools are patching in the kernel
Then some more backup on virtual memory - just to complete on that:
http://blogs.msdn.com/b/ce_base/archive/2006/10/30/what-is-virtual-memory.aspx
http://blogs.msdn.com/b/hegenderfer/archive/2007/08/31/slaying-the-virtual-memory-monster.aspx
http://blogs.msdn.com/b/hegenderfer...aying-the-virtual-memory-monster-part-ii.aspx
And to get back to the debug tools topic of this thread, linked form the first article an introduction to the Remote Kernel Tracker to explain what you can actually see there (and why you cannot see certain things as we have shipped ROM builds and not profiling builds to deal with): http://blogs.msdn.com/b/sloh/archive/2005/05/17/introduction-to-remote-kernel-tracker.aspx
Great insight if you want to get a glimpse of how Windows CE operates under the hood.
...reading a little deeper in the MSDN articles, Sue Loh mentions there when talking about the paging pool size determination:
The best tool I know is that readlog.exe will print you a page fault report if you turn on the “verbose” and “summary” options. If you get multiple faults on the same pages, your pool may be too small (you may also be unloading and re-loading the same module, ejecting its pages from memory, so look for module load events in the log too). If you don’t get many repeats, your pool may be bigger than you need.
Click to expand...
Click to collapse
To avoid dealing with a full setup of the Mobile Development toolsets, could any one (ultrashot - you have been so helpful - could you??) post that mentioned "readlog" tool? If there is something like "CeLogDetach.exe", please add it too.
BTW: you may notice that the paging pool is a central part of the Windows CE memory management when it comes to running executable code from "memory mapped files" (as Sue Loh calls them). In my understanding these are simply what we know as "modules".
A lot of tweaking strategies go around that when building ROMs with OSBuilder. There are several ways how to avoid or optimize the use of the paging pool for certain or all modules in OSB. I think these options deserve an own thread and I am not sure if the one OSB thread we have should be cluttered with discussing this.
don't have any of those.
Im looking for bugs with the nexus 7 (4.2 software) that can be recreated and printscreened. Ive been looking through the forum and found a few but havent found ways to recreate them on my nexus. I need to do this as part of my Uni course so any help would be appreciated! Thanks
Use the screenshots provided by the users that are experiencing bugs (with there consent of course)???
Wilks3y said:
Use the screenshots provided by the users that are experiencing bugs (with there consent of course)???
Click to expand...
Click to collapse
I could try this, but its also preferable for my grade if I try and find ways to stop them happening too.
chrisftw92 said:
Im looking for bugs with the nexus 7 (4.2 software) that can be recreated and printscreened. Ive been looking through the forum and found a few but havent found ways to recreate them on my nexus. I need to do this as part of my Uni course so any help would be appreciated! Thanks
Click to expand...
Click to collapse
Of course it's for Uni... Not some pathetic little blog trying sensationalist journalism for some adsense cash..
CrazyPeter said:
Of course it's for Uni... Not some pathetic little blog trying sensationalist journalism for some adsense cash..
Click to expand...
Click to collapse
Twas my first thought as well. No Uni project would be set up like this, especially not a real research project.
Really?
"Module CPU4000 Core Skills
OSS Assignment
Interacting with an Open Source Software Development Community
Marks from this assignment will contribute 50% of the overall mark for the module.
Aims
• to develop awareness of the process of open source software (OSS) development.
• to develop confidence and initiative in interacting with an OSS development community.
• to display skills in verbal communications.
Task 1 Start and maintain a diary or blog
Start a diary or set up a blog for the assignment and continue to post entries throughout. Keep a record of everything you do towards the assignment and every response from the community.
Task 2. Find a suitable Open Source Software Development Project
Find an active open source software application in an area that interests you.
A few examples of areas where one or more sites have already proved suitable are given below, but you should not feel restricted to these areas alone.
personal finance package currency converter
music editor / mixer music instrument tutor e.g. guitar
music synthesis media player
image manipulation and tagging video editor / standards converter
text editor web development / web browser
game (various) game development environment
flight simulator desktop publishing
integrated office package social networking
language translation blog
code development environment architectural design package
mobile device app development operating system
virus checker screen grabber / recorder
voice over IP system project management
database management system email package
Some examples of where to look for OSS development projects are:
Sourceforge
Apache Software Foundation
Mozilla Foundation
Google code
Eclipse Foundation (also via Google code)
Ohloh
Search engine (any) search for <open source> followed by keywords
describing an applications that interests you.
To determine whether the development community is active, locate the forum or reporting part of the site and check the dates of recent postings and responses. Also check the analysis and metrics for the project at
If the application is clearly inactive, make a note of what you have found, but then STOP and look for something else. It is quite normal to find that your first choice of site is inactive, so don't leave it too long before you reach that conclusion and move on. If you post a question and nobody has replied after a few days, it’s time to move on.
Task 3. Do something to interact with the community
Here are a few examples:
• Work through a tutorial or some other documentation. Find something that is unclear, confusing, or is out of date, and write an amendment. Submit your improved version.
• Become familiar with the application. Then pick a question that has been posted on a forum, investigate the issue raised and post a comment either answering the query satisfactorily, or contributing in some way that will help others work towards a solution.
• Investigate an existing bug report and try to duplicate the circumstances that gave rise to the problem. Then make a change to something and see if the bug is repeatable. Try to narrow down the circumstances when the bug will / will not appear. Report your findings to the development community.
(This is known as 'reducing' a bug. For an explanation and an example of a list of known bugs in a project, see: )
• Download some software or some small element (e.g. a library function) and get it working properly. Devise some tests and write up the results. If the software doesn't perform exactly as described in the documentation, take action as appropriate: if you are unsure, post a question on a forum, but check for previous reports first. If you are quite sure, submit a bug report describing the circumstances, or amend the documentation and submit the revised version to the community. Follow up the response.
• Specify improvements or suggest one or more new features that you would like added to the software.
There are many possibilities and so you should not be limited by these suggestions. What is important is that you interact in a constructive manner with an OSS development community.
Task 4. Make a presentation
Make a short presentation to the class, describing what you have done and the nature of the interaction that took place. The presentation should last about 5 minutes, after which you should invite questions.
Describe what you have done and the nature of the interaction that took place. Include evidence of your contribution, either by linking to the website where your work is apparent, or by screen shots.
Explain the choice of package and the evidence that convinced you the community is active. If you started to investigate a project that subsequently proved to be unsuitable, briefly mention the details and the reason why you abandoned it.
Date of Presentations: Week commencing Monday 3rd December
The presentation may be recorded to show the External Examiner.
Marking Scheme
Nature and depth of the interaction 50%
Presentation 50%
Grade A: Substantial and serious interaction described in an exemplary presentation
Grade B: As above, but less of an interaction, or with some deficiencies in presentation
Grade C: As grade A, but the interaction was minor or there were some serious deficiencies in the presentation.
Grade D: Trivial interaction and/or serious deficiencies in the presentation.
Grade E or F: No interaction and/or very poor presentation.
Any Questions?
If in doubt, don’t struggle. Come and see me in room C2-7a. Roy Attwood
File: Core-Skills-OSS-assignment-Sept12.doc
Updated 16 Oct 2012 RA
"
For a blog ey?
chrisftw92 said:
"Module CPU4000 Core Skills
For a blog ey?
Click to expand...
Click to collapse
Haha - Robyr and CrazyPeter just got owned. :laugh::good:
We don't already have enough of these 4.2 bashing threads, now we have to help you with your homework?
closing this as if you want help with your homework you should be able to search and find the bugs and fins ss to use as well...OR pm users that report said bugs and ask for ss's maybe...